Особенности архитектуры процессоров 386, 486 и Pentium . Часть 4.
3.1. Процессоры 386/387
Процессор Intel386, выпущенный в 1985 году, был первым 32-разрядным про-цессором. Он имел 32-битные раздельные шины адреса и данных с возмож-ностью динамического управления конвейерной адресацией и разрядностью (16/32) шины данных. Позже, Е 1988 году, фирмой Intel был выпущен вариант процессора Intel386™SX с 16-разрядной шиной данных и 24-разрядной шиной адреса, а полноразрядный вариант получил официальное название Intel386™ DX. Как и в случае с 8088, это было сделано с целью удешевления компьютера, собранного на базе данного процессора. Это удешевление, конечно же, обернулось и снижением производительности компьютера примерно в пол-тора раза по сравнению с использованием DX на той же тактовой частоте. Процессоры Intel386™SX и Intel386™DX отличаются только внешней шиной данных и адреса, их программные модели идентичны. В 1990 году появился процессор Intel386™SL со средствами управления энергопотреблением, разрабо-танный специально для портативных компьютеров. В комплекте с 386SL выпус-калась БИС 82360SL, содержащая набор PC-периферии, контроллер сигналов шины ISA, контроллер динамической памяти и контроллер внешнего кэша раз-мером 16-64 Кб с архитектурой прямого отображения либо 2- или 4-канальной наборно-ассоциативной архитектурой.
В дальнейшем описании для краткости эти процессоры будем обозначать как 386-й, добавляя суффиксы SX, DX или SL при необходимости подчеркнуть различия.
Внутренняя очередь команд процессора 386 имеет размер 16 байт. Число тактов, требуемое для выполнения инструкций, примерно такое же, как и у 80286. Предусмотрена возможность использования математического сопроцессо-ра Intel387, программно совместимого с 8087 и 80287. Возможно и использова-ние сопроцессора 80287, но его производительность ниже.
С появлением процессора 386 в PC стало возможным более эффективно использовать память и начал широко применяться защищенный режим. Некото-рые процессоры первых выпусков не обеспечивали полную работоспособность в 32-разрядном режиме, о чем должна была свидетельствовать маркировка "16 bit operations only". Попытка установить на компьютер с таким процессором 32-раз-рядную ОС обречена на неудачу (при установке Windows 95 будет сообщение об ошибке "В1"). Однако подавляющее большинство процессоров 386 полнос-тью отвечает спецификациям 32-разрядных процессоров, приведенным выше.
3.2. Интерфейс процессоров 386DX и 386SX
Процессоры 386DX выпускались в корпусах PGA и PQFP (рис. 5 и 6 и табл. 6). Их интерфейс отличается от 8086 применением раздельных шин адреса и данных, конвейерной адресации, а также составом и назначением управляющих сигналов. По сравнению с интерфейсом 80286 появилась возможность динамического управления разрядностью шины данных и конвейеризацией адреса, изменился состав управляющих сигналов, назначение которых стало более отчетливым.
Рис. 5. Расположение выводов процессора 386DX в корпусе PGA.
Процессоры 386SX выпускались в 100-выводном корпусе PQFP (рис. 6). Их интерфейс почти совпадает с DX, различия касаются разрядности шин адреса и данных (см. табл. 6 и 7).
Дальнейшее описание непосредственно относится к процессору 386DX, а в конце приводятся отличия процессора 386SX.
Рис. 6. Расположение выводов процессоров 386DX и 386SX в корпусе PQFP .
Таблица 6. Расположение выводов процессоров 386
Сигнал | 386DX-PQFP | 386DX-PGA | 386SX | Сигнал | 386DX-PQFP | 386DX-PGA | 386SX | |
А01 | - | - | 18 | D27 | 113 | N5 | - | |
А02 | 67 | С4 | 51 | D28 | 112 | М6 | - | |
АОЗ | 68 | A3 | 52 | D29 | 109 | Р4 | - | |
А04 | 69 | B3 | 53 | D30 | 108 | P3 | - | |
А05 | 70 | В2 | 54 | D31 | 107 | М5 | - | |
А06 | 71 | C3 | 55 | ADS# | 27 | Е14 | 16 | |
А07 | 72 | С2 | 56 | ВЕО# | 31 | Е12 | - | |
АОЗ | 74 | С1 | 58 | ВЕ1# | 32 | С13 | - | |
А09 | 75 | D3 | 59 | ВЕ2# | 33 | В13 | - | |
А10 | 76 | D2 | 60 | ВЕЗ# | 38 | А13 | - | |
All | 77 | D1 | 61 | ВНЕ# | - | - | 19 | |
А12 | 78 | E3 | 62 | BLE# | - | - | 17 | |
А13 | 79 | Е2 | 64 | BS16# | 29 | С14 | - | |
А14 | 81 | Е1 | 65 | BUSY# | 46 | В9 | 34 | |
А15 | 82 | F1 | 66 | CLK2 | 24 | F12 | 15 | |
А16 | 84 | G1 | 70 | D/C# | 41 | All | 24 | |
А17 | 86 | HI | 72 | ERRORS | 47 | А8 | 36 | |
А18 | 87 | Н2 | 73 | FLT# | 54 | - | 28 | |
А19 | 88 | H3 | 74 | HLDA | 8 | М14 | 3 | |
А20 | 89 | .11 | 75 | HOLD | 28 | D14 | 4 | |
А21 | 93 | К1 | 76 | INTR | 53 | В7 | 40 | |
А22 | 94 | К2 | 79 | LOCK# | 42 | С10 | 26 | |
А23 | 95 | L1 | 80 | M/IO# | 40 | А12 | 23 | |
А24 | 96 | L2 | - | N/C | 36, 37, 39, 59, 60,61, 62,63 | А4, В4, В6, В12, С6, С7, Е13, F13, | 20, 27, 29, 30, 31,43, 44,45, 46,47 | |
А25 | 97 | КЗ | - | |||||
А26 | 98 | Ml | - | |||||
А27 | 100 | Nl | - | |||||
А28 | 101 | L3 | - | |||||
А29 | 102 | М2 | - | NA# | 30 | D13 | 6 | |
АЗО | 103 | PI | - | NMI | 52 | В8 | 38 | |
А31 | 104 | N2 | - | PEREQ | 50 | С8 | 37 | |
DOO | 20 | Н12 | 1 | READY# | 26 | G13 | 7 | |
D01 | 19 | Н13 | 100 | RESET | 45 | С9 | 33 | |
D02 | 18 | Н14 | 99 | W/R# | 43 | В10 | 25 | |
D03 | 17 | J14 | 96 | Vcc | 2, 16, 22, 34, 49, 56, 58, 73, 85,99, 106, 110, 117, 123, 127 | А1.А5, А7, А10, А14, С5, С12, D12, G2, | 8,9, 10,21, 32, 39,42, 48, 57, 69, 71, 84,91, | |
D04 | 15 | К14 | 95 | |||||
DOS | 14 | К13 | 94 | |||||
D06 | 13 | L14 | 93 | G3, G12, G14, L12, МЗ, М7, М13, N4, N7, Р2, Р8 | 97 | |||
D07 | 12 | К12 | 92 | |||||
DOS | 9 | L13 | 90 | |||||
D09 | 7 | N14 | 89 | |||||
D10 | 6 | М12 | 88 | |||||
Dll | 5 | N13 | 87 | |||||
D12 | 4 | N12 | 86 | |||||
D13 | 3 | Р13 | 83 | Vss | 1, 10, 11, 21, 23,25, 35, 44, 48,51, 55, 57, 64, 65, 66, 80, 83, 90, 91,92, 105, 111, 114, 122, 132 | А2, А6, А9, В1, В5,В11, В14,С11, F2, F3, F14, J2,J3, J12.J13, М4, М8, М10, N3, Р6, Р14 | 2,5, 11, 12, 13, 14, 22, 35, 41,49, 50, 63, 67, 68, 77, 78, 85,98 | |
D14 | 131 | Р12 | 82 | |||||
D15 | 130 | Mil | 81 | |||||
D16 | 129 | Nil | - | |||||
D17 | 128 | N10 | - | |||||
D18 | 126 | Pll | - | |||||
D19 | 125 | P10 | - | |||||
D20 | 124 | M9 | - | |||||
D21 | 121 | N9 | - | |||||
D22 | 120 | Р9 | - | |||||
D23 | 119 | N8 | - | |||||
D24 | 118 | Р7 | - | |||||
D25 | 116 | N6 | - | |||||
D26 | 115 | Р5 | - |
Таблица 7. Назначение сигналов процессора 386
Сигнал | I/O | Назначение | |
CLK2 | I | Clock — внешний сигнал синхронизации процессора | |
D[31:0] * | I/O | Data — сигналы шины данных | |
A[31:2] * | O | Address — сигналы шины адреса | |
ВЕ[0:3]# * | O | Byte Enable — сигналы, указывающие на используемые байты шины данных в данном цикле шины | |
BS16# # | I | Bus Size 16 — сигнал, по которому внешние устройства могут сообщить о разрядности своей шины данных, равной 16 бит | |
BLE#, ВНЕ# * | O | Byte Low Enable, Byte High Enable - аналоги ВЕО# и ВЕ1# | |
W/R# | O | Write/Read — сигнал, определяющий тип шинного цикла (запись/чтение) | |
M/IO# | O | Memory/ I0# Select — высокий уровень указывает на обращение к памяти (или останов), низкий — на обращение к портам ввода-вывода или подтверждение прерывания | |
D/C# | O | Data/Control# — сигнал, определяющий тип шинного цикла (высокий уровень при передачи данных памяти или ввода-вывода, низкий — при выборке кода, в цикле подтверждения прерывания или при останове) | |
ADS# | O | Address Status — сигнал идентификации адресного цикла, во время которого действительны сигналы W/R#, D/C#, М/Ю#, ВЕ[0:3] и А[31:2] | |
NA# | I | Next Address — запрос следующего адреса при конвейерной адресации | |
READY# | I | Bus Ready — сигнал завершения шинного цикла. Шинный цикл расширяется на неограниченное время до появления сигнала готовности (низкий уровень) | |
LOCK# | O | Bus Lock — сигнал монополизации управления шиной, вырабатывается на время выполнения инструкции по префиксу LOCK и автоматически при выполнении инструкций XCHG с памятью, подтверждения прерывания и доступа к таблицам дескрипторов | |
INTR | I | Interrupt Request — сигнал запроса (высоким уровнем) маскируемого прерывания | |
Сигнал | I/O | Назначение | |
NMI | I | Non Mascable Interrupt - сигнал, высокий уровень которого вызывает немаскируемое прерывание NMI | |
RESET | I | Сигнал аппаратною сброса (высоким уровнем) | |
HOLD HLDA | I/O | Bus Hold Request и Hold Acknowledge — запрос управления локальной шиной от другого контроллера и подтверждение предоставления | |
PEREQ | I | Processor Extension Operand Request — запрос на передачу операнда сопроцессором | |
BUSY# ERRORS | I I | Processor Extension Busy и Error — сигналы состояния сопроцессора. Активность сигнала BUSY# останавливает процессор, а сигнала ERROR вызывает исключения при исполнении инструкций WAIT и некоторых инструкций ESCAPE | |
FLT# | I | Float — сигнал, принудительно переводящий все выходы в высокоимпе-дансное состояние для обеспечения возможности подключения тестового оборудования к плате без извлечения процессора. Имеется только у процессоров с корпусами PQFP |
|