Jump to content

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

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

Теория P-машин

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

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

P-дизайн машины

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

НКР наняла МакКормака сразу после окончания колледжа.Ранее они разработали побитовую аппаратную реализацию машины p-кода с использованием набора микросхем AMD AM2900 .Машину преследовало множество проблем с синхронизацией и производительностью;Маккормак предложил модернизировать процессор, который будет иметь микросеквенсор, основанный на программируемой логике .Когда Маккормак покинул NCR, чтобы основать Volition Systems, он продолжил работу над процессором в качестве подрядчика.

В этом новом процессоре использовался горизонтальный микрокод.что радикально усилило параллелизм внутри микроархитектуры.Эти широкие 80-битные микрослова позволяли ЦП выполнять множество операций за один микроцикл:процессор мог выполнять арифметическую операцию, одновременно выполняя чтение памяти во внутренний стек,или передать содержимое регистра, одновременно считывая новые данные в АЛУ.В результате многие из более простых операций с p-кодом требовали всего одной или двух микроинструкций;некоторые операции были построены с использованием тесных циклов из одного микрослова.

Два бита на такт выбирают одно из четырех времен цикла для каждой инструкции:130, 150 или 175 наносекунд, которые генерируются с помощью линии задержки. Более быстрые детали от AMD также позволяли бы обеспечить время цикла 98 нс, но соответственно более быстрого блока управления ветвями не было. Отдельный блок предварительной выборки/форматирования инструкций также использовал линии задержки для генерации асинхронных сигналов синхронизации. Это устройство имело 32-битный буфер и могло декодировать следующие данные в нескольких форматах: знаковый байт; беззнаковый байт; слово; и сжатый «большой» формат, в котором небольшие числа 0..127 кодировались в одном байте, а большие числа в пределах 128..32767 — в двух.

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

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

P-машинная архитектура

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

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

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

fetch	% Fetch and save in an AMD register the next byte opcode from	% the prefetch unit, and go to that location in the microcode.	q := ubyte | goto ubyteSLDCI	% Short load constant integer (push opcode byte)	% Push top-of-stack AMD register onto real stack, load	% the top-of-stack register with the fetched opcode that got us here	dec(sp) | stack := tos | tos := q | goto fetchLDCI	% Load constant integer (push opcode word)	% A lot like SLDCI, except fetch 2-byte word and "push" on stack	dec(sp) | stack := tos | tos := word | goto fetchSLDL1	% Short load local variable at offset 1	% mpd0 is a pointer to local data at offset 0.  Write appropriate	% data address into the byte-addressed memory-address-register	mar := mpd0+2	% Push tos, load new tos from memorySLDX	dec(sp) | stack := tos | tos := memword | goto fetchLDL	% Load local variable at offset specified by "big" operand	r0 := big	mar := mpd0 + r0 | goto sldxINCR	% Increment top-of-stack by big operand	tos := tos + big | goto fetchADI	% Add two words on top of stack	tos := tos + stack | inc(sp) | goto fetchEQUI	% Top two words of stack equal?	test tos - stack | inc(sp)	tos := 0 | if ~zero goto fetch	tos := 1 | goto fetch

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

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

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

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

Образование

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

Позднее трудоустройство

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

Публикации

