[Перевод] Внутренности HP Nanoprocessor: высокоскоростной процессор, не умеющий складывать
Комбинированные фотошбалоны Nanoprocessor. GLB слева от шины данных — инициалы разработчиков Джорджа Лэтема и Ларри Бауэра.
HP Nanoprocessor — почти забытый процессор, разработанный компанией Hewlett-Packard in 1974 году (подробнее — по ссылкам «The Forgotten Ones: HP Nanoprocessor», HP9825.com и The HP 9845 Project) в качестве микроконтроллера для различной продукции компании. Странно, что этот процессор не умел даже складывать или вычитать — возможно, поэтому его решили назвать не процессором, а «нанопроцессором». Несмотря на эти ограничения, Nanoprocessor управлял различными устройствами от Hewlett-Packard, от интерфейсных панелей и вольтметров до анализаторов спектра и терминалов сбора данных.
Я определил, что Nanoprocessor, в частности, использовался в следующих продуктах от Hewlett-Packard: анализаторы спектра HP 9845B, HP 3585A, синтезатор/генератор функций HP 3325A, дисковод для гибких дисков HP 9885, терминал для сбора данных HP 3070B, HP 98034 HPIB интерфейс для калькулятора HP 9825, таймер реального времени HP 98035 для компьютера HP 9825, интерфейс плёночного накопителя HP 7970E, маршрутизатор HP 4262A, анализатор спектра HP 3852, вольтметр HP 3455A. Пол-Хеннинг Кэмп также рассказал мне, что Nanoprocessor использовался в синтезаторе/генераторе функций HP 3336 и контроллере коммутатора HP 9411.
Ключевой особенностью Nanoprocessor была низкая стоимость и высокая скорость работы: по сравнению с современным ему Motorola 6800, Nanoprocessor стоил $15, а не $360, и справлялся с задачами по управлению на порядок быстрее.
Интересно, что конкурентом Nanoprocessor при его разработке был именно Motorola 6800, а не процессор от Intel. Главное, чем мог похвастаться Nanoprocessor, была скорость: он работал на 4 МГц, учитывая, что 6800-й работал на 1 МГц. У обоих процессоров уходило 2 такта на выполнение базовой команды, при этом у 6800 уходило до 7 тактов на выполнение более сложных команд.
Разработчики Nanoprocessor составили сравнение скорости работы, и предположили, что Nanoprocessor может считать в шесть раз быстрее 6800, и обрабатывать прерывания более чем в 16 раз быстрее. Однако тогда предполагалось, что Nanoprocessor будет работать на 5 МГц, и реальный чип немного не дотянул до этой планки со своими 4 МГц. Предварительной ценой Nanoprocessor называли $15 против $360 за Motorola 6800.
Я не совсем согласен с тем, что Nanoprocessor можно называть микроконтроллером, поскольку он использует внешнее ПЗУ с программой, тогда как у микроконтроллера обычно всё, включая ПЗУ, находится на одном чипе (в данном аспекте он похож на Intel 4004). Однако почти по всем параметрам Nanoprocessor напоминает микроконтроллер: он разработан для встроенного применения, его гарвардская архитектура и набор команд оптимизированы для I/O, он запускает программы из ПЗУ с минимальным хранением данных.
Что касается компьютеров, не умевших складывать — компьютер IBM 1620 размером со стол от 1959 года не имел операции сложения, а использовал для этого таблицу результатов. Его кодовое имя было CADET, и люди в шутку расшифровывали его, как «Can’t Add, Doesn’t Even Try» [не умеет складывать, и даже не пытается].
Недавно разработчик чипа Ларри Бауэр опубликовал шесть фотошаблонов, использовавшихся для производства Nanoprocessor, вместе с подробностями об их разработке. Фотошаблоны были очищены и просканированы в The CPU Shack, а потом очищены Антуаном Берковичи (PSD-файл объёмом 122 Мб можно скачать по ссылке). На композитном изображении фотошаблонов ниже видны внутренние цепи ИС. Голубой слой — верхний металлический слой чипа, зелёный — нижний, кремниевый. Чёрные квадраты по периметру — 40 площадок для связи с внешними контактами ИС. Эти фотошаблоны я использовал для реверс-инжиниринга процессора, чтобы понять его простую, но хитроумную схему, похожую на RISC.
Nanoprocessor во многом напоминает процессор RISC (Reduced Instruction Set Computer) [компьютер с набором простых команд], хотя он и появился за несколько лет до появления такой концепции. В частности, Nanoprocessor разработан с простой системой команд, все команды выполняются за один такт (после такта выборки), набор регистров большой и ортогональный, а адресация проста. Эти характеристики, присущие RISC, дали высокую тактовую частоту по сравнению с более сложными процессорами.
Nanoprocessor разработали в 1974 году, тогда же, когда были объявлены классические процессоры Intel 8080 and Motorola 6800. Однако технология кремниевого производственного процесса Nanoprocessor отставала на несколько лет — они использовали транзисторы с металлическим затвором вместо кремниевых, разработанных в конце 1960-х. Разница кажется непонятной, однако кремниевые затворы были лучше по нескольким статьям. Во-первых, они меньше, быстрее и надёжнее. Во-вторых, у них был поликремниевый слой с проводниками, кроме металлического; в результате разводка чипа была почти в два раза плотнее. В-третьих, транзисторам с металлическим затвором требовалось дополнительное питание в +12 В. Процессор Intel 4004 использовал кремниевые затворы в 1971 году, поэтому я удивлён, что HP ещё использовали металл в 1974.
Учитывая эти ограничения, я впечатлён плотностью разводки Nanoprocessor — один слой металла, никакого поликремния. Я поискал другие чипы с металлическими затворами, и их разводки ужасно неэффективны — там больше проводников, чем транзисторов. При этом цепи Nanoprocessor расположены эффективно и не тратят лишнего места.
Технология производства Nanoprocessor опережала технологии Intel 8080 и Motorola 6800 в одном: она использовала подтягивающие транзисторы с собственным каналом [depletion-mode pull-up transistors], более передовые, чем транзисторы с индуцированным каналом [enhancement-mode transistors], использовавшиеся в 8080 и 6800. Первая технология даёт логические вентили, работающие быстрее и потребляющие меньше, но требует дополнительного шага в производстве. У Nanoprocessor на этом шаге использовали фотошаблон №3 (серый). Таким процессорам, как MOS Technology 6502 и Zilog Z-80, подтягивающие транзисторы с собственным каналом позволяли работать на одном напряжении, а не на трёх. К сожалению, для Nanoprocessor всё ещё требовались разные напряжения из-за транзистора с металлическими затворами.
Очень странная характеристика Nanoprocessor — переменное напряжение смещения подложки. Из соображений быстродействия многие микропроцессоры 1970-х подавали отрицательное напряжение на кремниевую подложку, с напряжением в -5 В, подававшимся через контакт смещения. У Nanoprocessor есть контакт смещения, однако странно, что напряжение смещение от чипа к чипу меняется, от -2 В до -5 В. Во время производства нужное напряжение писали на чипе вручную (см. ниже). Каждый Nanoprocessor нужно было устанавливать вместе с соответствующим резистором, чтобы он получал нужное напряжение. Если на плате меняли Nanoprocessor, надо было сменить и резистор. Переменное напряжение смещение выглядит как производственный недостаток — не могу представить, чтобы Intel так делала процессоры.
Ранним чипам памяти DRAM и микропроцессорам часто требовалось три напряжения питания: +5 В (Vcc), +12 В (Vdd) и -5 В (Vbb) напряжение смещения. В конце 1970-х улучшения технологии производства позволили использовать единственное напряжение. Микроконтроллер Intel 8080 1974 года использовал транзисторы с индуцированным каналом, которым требовалось три напряжения, но улучшенная версия 8085 (1976) использовала транзистор с собственным каналом, и питалась от одного напряжения в +5 В. С конца 1970-х многие микропроцессоры использовали генераторы подкачки заряда, расположенные на чипе, для генерации отрицательного напряжения смещения.
HP Nanoprocessor, номер детали 1820–1691. Обратите внимание на написанное от руки напряжение: -2,5 В. Последняя цифра номера детали (1) тоже написана вручную, и обозначает скорость чипа.
Как большинство процессоров той эпохи, Nanoprocessor был 8-битным. Однако он не использовал память с произвольным доступом, а запускал код с внешнего ПЗУ на 2 КБ. В нём было 16 8-битных регистров — больше, чем у большинства процессоров, и достаточно для компенсации отсутствия памяти во многих приложениях. По количеству транзисторов Nanoprocessor сложнее, чем Intel 8008 (1972) и чуть проще, чем 6800 (1974) или 6502 (1975).
По моим подсчётам, в Nanoprocessor 4639 транзистора. Декодер команд создан из пар небольших транзисторов исходя из соображений расположения элементов. Комбинация этих пар даёт 3829 уникальных транзисторов. Из них 1061 подтягивающие, а 2668 активные. Для сравнения, у 6502 было 4237 транзисторов, из которых активными были 3218. У 8008 было 3500 транзисторов, а у Motorola 6800 — 4100.
Но его архитектура использует транзисторы в других целях, по сравнению с этими процессорами. У Nanoprocessor отсутствует АЛУ, но вместо этого у него есть большой набор регистров, занимающий большую часть площади кристалла. У Nanoprocessor 48 команд, значительно меньше, чем у 6800 с его 72-мя командами. Однако у Nanoprocessor есть удобные операции установки, сброса и проверки битов, которых не было у упомянутых процессоров. Nanoprocessor поддерживает доступ к регистрам по индексам, но у него нет сложных режимов адресации, как у других процессоров.
У ранних микропроцессоров не было операций установки, сброса и проверки битов (хотя их можно реализовать через AND и OR). Z-80 (1976) добавил побитовые операции, однако они занимали по два байта и работали гораздо медленнее, чем у Nanoprocessor.
На блок-схеме ниже показана внутренняя структура Nanoprocessor. Главная особенность ввода/вывода — 4-битный «I/O Instruction Device Select», позволяющий 15-и устройствам получать команды ввода/вывода. Иначе говоря, выбранные контакты определяют, с какого ввода/вывода устройства производится чтение или запись по шинам данных. Внешние цепи используют эти сигналы для всего, что необходимо в конкретных приложениях — хранения данных в защёлке, отправки в другую систему, чтения значений. Ещё больше операций ввода/вывода обеспечивается через контакты «Direct Control I/O» (контакты GPIO), пригодные для ввода и вывода. Если эти контакты не подсоединены к внешним цепям, они работают в качестве удобных битовых флагов; Nanoprocessor может установить значение, а потом прочесть его. В отсутствии арифметико-логического модуля модуль управляющей логики выполняет операции инкремента, декремента, сдвигов и битовые операции на сумматоре.
Блок-схема из руководства пользователя Nanoprocessor
Я проводил реверс-инжиниринг Nanoprocessor на основе фотошаблонов, и разметил размещение функциональных блоков на кристалле. Самый крупный элемент — набор из 16 регистров слева от центра. Справа — компаратор и сумматор, совместно со своими цепями инкремента, декремента, сдвига и дополнения. Декодер команд занимает большую часть места выше и правее компаратора с накопителем. Нижняя часть чипа в основном занята 11-битным счётчиком команд, а также стеком прерываний с одним входом и стеком подпрограммы. Управляющие цепи реализуют простейшую синхронизацию команд: за одним тактом извлечения следует один такт выполнения. У большинства микропроцессоров управляющие цепи занимают значительную часть чипа, но управляющие цепи Nanoprocessor представляют собой небольшой блок.
Nanoprocessor придерживается своей модели выполнения команд за один такт даже для двухбайтовых команд: второй байт запрашивается во время такта исполнения, поэтому общее время выполнения команды не меняется.
Функциональные компоненты HP Nanoprocessor
Разбираемся в фотошаблонах
Чип изготавливали при помощи шести фотошаблонов, каждый из которых использовался для производства одного из слоёв процессора посредством фотолитографии. На фото ниже показаны фотошаблоны. Каждая из них — это лист майлара размером 47,2×39,8 см. Это увеличенные в 100 раз фотошаблоны, использовавшиеся для производства кремниевого кристалла размером 4,72×3,98 мм (что на 33% меньше кристалла 6800). На каждой 3-дюймовой кремниевой подложке находилось порядка 200 ИС, которые производили одновременно, потом тестировали, разрезали и помещали в корпус.
Чтобы объяснить роль масок, начну с описания МОП-структуры с металлическим затвором — такие транзисторы использовались в Nanoprocessor. На схеме внизу два участка кремния (зелёные) при помощи примесей сделаны токопроводящими, и формируют исток и сток транзистора. Металлическая полоска между ними формирует затвор, отделённый от кремния тонким слоем изолирующего оксида (отсюда и название структуры — Металл, Оксид, Полупроводник). Транзистор можно считать переключателем, которым управляет затвор. Также металлический слой обеспечивает основной метод соединения компонентов ИС проводниками, хотя некоторые проводники проходят и по кремниевому слою.
Схема МОП-структуры с металлическим затвором
Фотошаблоны — ключевая часть процесса производства ИС, поскольку они определяют местоположение компонентов. На диаграмме ниже показано, как при помощи фотошаблонов к некоторым участкам кремния добавляются примеси. Сначала на кремниевой подложке формируется слой изолирующего оксида, затем добавляется светочувствительный фоторезист. Ультрафиолет (1) полимеризует и отверждает фоторезист везде, кроме тех мест, где фотошаблон блокирует прохождение света (2). Затем мягкий фоторезист, не подвергавшийся воздействию ультрафиолета, удаляют (3). Подложку подвергают воздействию фтористоводородной кислоты, удаляющей слой оксида там, где его не защищает фоторезист (4). В оксиде появляются отверстия, соответствующие рисунку на фотошаблоне. Затем подложку подвергают воздействию горячего газа, проникающего в незащищённые участки кремния и изменяющего его проводящие свойства (5). Этот процесс порождает небольшие участки кремния с примесями, соответствующие рисунку на фотошаблоне (6). Другие фотошаблоны используются для других этапов производства, однако для них используется такой же процесс с применением фоторезиста.
Как к участкам кремния добавляют примеси при помощи фотошаблонов
Увеличу один участок Nanoprocessor, чтобы показать, как из шести фотошаблонов формируется одна цепь (представляющая собой инвертер, меняющий двоичное значение, поступающее на вход). При помощи первого фотошаблона и описанного выше процесса фотолитографии участки кремния делают токопроводящими. Отмеченные зелёным участки с примесями сформируют истоки/стоки транзистора или соединение компонентов.
Первый фотошаблон создаёт участки токопроводящего кремния
Затем кристалл покрывают изолирующим слоем оксида. Второй фотошаблон (фиолетовый) используется для протравливания отверстий в оксиде, открывающих доступ к лежащему ниже кремнию. Эти отверстия можно использовать для создания затворов транзистора, а также соединения металлических проводников и кремния.
Второй фотошаблон создаёт отверстия в слое оксида
Третий фотошаблон (серый) обнажает участки для имплантации ионов, изменяющих свойства кремния и, следовательно, транзистора. Это превращает верхний транзистор в транзистор с собственным каналом, подтягивающий выход логического вентиля вверх.
Третий фотошаблон (серый) создаёт примеси в кремнии верхнего транзистора
Затем кремний покрывают дополнительным тонким слоем изолирующего оксида, формируя оксиды затворов для транзистора. Четвёртый фотошаблон (оранжевый) удаляет этот оксид с тех участков, которые станут контактами между кремнием и металлическим слоем. После этого шага большая часть кристалла покрывается толстым изолирующим оксидом. Над затворами транзистора (фиолетовый) слой оксида очень тонкий, и в нём есть отверстия для контактов от текущего фотошаблона (оранжевый).
Четвёртый фотошаблон создаёт отверстия в оксиде
Пятый фотошаблон (голубой) используется для создания металлических проводников сверху — для этого сначала накладывается равномерный слой металла, а ненужные части потом вытравливаются. В тех местах, где четвёртый фотошаблон создал отверстии в оксиде, металлический слой соприкасается с кремнием и формирует токопроводящий контакт. В тех местах, где третий фотошаблон создал тонкий слой оксида, металлический слой формирует затвор транзистора между двумя участками кремния. Наконец, всю подложку покрывают защитным стекловидным слоем. Шестой фотошаблон используется для получения отверстии в этом слое над контактами по краям чипа. После разрезания всей подложки на отдельные кристаллы, к этим контактам припаиваются проволочная разварка, соединяющая их с внешними контактами.
Пятый фотошаблон создаёт металлическую разводку
На схеме ниже показано, как эта цепь формирует инвертер из двух транзисторов. Два символа транзистора соответствуют двум транзисторам, полученным благодаря фотошаблону. В отсутствие входящего сигнала верхний транзистор (соединённый с +5 В) притягивает выход наверх. Когда сигнал на входе высокий, он включает нижний транзистор. Это соединяет выход с землёй, притягивая выход вниз. Таким образом цепь инвертирует входящий сигнал.
Схема N-МОП инвертера, соответствующая шаблонам, приведённым выше
Хотя на приведённых выше диаграммах показан единственный инвертер, эти этапы с применением фотошаблонов позволяют создать процессор целиком, со всеми его 4639 транзисторами. На диаграмме ниже показана более крупная часть кристалла, на которой десятки транзисторов формируют более сложные затворы и цепи. Я заметил одну трогательную штуку на одном из фотошаблонов — крохотное сердечко с буквами HP внутри, под номером чипа.
У Nanoprocessor два разных номера детали. 1820–1691 обозначает версию на 2,66 МГц, а 1820–1692 — на 4 МГц. Последнюю цифру писали вручную на каждом чипе после проверки в деле. Номер детали не связан с номером чипа 9–4332A на кристалле.
Рисунки на чипе
Как Nanoprocessor управляет часами
Чтобы понять, как Nanoprocessor использовали на практике, я провёл реверс-инжиниринг кода из модуля часов HP 98035. Модуль подключался к настольному компьютеру HP 9825, и служил часами реального времени, а также мог отмерять интервалы и запускать периодические события с точностью до миллисекунд. Схема модуля часов была довольно необычной. Чтобы сохранять текущее время при выключенном компьютере, модуль часов был построен на базе чипа цифровых часов с запасным аккумулятором. Часовой чип не был предназначен для управления компьютером, что доставляло неудобства: он генерировал 7-сегментные сигналы для управления светодиодами, и настраивался тремя кнопками. Чтобы узнать время, Nanoprocessor приходилось преобразовывать выход с 7-сегментного дисплея обратно в цифры. Для установки времени Nanoprocessor приходилось эмулировать правильную последовательность нажатий кнопок.
HP 9825 был 16-битным настольным компьютером с поддержкой языка, похожего на BASIC. Представили его в 1976 году, за пять лет до IBM PC, и для своего времени это была довольно передовая система. Сзади у него было три разъёма для добавления таких модулей, как модуль часов реального времени.
HP 9825 со светодиодным дисплеем, плёночным накопителем и принтером
Для экономии энергии часовой чип от Texas Instruments реализован на интегрально-инжекционной логике (И2Л). Сегодня чипы с низким энергопотреблением использовали бы КМОП, но тогда это было редкостью. И2Л строилась на биполярных транзисторах, похожих на ТТЛ, но использовавших другие цепи с высокой плотностью и низким энергопотреблением. Возможно, это был чип X-902 в DIP-корпусе.
Nanoprocessor (белый чип) как часть часового модуля HP. Слева от него ПЗУ на 2 КБ. Справа — два чипа памяти 256-битt×4. Часовой чип Texas Instruments — это крупный чёрный чип снизу от зелёного NiCad-аккумулятора
Компьютер управлял модулем часов, отправляя ему ASCII строчки символов типа «S 12:07:12:45:00», что должно было установить время на 12:45:00 7 декабря (или 12 июля в европейской нотации). Различные таймеры интервалов, будильники и счётчики модуля инициировались сходным образом, через команды типа «Unit 2 Period 12345». Модуль поддерживал 24 команды, и Nanoprocessor нужно было их распознавать.
Вот отрывок кода, полученный реверс-инжинирингом с ПЗУ платы часов. Это код от обработчика прерываний, ежесекундно увеличивающего таймер и дату. Код определяет количество дней в месяце, чтобы знать, когда менять месяц на следующий. Столбцы — байтовые значения, команды и мои пояснения.
d0 STR-0 Сохранить следующий байт (7) в регистре 0.
07
0c SLE Пропустить две следующих команды, если накопитель <= регистр 0.
03 DED Уменьшить накопитель на 1 в десятичном режиме
5f NOP Пауза
d0 STR-0 Сохранить следующий байт (0x31) в регистре 0
31
30 SBZ-0 Пропустить два байта команд, если бит 0 накопителя равен 0
81 JMP-1 Перейти на 0x1c9 (конец блока кода)
c9
a1 CBN-1 Сбросить бит 1 накопителя
d0 STR-0 Сохранить следующий байт (0x30) в регистре 0
30
0f SAN Пропустить два байта команд, если бит накопитель не равен 0
d0 STR-0 Сохранить следующий байт (0x28) в регистре 0
28
Этот код получает номер месяца (01–12 BCD), сохраняет его в накопителе, и возвращает в регистре 0 количество дней месяца (28, 30 или 31 BCD). Неплохо для 16 байт кода, несмотря на игнорирование високосных годов. Как он работает? Для месяцев после 7 (июль) он вычитает 1. Затем, если месяц нечётный, то в нём 31 день, а если чётный — 30. Для обработки февраля код сбрасывает бит 1 месяца. Если месяц становится равным 0 (февраль), то в нём 28 дней.
Из кода видно, что даже если процессор без операции сложения кажется бесполезным, побитовые операции и инкремент/декремент Nanoprocessor позволяют вести больше вычислений, чем вы могли бы подумать.
В коде я наткнулся на место, где нужно сложить два числа BCD и сформировать один байт. Это делал цикл, уменьшавший одно число и увеличивавший другое. Когда первое число доходило до нуля, во втором получалась их сумма. Так что даже без АЛУ сложение проводить можно, хотя и медленно.
Также видно, что код Nanoprocessor компактный и эффективный. В одном байте можно сделать много всего, что в других процессорах занимает несколько байт. Большой набор регистров Nanoprocessor позволяет избежать муторной перестановки данных туда и сюда. Хотя некоторые считают Nanoprocessor больше конечным автоматом, чем микропроцессором, это будет преуменьшение возможностей и роли Nanoprocessor.
Хотя у Nanoprocessor нет АЛУ или команд для доступа к памяти с произвольным доступом, их можно подключить в качестве дополнительных I/O устройств. В часах имеется память с произвольным доступом на 256 байт, где хранятся значения счётчиков и таймеров, доступ к которым организован через порты ввода/вывода. В других продуктах добавляли АЛУ для поддержки арифметических операций.
На схеме платы часов показано, как два чипа 256×4 RAM подключаются к Nanoprocessor. Порт ввода/вывода Nanoprocessor выбирает контакт и подсоединяется к »3–8 Decoder» U5, выдающему отдельные сигналы для каждого из портов ввода/вывода. Три из них идут к управляющим контактам RAM чипа, а один управляет чипами защёлок данных U9 и U10, удерживающих записанные данные.
Все порты ввода/вывода используют шину данных Nanoprocessor (вверху) для обмена данными, поэтому шина подсоединяется и к адресным контактам чипов RAM, и к контактам данных. Для чтения адрес памяти пишется в чипы через один порт ввода/вывода, а потом данные читаются из памяти через другой порт. В обоих случаях значения проходят по шине данных, а сигнал от »3–8 Decoder» показывает, что нужно делать со значениями. Для записи первая операция ввода/вывода сохраняет байтовое значение в защёлках, а потом вторая операция ввода/вывода отправляет адрес в чипы памяти. Может показаться, что это неуклюжий подход в стиле машины Голдберга, но на практике он хорошо работает, и чтение/запись можно осуществить двумя байтами команд.
Многие процессоры, такие, как 6502, используют ввод/вывод с отображением в памяти — устройства отображаются в адресном пространстве памяти и доступ к ним идёт через операции чтения/записи. Nanoprocessor работает наоборот, подключая память в порт ввода/вывода и обращаясь к ней через операции ввода/вывода.
При добавлении АЛУ используется схожий подход — так, как в вольтметре HP 3455A, использующем два Nanoprocessor. Вольтметр использует два АЛУ чипа 74LS181 для реализации 8-битного АЛУ, который он использует для масштабирования значений и вычисления процента ошибки. Два порта выхода обеспечивают аргументы, а ещё один определяет операцию. 8-битный результат читается из порта, а процессор считывает перенос через контакт GPIO (заставляет задуматься, не проще ли было использовать процессор с поддержкой арифметики).
Заключения
Nanoprocessor — процессор необычный. По первому впечатлению он даже показался мне «ненастоящим процессором», из-за отсутствия базовых арифметических операций. Чип создан на основе устаревшей технологии с металлическими затворами, отстававшей от других микропроцессоров на несколько лет. Самое странное, что каждому чипу требовалось своё напряжение, которое писали на корпусе вручную, что говорит о сложностях со стабильным качеством на производстве. Однако Nanoprocessor в роли микроконтроллера работал быстро, гораздо быстрее других современных ему процессоров. Hewlett-Packard использовала Nanoprocessor во многих продуктах в 1970-х и 1980-х, в ролях более сложных, чем можно было ожидать.
Хотя Nanoprocessor давно забыт, и о нём не написано даже в Википедии, недавно опубликованные его создателем фотошаблоны проливают свет на этот необычный уголок истории процессоров.