Для чего был разработан математический сопроцессор
Математический сопроцессор
Математический сопроцессор — сопроцессор для расширения командного множества центрального процессора и обеспечивающий его функциональностью модуля операций с плавающей запятой, для процессоров, не имеющих интегрированного модуля.
Модуль операций с плавающей запятой (или с плавающей точкой; англ. floating point unit (FPU) ) — часть процессора для выполнения широкого спектра математических операций над вещественными числами.
Простым «целочисленным» процессорам для работы с вещественными числами и математическими операциями требуются соответствующие процедуры поддержки и время для их выполнения. Модуль операций с плавающей запятой поддерживает работу с ними на уровне примитивов — загрузка, выгрузка вещественного числа (в/из специализированных регистров) или математическая операция над ними выполняется одной командой, за счёт этого достигается значительное ускорение таких операций.
Содержание
Сопроцессоры
x87 — это специальный набор инструкций для работы с математическими вычислениями, являющийся подмножеством архитектуры процессоров x86. Такое название он получил, потому что первоначальные отдельные математические сопроцессорные чипы имели названия, заканчивающиеся на 87. Как и другие расширения базового набора инструкций процессора, эти инструкции не являются строго необходимыми для построения рабочей программы, но будучи аппаратно реализованными, общие математические задачи они позволяют выполнять гораздо быстрее. Например, в наборе инструкций x87 присутствуют команды для расчёта значений синуса или косинуса.
Сопроцессоры Intel семейства x86
Для процессоров семейства x86 с 8086/8088 по 386, модуль операций с плавающей запятой был выделен в отдельную микросхему, называемую математическим сопроцессором. Для установки сопроцессора на плате компьютера предусматривался отдельный разъём.
Сопроцессор не является полноценным процессором, так как не умеет делать многих необходимых для этого операций (например, не умеет работать с программой и вычислять адреса памяти), являясь всего лишь придатком центрального процессора.
Одна из схем взаимодействия центрального процессора и сопроцессора, применяемая, в частности, в x86 сопроцессорах, реализуется следующим образом:
Начиная с процессора Intel486DX модуль операций с плавающей запятой был интегрирован в центральный процессор и назван FPU. В линейке Intel486SX модуль FPU отключался (поначалу в эту линейку попадали процессоры с бракованным FPU). Для процессоров Intel486SX также выпускался «сопроцессор» Intel487SX, но, фактически, он являлся процессором Intel486DX и при его установке процессор Intel486SX отключался.
Несмотря на интеграцию, FPU в процессорах i486 представляет собой неизменный сопроцессор, выполненный на том же кристалле, более того, схема FPU i486 полностью идентична сопроцессору предыдущего поколения 387DX вплоть до тактовой частоты (в два раза меньшей, чем частота центрального процессора). Настоящая интеграция FPU c центральным процессором началась только в процессорах Pentium модели MMX.
Сопроцессоры x86 от сторонних производителей
Широкое распространение в соответствующий период получили сопроцессоры для платформы x86, выпускавшиеся компанией Weitek — ею были выпущены 1167, 2167 в виде набора микросхем и микросхемы 3167, 4167, для процессоров 8086, 80286, 80386, 80486, соответственно. По сравнению с сопроцессорами от Intel они обеспечивали в 2-3 раза большую производительность, но обладали несовместимым программным интерфейсом, реализованным через технологию memory-mapping. Она сводилась к тому, что основной процессор должен был записывать информацию в те или иные области памяти, контролируемые Weitek-овским сопроцессором (собственно, оперативной памяти там, конечно не было). Конкретный адрес, куда производилась запись, интерпретировался в качестве той или иной команды. Несмотря на несовместимость, сопроцессоры от Weitek были широко поддержаны как разработчиками ПО, так и производителями материнских плат, предусматривавших на них гнёзда для установки такой микросхемы.
Ряд других компаний также выпускал различные несовместимые математические сопроцессоры, реализуя интерфейс к ним через порты ввода-вывода или прерывания BIOS, но они не получили такого широкого распространения.
Компании-производители клонов выпускали совместимые с 80287 80387 сопроцессоры, работавшие быстрее аналогичных интеловских. Среди этих компаний можно упомянуть Cyrix, AMD, Chips & Technologies (C&T). Иногда система команд этих сопроцессоров расширялась несколькими несовместимыми, например, аналог 80287 от C&T содержал команды для работы с вектором из четырёх значений с плавающей точкой. Серьёзной поддержки от производителей ПО эти расширенные команды не получили.
Процессоры EMC87 от фирмы Cyrix могли работать как в режиме программной совместимости с Intel 80387, так и в собственном несовместимом режиме программирования. Для них обеспечивалась аппаратная совместимость с разъёмом 80387-го сопроцессора.
В СССР выпускалась микросхема (КМ)1810ВМ87, которая являлась аналогом 8087
Другие платформы
Аналогично, материнские платы ПК, построенных на процессорах Motorola, до разработки этой фирмой процессора MC68040 (в который сопроцессор был встроен) содержали математический сопроцессор. Как правило, в качестве FPU использовался сопроцессор 68881 16 МГц или 68882 25 МГц. Практически любой современный процессор имеет встроенный сопроцессор.
Компания Weitek также выпускала математические сопроцессоры для платформ 68000 и MIPS.
Устройство FPU
Все процессоры Intel и AMD, начиная с 486DX, имеют встроенный математический сопроцессор, и в отдельном сопроцессоре не нуждаются (за исключением Intel486SX). Тем не менее, термин x87 всё ещё используется для выделения той части инструкций процессора, которая занимается вычислениями с использованием плавающей запятой; компиляторы могут использовать эти инструкции для производства кода, который работает быстрее, нежели тот, что использует вызовы к библиотекам для выполнения операций с плавающей запятой.
Инструкции x87 совместимы со стандартом IEEE-754. Однако, x87 выполняют операции не в строгом соответствии с форматами IEEE-754, из-за использования более широких регистров. Поэтому последовательность арифметических операций может выполняться несколько по-разному на наборе x87 и на процессоре, строго следующем формату IEEE-754.
x87 организует свои регистры не как массив, как большинство других архитектур, а как регистровый стек, работающий по принципу обратной польской записи. Это означает, что в один момент времени, только два верхних регистра доступны для проведения операций, а доступ к другим регистрам требует манипуляций со стеком. Хотя такая организация получается и удобной для программистов, она делает трудоёмким построение эффективного кода x87 для компиляторов.
Начиная с Pentium III, вычисления с помощью инструкций SSE осуществляются с одинарной точностью, а в более поздних версиях — с двойной точностью форматов IEEE-754. После появления SSE2, использование x87 в значительной степени умаляется в 64-разрядных архитектурах x86-64 и связанных с ней 64-битных реализациях операционных систем, таких как Microsoft Windows, Mac OS X, Solaris, FreeBSD и Linux, хотя он по-прежнему хорошо поддерживается для полной совместимости со старыми приложениями.
Модуль операций с плавающей запятой [2] [3] представляет собой стековый калькулятор, работающий по принципу обратной польской записи. Перед операцией аргументы помещаются в LIFO-стек, при выполнении операции необходимое количество аргументов снимается со стека. Результат операции помещается в стек, где может быть использован в дальнейших вычислениях или может быть снят со стека для записи в память. Также поддерживается и прямая адресация аргументов в стеке относительно вершины.
Форматы данных
Внутри FPU числа хранятся в 80-битном формате с плавающей запятой, для записи же или чтения из памяти могут использоваться:
FPU также поддерживает специальные численные значения:
Регистры
В FPU можно выделить три группы регистров:
Система команд сопроцессора
Система включает около 80 команд. Их классификация:
См. также
Примечания
8 бит · 16 бит · 32 бит · 64 бит · 128 бит
Pipeline | Конвейер · In-Order & Out-of-Order execution · Переименование регистров · Speculative execution |
Уровни | Бит · Инструкций · Суперскалярность · Данных · Задач |
Потоки | Многопоточность · Simultaneous multithreading · Hyperthreading · Superthreading · Аппаратная виртуализация |
Классификация Флинна | SISD · SIMD · MISD · MIMD |
Полезное
Смотреть что такое «Математический сопроцессор» в других словарях:
математический сопроцессор — — [Е.С.Алексеев, А.А.Мячев. Англо русский толковый словарь по системотехнике ЭВМ. Москва 1993] Тематики информационные технологии в целом EN match coprocessor … Справочник технического переводчика
Сопроцессор — Сопроцессор специализированный процессор, расширяющий возможности центрального процессора компьютерной системы, но оформленный как отдельный функциональный модуль. Физически сопроцессор может быть отдельной микросхемой или может быть… … Википедия
Блок операций с плавающей точкой — Математический сопроцессор 80×287 в колодке на базовой плате персонального компьютера. Сопроцессор Motorola 68881 Математический сопроцессор сопроцессор для расширения командного множества центрального процессора и обеспечивающий его… … Википедия
Периферийный процессор — Сопроцессор специализированный процессор, расширяющий возможности центрального процессора компьютерной системы, но оформленный как отдельный функциональный модуль. Физически сопроцессор может быть отдельной микросхемой или может быть встроен в… … Википедия
Intel 80486 — > Центральный процессор Микропроцессор Intel 80486 Производство: с 10 апреля … Википедия
80486 — > Центральный процессор … Википедия
80386 — В этой статье не хватает ссылок на источники информации. Информация должна быть проверяема, иначе она может быть поставлена под сомнение и удалена. Вы можете отредактировать эту статью … Википедия
Am486 — AMD Am486DX 40 Am486 семейство микропроцессоров архитектуры x86 компании AMD, предст … Википедия
Микропроцессорный комплект серии К1810 — Микропроцессорный комплект cерии К1810 набор микросхем, аналогичных набору микросхем для процессора Intel 8086, дальнейшее развитие микропроцессорного комплекта К580. Использовался в отечественных IBM PC совместимых компьютерах, таких как… … Википедия
Процессор — У этого термина существуют и другие значения, см. Процессор (значения). Запрос «ЦП» перенаправляется сюда; см. также другие значения. Intel Celeron 1100 Socket 370 в корпусе FC PGA2, вид снизу … Википедия
Математический сопроцессор
С появлением новых моделей микропроцессоров Intel совершенствовались и сопроцессоры, хотя их программная модель осталась практически неизменной. Как отдельные (а, соответственно, необязательные в конкретной комплектации компьютера) устройства, сопроцессоры сохранялись вплоть до модели микропроцессора i386 и имели название i287 и i387 соответственно. Начиная с модели i486, сопроцессор исполняется в одном корпусе с основным микропроцессором и, таким образом, является неотъемлемой частью компьютера.
Основные возможности математического сопроцессора:
Общая форма представления вещественных чисел предполагает возможность размещения в разрядной сетке следующих типов.
Тип чисел | Знак | Степень | Целое | Мантисса |
+∞ | 0 | 11…11 | 1 | 00…00 |
положительные нормированные | 0 | 00…01 — 11…10 | 1 | 00…00 — 11…11 |
положительные ненормированные | 0 | 00…00 | 0 | 00…00 — 11…11 |
0 | 0, 1 | 00…00 | 0 | 00…00 |
отрицательные ненормированные | 1 | 00…00 | 0 | 00…00 — 11…11 |
отрицательные нормированные | 1 | 00…01 — 11…10 | 1 | 00…00 — 11…11 |
-∞ | 1 | 11…11 | 1 | 00…00 |
нечисла (NaN — Not a number) | * | 11…11 | 1 | **…** ≠0 |
Числа простой и двойной точности ( float ( DD ) и double ( DQ ) соответственно) могут быть представлены только в нормированной форме. При этом бит целой части числа является скрытым и подразумевает логическую 1. Остальные 23 (52) разряда хранят двоичную мантиссу числа.
Числа двойной расширенной точности ( long double ( DT )) могут быть представлены как в нормированной, так и в ненормированной форме, поскольку бит целой части числа не является скрытым и может принимать значения как 0, так и 1.
Основным типом данных, которыми оперирует математический сопроцессор, являются 10-байтные данные ( DT ).
Программная модель сопроцессора
Программная модель сопроцессора представляет собой совокупность регистров, каждый из которых имеет свое функциональное назначение.
В программной модели сопроцессора можно выделить три группы регистров:
Все указанные регистры являются программно доступными. Однако к одним из них доступ получить достаточно легко, для этого в системе команд сопроцессора существуют специальные команды. К другим регистрам получить доступ сложнее, так как специальных команд для этого нет, поэтому необходимо выполнить дополнительные действия.
Регистр состояния swr – отражает текущее состояние сопроцессора после выполнения последней команды. В регистре swr содержатся поля, позволяющие определить: какой регистр является текущей вершиной стека сопроцессора, какие исключения возникли после выполнения последней команды, каковы особенности выполнения последней команды (некий аналог регистра флагов основного процессора).
Структурно регистр swr состоит из:
Регистр управления работой сопроцессора cwr – определяет особенности обработки числовых данных. С помощью полей в регистре cwr можно регулировать точность выполнения численных вычислений, управлять округлением, маскировать исключения.
Он состоит из:
2-битовое поле управления точностью PC предназначено для выбора длины мантиссы. Возможные значения в этом поле означают:
По умолчанию устанавливается значение поля PC =11.
Бит 12 в регистре cwr физически отсутствует и считывается равным 0.
Регистр тегов twr – представляет собой совокупность двухбитовых полей. Каждое поле соответствует определенному физическому регистру стека и характеризует его текущее состояние. Команды сопроцессора используют этот регистр, например, для того, чтобы определить возможность записи значений в эти регистры. Изменение состояния любого регистра стека отражается на содержимом соответствующего этому регистру 2-битового поля регистра тега. Возможны следующие значения в полях регистра тега:
Принцип работы сопроцессора
Принцип работы сопроцессора совместно с центральным процессором
Процессор и сопроцессор имеют свои раздельные системы команд и форматы обрабатываемых данных. Несмотря на то, что сопроцессор архитектурно представляет собой отдельное вычислительное устройство, он не может существовать отдельно от основного процессора. Процессор и сопроцессор, являясь двумя самостоятельными вычислительными устройствами, могут работать параллельно. Но это распараллеливание распространяется только на выполнение команд. Оба процессора подключены к общей системной шине и имеют доступ к одной и той же информации. Инициирует процесс выборки очередной команды всегда основной процессор. После выборки команда попадает одновременно в оба процессора. Любая команда сопроцессора имеет код операции, первые пять бит, которого имеют значение 11011. Когда код операции начинается этими битами, то основной процессор по дальнейшему содержимому кода операции выясняет, требует ли данная команда обращения к памяти. Если это так, то основной процессор формирует физический адрес операнда и обращается к памяти, после чего содержимое ячейки памяти выставляется на шину данных. Если обращение к памяти не требуется, то основной процессор заканчивает работу над данной командой (не делая попытки ее исполнения) и приступает к декодированию следующей команды из текущего входного командного потока. Выбранная команда попадает в сопроцессор одновременно с основным процессором. Сопроцессор, определив по первым пяти битам, что очередная команда принадлежит его системе команд, начинает ее исполнение. Если команда требует операнды из памяти, то сопроцессор обращается к шине данных за чтением содержимого ячейки памяти, которое к этому моменту предоставлено основным процессором.
Заглядывая внутрь сопроцессора Intel 8087
Немного истории развития линейки восьмиразрядных процессоров, выпускаемых компанией Intel
Линейка восьмиразрядных процессоров начинает свою историю с апреля 1972 года. Intel 8008 вообще изначально планировался для использования в калькуляторах, устройствах ввода-вывода, но производитель хорошенько «поразмыслив», решил найти линейке новое предназначение — быть центральным процессором ПК. В зависимости от модификаций процессоров тактовая частота составляла 500 или 800 КГц, а производительность равнялась 45000-160000 операций в секунду.
Intel C8008
В апреле 1974 года Федерико Фаггини и Масатоши Шима разработали новую линейку процессоров — Intel 8080. 6000 транзисторов были размещены в 40-контактном керамическом корпусе, 16-разрядная шина адреса и 8-разрядная шина данных, адресуемая память в 64 Кб. Тактовая частота составляла 2 МГц, а производительность — до 500 000 операций в секунду. Для того чтобы использование процессора стало «комфортным», был разработан арифметический сопроцессор, тактовый генератор, формирователи шин, таймера, контроллеры периферийных устройств и тд.
Intel 8080A
Через два года в марте 1976 года свет увидела линейка Intel 8085: 6500 транзисторов были размещены в 40-контактном керамическом (или пластмассовом) корпусе. Тактовая частота составляла от 3 до 8 МГц, разрядность шины данных — 8 бит, разрядность шины адреса – 16 бит, адресуемая память – 64 Кб. Данная линейка успешно была «задействована» в ПК или в виде микроконтроллеров.
В июне 1978 года началось производство первой линейки шестнадцатиразрядных процессоров компании — Intel 8086: 29000 транзисторов были размещены на кристалле размером 5,5 х 5,5 мм. Тактовая частота составляла от 5 до 10 МГц, производительность – от 330 до 750 тысяч операций в секунду, разрядность шины данных — 16 бит, а разрядность шины адреса – 20 бит.
Intel 8086
Спустя год, летом 1979 года, Intel выпустила 8088 линейку — переходное звено между 8-ми и 16-ти разрядными процессорами: 29 000 транзисторов, тактовая частота составляла 5-10 МГц. Но линейка 8088 так и не стала популярной из-за своей дороговизны.
Intel P8088
Сопроцессоры 8087
В июне 1980 была выпущена линейка сопроцессоров Intel 8087 для Intel 8086, 8088. Такие сопроцессоры содержали 45000 транзисторов, тактовая частота в различных модификациях составляла от 4 до 10 МГц.
Intel C8087
Математический сопроцессор — это специальный модуль для выполнения операций с плавающей запятой, который работает в содружестве с центральным процессором.
В целях экономии от такой роскоши как сопроцессор просто-напросто отказывались. Но для решения трудоемких задач, например тех же инженерных расчетов, повышение производительности компьютера стало уже необходимостью. Нарастить производительность удалось за счет вот такого специального модуля — математического сопроцессора.
Согласно данным компании INTEL, математический сопроцессор может сократить время выполнения математических операций, таких как умножение, деление и возведение в степень, на 80 процентов и более. Скорость выполнения простых математических операций, таких как сложение и вычитание, не изменяется.
Внутри кристалла микропроцессора Intel 8087
Заглянув во внутрь Intel 8087 с плавающей запятой, я заметил интересную особенность на кристалле: схема формирования смещения подложки. В этой статье я объясню, как эта схема реализована, при использовании аналоговых и цифровых схем для создания отрицательного напряжения.
Intel разработала чип 8087 в 1980 году для того, чтобы улучшить производительность ПК с процессорами линеек 8086/8088 (таких, как IBM PC) при выполнении операций с плавающей запятой. Поскольку первые микропроцессоры были предназначены для выполнения операций с целыми числами, выполнение операций с числами с плавающей запятой было медленным, что уже и говорить о выполнение трансцендентных операций, таких как тригонометрические функции или логарифмы. Сопроцессор 8087 значительно повысил скорость выполнения задач с плавающей запятой, все выполнялось почти в 100 раз быстрее. Архитектура 8087 была реализована и в более поздние процессоры Intel, а инструкции 8087 по-прежнему используются в современных x86 ПК.
Для сопроцессора было введено более 60 новых инструкций, название которых начиналось на «F», для того, чтобы отличать их от целочисленных инструкций Intel 8086.
Я вскрыл чип 8087 и при помощи высокопродуктивного микроскопа сделал фотографии, в итоге их компоновки получил такое изображение:
Кристалл 8087 весьма сложный, содержит 40 000 транзисторов (согласно заявлениям Intel) или 45 000 (согласно Википедии). На фотографии — металлический слой чипа, соединения расположены сверху чипа. Самые толстые белые линии обеспечивают питание и заземление всех частей микросхемы. Под слоем металла — поликремний или кремний, из которого сформированы транзисторы чипа.
В нижней половине чипа — расширенная 80-битная арифметическая схема: сумматор, регистры, переключатели, математические константы. Большой прямоугольник в середине чипа — это микрокод, который реализует набор инструкций процессора. В верхней части находятся логические схемы и схема шины, которая сопряжена с процессором 8086.
Черные линии вокруг чипа на фотографии — мелкие термокомпрессионные соединения, соединяющие контактные площадки ИС (металлизированные проводящие участки квадратной или прямоугольной формы, расположенные преимущественно по периферии кристалла или подложки) с 40 контактам на кристалле. Изучая техническое описание 8087, не сложно определить, какая контактная площадка на матрице какому контакту микросхемы соответствует; 40 контактов чипа (пронумерованы против часовой стрелки) подключены к 40 контактным площадкам на чипе.
Ниже приведено увеличенное изображение части матрицы, на ней мы можем лучше рассмотреть контактные площадки. (Обратите внимание, что выводы заземления и +5 В контактные площадки питания имеют несколько подключений одновременно, что увеличивает количество постачаемого тока). Но вот «сюрприз» — существует дополнительная контактная площадка и соединение, расположенные между контактными площадками 40 и 1, и не связанные ни с одним из контактов микросхемы.
Глядя на термокомпрессионное соединение проволочных выводов на чипе (ниже приведено изображение) выяснилось, что таинственная контактная площадка не подключена ни к одному контакту, а соединена с небольшим кубообразным блоком. Этот «кубик» находится на том же металлическом основании, что и кристалл, соединен с кремниевой подложкой чипа, платой.
Я провел инженерный анализ технологии изготовления с целью раскрытия «секретов фирмы» и пришел к выводам, что это часть схемы смещения подложки 8087, в которой это соединение используется, чтобы подавать отрицательное напряжение на подложку. Как же работает эта схема?
Что такое смещение подложки?
В 1970 годах интегральные схемы высокой плотности были построены из n-МОП-транзисторов (полевой транзистор с изолированным затвором и каналом n-типа). Изображение ниже наглядно демонстрирует их структуру. Основание чипа — кремниевая подложка. Транзисторы в свою очередь тоже из кремния. Для того, чтобы изменить тип проводимости и концентрацию носителей в объеме полупроводника для получения заданных свойств, участки кремния легируются примесями, чтобы создать диффузионные области с желаемыми свойствами. Транзистор может быть рассмотрен как резистор, позволяющий току течь между двумя диффузионными областями истока и стока. Транзистор контролируется затвором, выполненным из поликремния. Входное напряжение на затворе управляет протеканием тока от истока к стоку: высокое напряжение сигнала на затворе позволяет току протекать от истока к стоку, в то время как низкое напряжение сигнала блокирует ток. Изолирующий оксидный слой отделяет затвор от кремния под ним; важность этого слоя рассмотрим немного позже. Эти крошечные транзисторы можно комбинировать с целью формирования логических затворов, компонентов микропроцессоров и других кристаллов цифровой ИС.
Внутри схемы смещения подложки 8087
Я осмотрел чип под микроскопом. Металлический слой скрывает транзисторы внизу, а это затрудняет просмотр схемы. Но, сняв слой металла при помощи соляной кислотой, я добрался до слоев поликремния и кремния, «обнаружил» транзисторы и конденсаторы, показано ниже.(Цветные области — это просто помехи, так как некоторые оксиды не были полностью удалены). На фото ниже показано два зарядовых насоса: один слева от контактной площадки, а второй внизу. Каждый зарядовый насос в соответствии схеме, имеет два диода, большой конденсатор и два транзистора.
Конденсаторы являются наиболее заметной «особенностью» схемы смещения подложки. Хотя на самом деле их размеры микроскопические, они огромны по стандартам измерения габаритов чипа. Площадь под конденсаторы составляет примерно как регистровая память в 72 бита, (больше чем 400 транзисторов). Каждый конденсатор состоит из поликремния над кремниевой частью, разделенной изолирующим оксидом; поликремний и кремний образуют пластины конденсатора. На фотографии конденсаторы усеяны квадратами; эти квадраты являются контактами между поликремнием (или кремнием) и металлическим слоем сверху. (Металлический слой не виден, поскольку он был стерт).
Четыре управляющие транзисторы это транзисторы большой мощности. Их размеры превосходят обычные транзисторы. Красные линии — это поликремниевые соединения, образующие затвор. Зеленые линии — контакты к металлическому слою, подключающие транзисторы к +5 В или земле. Диоды рядом с контактной площадкой формируются из транзисторов при соединении затвора и стока.
Зарядовые насосы приводятся в действие круговым осциллятором, как показано на изображении ниже. Этот круговой осциллятор состоит из пяти инверторов в петле короткого замыкания. Поскольку число инверторов нечетное, система нестабильна и будет осциллировать. Например, если вход для первого инвертора равен 0, выход пятого инвертора будет равен 1. Чтобы замедлить скорость колебаний, в кругу — две резистивно-емкостные цепи. Поскольку для зарядки и разрядки конденсатора потребуется некоторое время, колебания будут замедляться, что даст время для работы зарядовому насосу.
Прежде чем разложить информацию о круговом осцилляторе, я продемонстрирую, как реализован стандартный NMOS инвертор в кремнии. Ниже показан — инвертор, его схематическое изображение и то, как он воплощен на чипе. Инвертор использует транзистор и нагрузочный резистор (который в действительности является транзистором). Если входной сигнал низкий, транзистор выключен, то нагрузочный резистор подает на выход до +5 В. Если входной сигнал высок, транзистор включен, выходное напряжение подается на землю. Таким образом, схема инвертирует вход.
Легированный кремний на изображении — это большие участки бежевого цвета. Тонкие желтые участки, рядом с фиолетовыми, — поликремниевые. Вход представляет собой поликремниевый провод. Там, где он пересекается с легированным кремнием, он образует затвор транзистора между землей (ниже входа) и выходом (над входом). Нагрузочный резистор реализован в транзисторе, который имеет затвор и сток, соединенные вместе; указанный контакт образует это соединение между транзисторным поликристаллическим кремниевым затвором и его кремниевым стоком. Поликремний также образует выходной провод. Таким образом, инвертор на чипе реализован с двумя транзисторами.
На фото выше показано, как образуется круговой осциллятор на кристалле. Изображены все пять инверторов. Каждый инвертор имеет разное направление, что оптимизирует структуру.Также обозначены резисторы и конденсаторы R-C цепи. Резисторы — просто транзисторы с большим расстоянием между истоком и стоком, уменьшающие движение тока. Конденсаторы же сконструированы как конденсаторы зарядового насоса, но намного меньше в размерах; кремний на дне и поликремний сверху образуют конденсаторные пластины, разделенные тонким изолирующим оксидным слоем.
Выводы
Генератор напряжения смещения подложки на кристалле 8087 представляет собой интересную комбинацию цифровой схемы (круговой осциллятор, сформированный из инверторов) и аналоговый зарядовый насос. Схемы генератора напряжения смещения подложки были введены в конце 1970-х годов, это давало возможность микросхемам памяти и микропроцессорам работать от одного источника питания +5 В. Это было намного удобнее, чем использование трех разных источников напряжения. Генератор смещения подложки вырабатывает отрицательное напряжение с положительного напряжения питания при помощи зарядового насоса.
Хотя генератор смещения напряжения может показаться неясным моментом в компьютерной истории 1970-х годов, этот процесс по-прежнему является частью современных интегральных схем, правда все стало намного сложнее.
Несмотря на то, что чип Intel 8087 с плавающей запятой был разработан и введен в эксплуатацию 38 лет назад, его «влияние» ощутимо и сегодня. Благодаря его появлению, был принят стандарт IEEE 754 — «стандарт IEEE, описывающий формат представления чисел с плавающей точкой. Используется в программных (компиляторы с разных языков программирования) и аппаратных (CPU и FPU) реализациях арифметических действий (математических операций)». Инструкции 8087 остаются частью процессоров x86.
Примечания и ссылки
1. Для сопроцессора было введено более 60 новых инструкций, название которых начиналось на «F», для того, чтобы отличать их от целочисленных инструкций Intel 8086. Например, аналоги команд ADD/MUL/CMP, в 8087 выглядели как FADD/FMUL/FCOM. Эти инструкции были реализованы с помощью команды ESC «escape» 8086, которая была разработана, чтобы позволить процессору 8086 взаимодействовать с сопроцессором.
Появление сопроцессора привело к созданию стандарта IEEE 754 в 1985 году для арифметики с плавающей точкой;
2. Наложение отрицательного напряжения смещения на подложку имело несколько преимуществ. Это уменьшило паразитную емкость, что ускорило работу чипа, сделало пороговое напряжение транзистора более предсказуемым и уменьшило ток утечки.
4. Третий (+12 В) источник питания в старых чипах не имеет отношения к смещению подложки. Этот источник использовался, потому что в ранних MOS-интегральных схемах были транзисторы, работающие в режиме обогащения, повышающие напряжение на затворах. Эти транзисторы не могли вытянуть сигналы вплоть до +5 В, добавили еще более высокий источник питания +12 В. В середине 1970-х годов новая технология (ионная имплантация) позволила создать транзисторы работающие в режиме обеднения, необходимость в +12 В была исчерпана.
VPS (KVM) E5-2650 v4 (6 Cores) 10GB DDR4 240GB SSD 1Gbps до декабря бесплатно при оплате на срок от полугода, заказать можно тут.