Джоэл МакКормак

редактировать

Джоэл МакКормак является разработчиком NCR Corporation версии p- кодовая машина, которая является своего рода стековой машиной, популярной в 1970-х годах как предпочтительный способ реализации новых вычислительных архитектур и языков, таких как Pascal и BCPL <58.>. Дизайн NCR не имеет общей архитектуры с Pascal MicroEngine, разработанным Western Digital, но оба предназначены для выполнения UCSD p-System. [1,2]

Содержание
  • 1 Теория P-машины
  • 2 Дизайн P-машины
  • 3 Архитектура P-машины
  • 4 Производительность P-машины
  • 5 Образование
  • 6 Дальнейшее трудоустройство
  • 7 Публикации
  • 8 См. Также
  • 9 Ссылки
Теория П-машины

Урс Амманн, ученик Никлауса Вирта, первоначально представил p-код в его докторской диссертации (см. Урс Амманн, О генерации кода в компиляторе Паскаля, Программное обеспечение - Практика и опыт, Том 7, № 3, 1977, стр. 391–423). Основная идея заключается в том, что сложная программная система кодируется для несуществующего, вымышленного, минимального компьютера или виртуальной машины, и этот компьютер реализован на конкретном реальном оборудовании с интерпретирующей компьютерной программой, которая обычно является небольшой и простой., и быстро развивался. Язык программирования Паскаль приходилось переписывать для каждого нового приобретаемого компьютера, поэтому Амманн предложил один раз написать систему для виртуальной архитектуры. Успешной академической реализацией Pascal стала p-System UCSD, разработанная Кеннетом Боулзом, профессором UCSD, который начал проект разработки универсальной Среда программирования Pascal, использующая архитектуру P-machine для множества различных вычислительных платформ, используемых в то время. Маккормак был частью команды студентов, работавших над проектом. [3] Он взял это знание и опыт с собой в NCR.

P-machine Design

В 1979 году МакКормак был принят на работу в NCR сразу после окончания колледжа, и они разработали Bit spling реализация машины p-кода с использованием набора микросхем Am2900. У этого CPU было множество проблем с синхронизацией и производительностью, поэтому МакКормак предложил полностью модернизировать процессор, используя программируемое логическое устройство на основе Microsequencer. Маккормак покинул NCR, чтобы основать компанию Volition Systems, но продолжил работу над ЦП в качестве подрядчика. В новом процессоре использовался микроворд шириной 80 бит, поэтому параллелизм в микрокоде был радикально улучшен. В микрокоде было несколько циклов, состоящих из одной инструкции, и многие из более простых операций p-кода занимали 1 или 2 инструкции микрокода. Благодаря широкому микрослову и тщательному расположению шин, а также увеличению регистров адресов памяти, ЦП мог выполнять операции внутри ALU, передавая слово памяти непосредственно во встроенный стек, или подавать один источник в ALU при отправке ранее вычисленный регистр на шину назначения за один микроцикл.

ЦП работал на трех разных тактовых частотах (с использованием линий задержки для выбираемых часов); два бита в микростроке выбирают время цикла для этой инструкции. Часы около 130, 150 и 175 наносекунд. Новые компоненты от AMD могли бы позволить более быстрый цикл 98 нс для самых быстрых инструкций, но они не вышли с соответственно более быстрым блоком управления переходами.

Был отдельный блок упреждающей выборки / форматирования инструкций (опять же, с использованием останавливаемых часов линии задержки для синхронизации... асинхронная логика допускает перекос таймингов). Он имел 32-битный буфер и мог доставлять следующие данные в виде байта со знаком, байта без знака, 16-битного слова или «большого» операнда (одно- или двухбайтовый формат, где 0..127 были закодированы как один байт, а 128..32767 было закодировано как два байта).

На плате был стек из 1024 16-битных слов, так что в нем можно было работать как со скалярами, так и с наборами. Верхняя часть стека фактически хранилась в одном из регистров AMD 2901, так что простые операции, такие как сложение целых чисел, занимали один цикл. раньше мы украли метод хранения верхнего слова стека в одном из регистров AMD 2901. Часто это приводило к уменьшению на одну микрокоманду. (Стек работает не совсем так... он уменьшается до того, как в него записываются данные, и увеличивается после чтения.)