[ редактировать ]
  • Джоэл МакКормак, Роберт Макнамара. Эффективный и мозаичный обход многоугольников с использованием функций ребер полуплоскости, появится в отчете об исследовании 2000/4, Западная исследовательская лаборатория Compaq, август 2000 г. [Дополнительный набор документов семинара, указанный непосредственно ниже.]
  • Джоэл МакКормак, Роберт Макнамара. Обход мозаичного многоугольника с использованием функций ребра полуплоскости, Материалы семинара EUROGRAPHICS/SIGGRAPH 2000 г. по графическому оборудованию, ACM Press, Нью-Йорк, август 2000 г., стр. 15–21.
  • Роберт Макнамара, Джоэл МакКормак, Норман П. Джуппи. Предварительно отфильтрованные сглаженные линии с использованием функций расстояния в полуплоскости, Отчет об исследовании 98/2, Западная исследовательская лаборатория Compaq, август 2000 г. [Набор документов семинара, перечисленных ниже.]
  • Роберт Макнамара, Джоэл МакКормак, Норман П. Джуппи . Предварительно отфильтрованные сглаженные линии с использованием функций расстояния в полуплоскости, Материалы семинара EUROGRAPHICS/SIGGRAPH 2000 г. по графическому оборудованию, ACM Press, Нью-Йорк, август 2000 г., стр. 77–85.
  • Джоэл МакКормак, Кейт И. Фаркас, Рональд Перри, Норман П. Джуппи. Simple and Table Feline: быстрые эллиптические линии для отображения анизотропных текстур, отчет об исследованиях 99/1, Западная исследовательская лаборатория Compaq, октябрь 1999 г. [Набор статей SIGGRAPH, перечисленных ниже.]
  • Джоэл МакКормак, Рональд Перри, Кит И. Фаркас, Норман П. Джуппи. Кошачьи: быстрые эллиптические линии для отображения анизотропных текстур, Материалы конференции SIGGRAPH 99, ACM Press, Нью-Йорк, август 1999 г., стр. 243–250.
  • Джоэл МакКормак, Роберт Макнамара, Кристофер Джанос, Ларри Сейлер, Норман П. Джуппи, Кен Коррелл, Тодд Даттон, Джон Журавски. Neon: (Большой) (Быстрый) однокристальный ускоритель 3D-графики для рабочих станций, Отчет об исследовании 98/1, Западная исследовательская лаборатория Compaq, исправлено в июле 1999 г. [Набор документов Workshop и IEEE Neon, перечисленных ниже.]
  • Джоэл МакКормак, Роберт Макнамара, Кристофер Джанос, Ларри Сейлер, Норман П. Джуппи, Кен Коррелл, Тодд Даттон, Джон Журавски. Реализация Neon: 256-битный графический ускоритель, IEEE Micro, Vol. 19, № 2, март/апрель 1999 г., стр. 58–69.
  • Джоэл МакКормак, Роберт Макнамара, Кристофер Джанос, Ларри Сейлер, Норман П. Джуппи, Кен Коррелл. Neon: однокристальный графический ускоритель для 3D-рабочих станций, Материалы семинара EUROGRAPHICS/SIGGRAPH по графическому оборудованию 1998 г., ACM Press, Нью-Йорк, август 1998 г., стр. 123–132. [Признан лучшим документом/презентацией.]
  • Джоэл МакКормак, Роберт Макнамара. Интеллектуальный буфер кадров, отчет об исследованиях 93/1, Digital Equipment Corporation, Западная исследовательская лаборатория, январь 1993 г. [Набор статей USENIX, перечисленных ниже.]
  • Джоэл МакКормак, Роберт Макнамара. Набросок интеллектуального буфера кадров, Материалы зимней конференции USENIX 1993 г., Ассоциация USENIX, Беркли, январь 1993 г., стр. 169–179.
  • Джоэл МакКормак. Написание быстрых X-серверов для «немых» буферов цветовых кадров, отчет об исследовании 91/1, Digital Equipment Corporation, Западная исследовательская лаборатория, февраль 1991 г. [Документ о расширенном программном обеспечении: практика и опыт указан ниже.]
  • Джоэл МакКормак. Написание быстрых 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: Полное руководство и спецификации программиста, 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 Publications Co., Рентон, Вашингтон, Vol. 3, № 9, сентябрь 1985 г., стр. 22–32.
  • Джоэл МакКормак, Ричард Гливс. Модуль-2: достойный преемник Паскаля, BYTE, Byte Publications, Питерборо, Нью-Гэмпшир, Vol. 8, № 4, апрель 1983 г., стр. 385–395.

См. также

[ редактировать ]
  1. Архив новостей группы пользователей Pascal
  2. Музей P-системы UCSD
  3. Веб-сайт UCSD Pascal Reunion
Arc.Ask3.Ru: конец переведенного документа.
Arc.Ask3.Ru
Номер скриншота №: c2c85b035a9d451931bca740958ec116__1710979140
URL1:https://arc.ask3.ru/arc/aa/c2/16/c2c85b035a9d451931bca740958ec116.html
Заголовок, (Title) документа по адресу, URL1:
Joel McCormack - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть. Любые претензии, иски не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, вы не можете использовать данный сайт и информация размещенную на нем (сайте/странице), немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, Денежную единицу (имеющую самостоятельную стоимость) можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)