Введение
32-битный микропроцессор NS32000, иногда известный как 32k, – это серия микропроцессоров, выпускаемых компанией National Semiconductor. Первый представитель семейства поступил в продажу в 1982 году, первоначально под названием 16032, а затем ставший 32016. Он был первым микропроцессором общего назначения на рынке, использующим 32-битные данные: Motorola 68000 использовал 32-битные данные, но имел 16-битное АЛУ и, следовательно, требовал вдвое больше времени для выполнения многих операций. VAX хорошо известен своей высоко "ортогональной" архитектурой набора инструкций (ISA), в которой любая инструкция может быть применена к любым данным. Например, инструкция ADD может складывать содержимое двух регистров процессора, один регистр с величиной в памяти, две величины в памяти или использовать регистр в качестве смещения относительно адреса. Такая гибкость считалась эталоном проектирования в эпоху компьютеров со сложным набором команд (CISC). В то же время National Semiconductor объявила о двух будущих версиях – NS32032 и NS32132. Первая по сути являлась версией NS16032 с 32-битной внешней шиной данных, позволяющей считывать данные в два раза быстрее. Выпуск планировался на 1984 год. NS32132 представлял собой версию с 29-битными внутренними адресами и 32-битной внешней шиной, что позволяло адресовать полный объем памяти в 4 ГБ. Выпуск был запланирован на 1985 год. Хотя выпуск в 1982 году наступил примерно на два года позже, чем у 68k, 68k еще не получил широкого распространения на рынке, и 32016 вызвал значительный интерес. К сожалению, ранние версии содержали множество ошибок и редко могли работать на заявленной скорости. К 1984 году, спустя два года, список ошибок (errata) все еще содержал пункты, описывающие неконтролируемые условия, приводящие к остановке процессора и необходимости его перезагрузки. Изначальный план разработки предусматривал выпуск моделей с частотой 6 и 10 МГц в 1983 году и 12 и 14 МГц в 1984 году. Однако в 1984 году в прессе появились сообщения о трудностях с соблюдением этого плана, сообщалось, что для увеличения частоты моделей с 6 МГц до 8 МГц потребовалось пять месяцев, а представители компании оценивали еще "два, три или пять месяцев" для увеличения частоты до 10 МГц. Причиной этих проблем, по сообщениям, являлись два неуказанных чипа из пяти в наборе микросхем (chipset). В статье начала 1985 года о рабочей станции Whitechapel MG 1, основанной на 32016, отмечалось, что блок управления памятью 32081 "страдал от ошибок" и был расположен на отдельной плате, обеспечивая аппаратные исправления. В 1986 году Texas Instruments объявила о выпуске "полностью квалифицированного набора микросхем TI32000 с 32-битным микропроцессором частотой 10 МГц", состоящего из центрального процессора TI32016 и блока управления памятью TI32082 в виде 48-выводных устройств, блока управления временем TI32201 и блока операций с плавающей точкой TI32081 в виде 24-выводных устройств, а также блока управления прерываниями TI32202 в виде 40-выводного устройства, при этом набор из пяти микросхем предлагался по цене 289 долларов за 100 единиц. National изменила свою методологию проектирования, чтобы упростить запуск детали в производство, и совместно с Тель-Авивским университетом разработала систему проектирования на языке "Z", расположенном недалеко от конструкторского центра "NSC" в Герцлии, Израиль. Язык "Z" похож на современные Verilog и VHDL, но имеет синтаксис, близкий к Pascal, и оптимизирован для двухфазной тактовой схемы. Однако к тому времени, когда результаты этих усилий стали ощутимы в проектировании, на рынке уже появилось множество машин на базе 68k, в частности Apple Macintosh, и 32016 так и не получил широкого распространения. 32016 имеет 16-битную внешнюю шину данных, 24-битную внешнюю адресную шину и полный 32-битный набор инструкций. Он также включает в себя интерфейс сопроцессора, позволяющий подключать сопроцессоры, такие как FPU и MMU, в качестве равноправных компонентов к основному процессору. MMU основана на виртуальной памяти с подкачкой, что является наиболее необычной особенностью по сравнению с сегментированным подходом к памяти, используемым конкурентами, и стало стандартом для разработки микропроцессоров в настоящее время. Архитектура поддерживает механизм перезапуска инструкции при ошибке страницы, что намного надежнее подхода Motorola к сбросу внутреннего состояния при ошибке страницы, который необходимо повторно считать перед продолжением выполнения инструкции. Хотя 32016 часто сравнивали с набором инструкций 68k, сотрудники NSC отвергали это сравнение; одной из ключевых маркетинговых фраз того времени было "Элегантность – это все", подчеркивая высокую ортогональность серии 32000 по сравнению с "кустарным" решением. Одно из ключевых отличий заключается в использовании Motorola адресных и регистров данных, с инструкциями, работающими только с одним из этих типов регистров. Серия 32000 имеет универсальные регистры, описываемые в технической документации как регистры "адрес-данные".
The NS32000, sometimes known as the 32k, is a series of microprocessors produced by National Semiconductor. The first member of the family came to market in 1982, briefly known as the 16032 before becoming the 32016. It was the first general purpose microprocessor on the market that used 32 bit data throughout: the Motorola 68000 used 32 bit data but had a 16 bit ALU and thus took twice as long perform many operations. The VAX is well known for its highly "orthogonal" instruction set architecture (ISA), in which any instruction can be applied to any data. For instance, an ADD instruction might add the contents of two processor registers, or one register against a value in memory, two values in memory, or use the register as an offset against an address. This flexibility was considered the paragon of design in the era of complex instruction set computers (CISC). At the same time, National Semiconductor also announced two future versions, the NS32032 and NS32132. The former was essentially a version of the NS16032 with a 32 bit external data bus, allowing it to read data at twice the rate. This was project to be released in 1984. The NS32132 was a version with a 29 bit internal addresses and 32 bit external, allowing it to address a complete 4 GB of memory. It was to be released in 1985. Although a 1982 introduction post dates the 68k by about two years, the 68k was not yet being widely used in the market and the 32016 generated significant interest. Unfortunately, the early versions were filled with bugs and could rarely be run at their rated speed. By 1984, after two years, the errata list still contained items specifying uncontrollable conditions that would result in the processor coming to a halt, forcing a reset. The original product roadmap envisaged 6 MHz and 10 MHz parts during 1983 and 12 MHz and 14 MHz parts during 1984. However, press reports in 1984 indicated difficulties in keeping to this roadmap, with it reportedly having taken five months to increase the frequency of the parts from 6 MHz to 8 MHz, and with representatives estimating a further "two, three or five months" to increase the frequency to 10 MHz. Two unspecified chips of the five in the chipset were reported to be the cause of these problems. An early 1985 article about the 32016 based Whitechapel MG 1 workstation noted that the 32081 memory management unit was "suffering from bugs" and had been situated on its own board providing hardware fixes. In 1986, Texas Instruments announced a "fully qualified 10 MHz TI32000 32 bit microprocessor chip set" consisting of the TI32016 CPU and TI32082 memory management unit as 48 pin devices, the TI32201 timing control unit and TI32081 floating point unit as 24 pin devices, and the TI32202 interrupt control unit as a 40 pin device, with the five device chipset "priced at $289 in 100 unit quantities". National changed its design methodology to make it possible to get the part into production and a design system based on the language "Z" was co developed with the University of Tel Aviv, close to the "NSC" design centre in Herzliya, Israel. The "Z" language is similar to today's Verilog and VHDL, but has a Pascal like syntax and is optimized for two phase clock designs. However, by the times the fruit of these efforts were being felt in the design, numerous 68k machines were already on the market, notably the Apple Macintosh, and the 32016 never saw widespread use. The 32016 has a 16 bit external data bus, a 24 bit external address bus, and a full 32 bit instruction set. It also includes a coprocessor interface, allowing coprocessors such as FPUs and MMUs to be attached as peers to the main processor. The MMU is based on demand paging Virtual Memory, which is the most unusual feature compared to the segmented memory approach used by the competition, and has become the standard for how microprocessors are designed today. The architecture supports an instruction restart mechanism on a page fault, which is much cleaner than the Motorola approach to dump the internal status on a page fault, which has to be read back, before the instruction is continued. While often compared to the 68k's instruction set, this was rejected by NSC employees; one of the key marketing phrases of the time was "Elegance is Everything", comparing the highly orthogonal Series 32000 to the "kludge". One key difference is Motorola's use of address registers and data registers, with instructions only working on either address or data registers. The Series 32000 has general purpose registers, described as "address data" registers in technical documentation.
32032 - - - - - -
32032 был представлен в 1984 году. Он практически полностью совместим с 32016, но отличается 32-битной шиной данных (при сохранении 24-битной шины адреса) для несколько более высокой производительности, которую описывали как "производительность миникомпьютера", сопоставимую с производительностью системы VAX 11. Существовала также модель 32008 – это 32016 с урезанной до 8 бит шиной данных, предназначенная для недорогих приложений. По своей философии она схожа с MC68008 и столь же малопопулярна. National также выпустила ряд сопутствующих микросхем поддержки, таких как блок вычислений с плавающей точкой NS32081 (FPU), блоки управления памятью NS32082 (MMU), блок прямого доступа к памяти NS32203 (DMA) и контроллеры прерываний NS32202. С полным комплектом, а также микросхемами памяти и периферийными устройствами, стало возможным создать 32-битную компьютерную систему, способную поддерживать современные многозадачные операционные системы, что ранее было возможно только на дорогостоящих миникомпьютерах и мэйнфреймах.
32332, 32532
В 1985 году National Semi представила NS32332, значительно улучшенную версию 32032. Согласно техническому описанию, улучшения включали в себя "добавление нового специализированного аппаратного обеспечения для адресации (состоящего из высокоскоростного АЛУ, сдвигающего регистра и регистра адреса), высокоэффективную увеличенную (20 байт) очередь предварительной выборки инструкций, новый интерфейс/протокол системной/шины памяти, повышение эффективности протокола подчиненного процессора и, наконец, улучшения микрокода". Также были представлены новые MMU NS32382, FPU NS32381 и (очень редкий) интерфейс NS32310 к Weitek FPA. Совокупный прирост производительности NS32332 от этих улучшений составил всего 50% по сравнению с оригинальным NS32032, и, следовательно, был меньше, чем у основного конкурента – MC68020. National Semi представила NS32532 в начале 1987 года. Работающий на частотах 20, 25 и 30 МГц, он представлял собой полную переработку внутренней реализации с пятиступенчатым конвейером, интегрированным кешем/MMU и улучшенной производительностью памяти, что делало его примерно в два раза производительнее конкурирующих MC68030 и i80386. К этому моменту архитектуры RISC начали завоевывать позиции, а основными конкурентами стали теперь также устаревшие AM29000 и MC88000, которые считались быстрее, чем NS32532. Для операций с плавающей точкой NS32532 использовал существующий интерфейс NS32381 или NS32580 к Weitek FPA. NS32532 стал основой для PC532, аппаратного проекта с открытым исходным кодом, и одного из немногих, который позволил создать работоспособную машину с реальной операционной системой (в данном случае, Minix или NetBSD). Полумифический NS32732 (иногда называемый NS32764), задуманный как высокопроизводительный преемник NS32532, так и не поступил в продажу.
Мечевая рыбка
Производная NS32732 под названием Swordfish была ориентирована на встраиваемые системы и появилась примерно в 1990 году. Swordfish имеет встроенный блок вычислений с плавающей точкой, таймеры, контроллеры DMA и другие периферийные устройства, которые обычно не встречаются в микропроцессорах. Он оснащен 64-битной шиной данных и внутренне разогнан с 25 до 50 МГц. Главным архитектором Swordfish был Дональд Альперт, который впоследствии возглавил архитектурную команду, разрабатывавшую Pentium. Внутренняя микроархитектура Pentium во многом схожа с предшествующей Swordfish. Swordfish был разработан для высокопроизводительных Postscript-лазерных принтеров, и в то время демонстрировал исключительную производительность. Конкурирующие решения могли обрабатывать около одной страницы в минуту, в то время как демонстрационный образец Swordfish печатал шестнадцать страниц в минуту, ограничиваясь лишь механикой лазерного двигателя. На каждой странице он отображал время простоя, пока двигатель завершал работу. Сам чип Swordfish был очень большим, и в конечном итоге было решено прекратить проект, и продукт так и не был запущен в серийное производство. Опыт, полученный при разработке Swordfish, был использован при создании CompactRISC. Первоначально существовали CompactRISC 32 и CompactRISC 16, разработанные с использованием "Z". National так и не выпустила на рынок чип с ядром CompactRISC 32. Исследовательский отдел National совместно с Мичиганским университетом разработал первую синтезируемую модель на Verilog, и Verilog использовался начиная с CR16C и далее.
Наследие
В июне 2015 года Удо Мёллер опубликовал полную реализацию процессора NS32000 на Verilog на платформе OpenCores. Полностью программно совместимый с процессором NS32532, оснащенным блоком FPU N32381, он значительно быстрее при реализации на FPGA, достигая более высокой тактовой частоты и требуя меньшего количества циклов на инструкцию.