Поскольку управление следующим адресом и следующее расположение микрокода находились в каждом широком микроворде, не было штрафа за выполнение микрокода в любом порядке. Таким образом, у нас была таблица из 256 меток, и компилятор микрокода переместил первую инструкцию на каждой из этих меток в первые 256 ячеек памяти микрокода. Единственное ограничение, наложенное на микрокод, заключалось в том, что если для p-кода требуется более одной микрокоманды, то для первой микрокоманды не может быть задано какое-либо управление потоком (так как она будет заполнена с помощью "goto ).

P-machine архитектура

ЦП использовал технику хранения верхнего слова стека в одном из регистров AMD 2901. Это часто приводило к на одну микрокоманду меньше. Например, вот несколько p-кодов, как они заканчиваются up.tos - это регистр, а q - регистр. "|" означает параллельные действия в одном цикле. (Стек не совсем так работает... он уменьшается до того, как данные будут записаны в него, и увеличивается после данных считывается.)

Так как управление следующим адресом и следующее расположение микрокода находились в каждом широком микрорде, не было штрафа за выполнение микрокода в любом порядке. Таблица из 256 меток, и компилятор микрокода переместил первая инструкция на каждой из этих меток к первым 256 ячейкам памяти микрокода. Ограничение, наложенное на микрокод, заключалось в том, что если p-код требовал более одной микрокоманды, то для первой микрокоманды не могло быть задано какое-либо управление потоком (поскольку оно было бы заполнено с помощью «goto »).

получить% Fetch и сохранить в регистре AMD код операции следующего байта из% блока предварительной выборки и перейти к этому месту в микрокоде. q: = ubyte | goto ubyte SLDCI% Короткая константа загрузки, целое число (проталкивание байта кода операции)% Перемещение регистра AMD вершины стека в реальный стек, загрузка% регистра вершины стека с выбранным кодом операции, который привел нас сюда dec (sp) | стек: = tos | tos: = q | goto fetch LDCI% Загрузить целое число константы (слово кода операции push)% Во многом похоже на SLDCI, за исключением выборки 2-байтового слова и «push» в стек dec (sp) | стек: = tos | tos: = слово | goto fetch SLDL1% Локальная переменная короткой загрузки со смещением 1% mpd0 - это указатель на локальные данные со смещением 0. Записать соответствующий адрес% данных в адресный регистр памяти с байтовым адресом mar: = mpd0 + 2% Push tos, load new tos из памяти SLDX dec (sp) | стек: = tos | tos: = memword | goto fetch LDL% Загрузить локальную переменную со смещением, указанным операндом "big" r0: = big mar: = mpd0 + r0 | goto sldx INCR% Увеличивает верхнюю часть стека на большой операнд tos: = tos + big | goto fetch ADI% Добавить два слова поверх стека tos: = tos + stack | inc (sp) | goto fetch EQUI% Два первых слова в стеке равны? тестовые пакеты - стек | inc (sp) tos: = 0 | if ~ zero goto fetch tos: = 1 | goto fetch

Эту архитектуру следует сравнить с исходной спецификацией машины P-кода, предложенной Никлаусом Виртом.

Производительность P-машины

Конечным результатом был 9 "x11" для процессора, который работал UCSD p-System быстрее, чем что-либо еще, с большим отрывом. В 35-50 раз быстрее, чем интерпретатор LSI-11, и в 7-9 раз быстрее, чем у Western Digital Pascal MicroEngine при замене микрокода LSI-11 на p- код микрокода. Он также работал быстрее, чем машина Niklaus Wirth Lilith, но не обладал возможностями растровой графики и примерно такой же скоростью, как и VAX-11/750. собственный код. (Но VAX помешал плохой код, исходящий из компилятора Berkeley Pascal, а также был 32-битной машиной.)

Образование
Более позднее место работы
Publications
  • Джоэл МакКормак, Роберт Макнамара. Эффективное и мозаичное прохождение многоугольника с использованием функций полуплоскостных краев, чтобы появиться в отчете об исследованиях 2000/4, Западная исследовательская лаборатория Compaq, август 2000 года.. Обход мозаичного многоугольника с использованием функций полуплоскостных краев, Труды семинара EUROGRAPHICS / SIGGRAPH 2000 года по графическому оборудованию, ACM Press, Нью-Йорк, август 2000 г., стр. 15–21.
  • Роберт Макнамара, Джоэл Маккормак, Норман П. Джуппи. Предварительно отфильтрованные сглаженные линии с использованием полуплоскостных функций расстояния, Отчет об исследовании 98/2, Западная исследовательская лаборатория Compaq, август 2000 г. [Расширенный набор материалов семинара приведен непосредственно ниже.]
  • Роберт Макнамара, Джоэл МакКормак, Норман П. Джуппи. Предварительно отфильтрованные сглаженные линии с использованием полуплоскостных функций расстояния, Proceedings of the 2000 EUROGRAPHICS / SIGGRAPH Workshop on Graphics Hardware, ACM Press, New York, август 2000, стр. 77–85.
  • Джоэл МакКормак, Кейт И. Фаркас, Рональд Перри, Норман П. Джуппи. Simple and Table Feline: Fast Elliptical Lines for Anisotropic Texture Mapping, Research Report 99/1, Compaq Western Research Laboratory, октябрь 1999 г. [Расширенный набор документов SIGGRAPH, перечисленных непосредственно ниже.]
  • Джоэл МакКормак, Рональд Перри, Кейт И. Фаркас, Норман П. Джуппи. Feline: Fast Elliptical Lines for Anisotropic Texture Mapping, SIGGRAPH 99 Conference Proceedings, ACM Press, New York, август 1999, стр. 243–250.
  • Джоэл МакКормак, Роберт Макнамара, Кристофер Джанос, Ларри Сейлер, Норман П. Джуппи, Кен Коррелл, Тодд Даттон, Джон Зуравски. Neon: A (Big) (Fast) Single-Chip 3D Workstation Graphics Accelerator, Отчет об исследовании 98/1, Западная исследовательская лаборатория Compaq, пересмотренный в июле 1999 г. [Расширенный набор документов Workshop и IEEE Neon, перечисленных непосредственно ниже.]
  • Джоэл МакКормак, Роберт Макнамара, Кристофер Джанос, Ларри Сейлер, Норман П. Джуппи, Кен Коррелл, Тодд Даттон, Джон Зуравски. Реализация Neon: 256-битный графический ускоритель, IEEE Micro, Vol. 19, No. 2, март / апрель 1999 г., стр. 58–69.
  • Джоэл МакКормак, Роберт Макнамара, Кристофер Джанос, Ларри Сейлер, Норман П. Джуппи, Кен Коррелл. Neon: Однокристальный графический ускоритель для рабочих станций 3D, Труды семинара EUROGRAPHICS / SIGGRAPH 1998 г. по графическому оборудованию, ACM Press, Нью-Йорк, август 1998 г., стр. 123–132. [Признан лучшим докладом / презентацией.]
  • Джоэл МакКормак, Роберт Макнамара. A Smart Frame Buffer, Отчет об исследовании 93/1, Корпорация цифрового оборудования, Западная исследовательская лаборатория, январь 1993 г. [Расширенный набор документов USENIX, перечисленных непосредственно ниже.]
  • Джоэл МакКормак, Роберт Макнамара. Набросок интеллектуального буфера кадра, Материалы зимней конференции USENIX 1993 г., Ассоциация USENIX, Беркли, январь 1993 г., стр. 169–179.
  • Джоэл МакКормак. Написание серверов Fast X для немых цветных буферов кадров, Отчет об исследовании 91/1, Digital Equipment Corporation, Western Research Laboratory, февраль 1991 г. [Расширенный набор программного обеспечения: документ о практике и опыте, перечисленный непосредственно ниже.]
  • Джоэл МакКормак.. Написание серверов Fast X для буферов немой цветовой рамки, Программное обеспечение - Практика и опыт, Том 20 (S2), John Wiley Sons, Ltd., Западный Суссекс, Англия, октябрь 1990 г., стр. 83–108. [Переведено и перепечатано в японском издании журнала UNIX Magazine, ASCII Corp., октябрь 1991 г., стр. 76–96.]
  • Хания Гаевска, Марк С. Манассе, Джоэл МакКормак. Почему X не является нашей идеальной оконной системой, Программное обеспечение - Практика и опыт, Том 20 (S2), John Wiley Sons, Ltd., Западный Суссекс, Англия, октябрь 1990 г., стр. 137–171.
  • Пол Дж. Асенте и Ральф Р. Суик с Джоэлом МакКормаком. X Window System Toolkit: Полное руководство и спецификация программиста, X версия 11, выпуск 4, Digital Press, Мейнард, Массачусетс, 1990.
  • Джоэл МакКормак, Пол Асенте. Обзор X Toolkit, Материалы симпозиума ACM SIGGRAPH по программному обеспечению пользовательского интерфейса, ACM Press, Нью-Йорк, октябрь 1988 г., стр. 46–55.
  • Джоэл Маккормак, Пол Асенте. Использование X Toolkit, или Как написать виджет. Материалы летней конференции USENIX 1988 г., Ассоциация USENIX, Беркли, июнь 1988 г., стр. 1–14.
  • Джоэл МакКормак. Правильный язык для работы. UNIX Review, REVIEW Publications Co., Рентон, Вашингтон, Vol. 3, No. 9, сентябрь 1985 г., стр. 22–32.
  • Джоэл МакКормак, Ричард Гливз. Modula-2: достойный преемник Паскаля, BYTE, Byte Publications, Питерборо, Нью-Гэмпшир, Vol. 8, No. 4, April 1983, pp. 385–395.
См. Также
Ссылки
  1. Пользователи Pascal ' Архив информационных бюллетеней группы
  2. Музей P-системы UCSD
  3. Веб-сайт UCSD Pascal Reunion
Последняя правка сделана 2021-05-24 11:25:18
Содержание доступно по лицензии CC BY-SA 3.0 (если не указано иное).
Обратная связь: support@alphapedia.ru
Соглашение
О проекте