Архитектура ЭВМ10.ppt
- Количество слайдов: 23
Процессор Intel (32 -разрядный) Модели: • Intel 80386 (i 386). Работал на частотах 1640 МГц. Появился в 1985 году. • Intel 80486 (i 486). Первый суперскалярный процессор Intel. Тактовые частота: 16— 150 МГц. Появился в 1989 году. • Pentium (i 586). 60— 233 МГц, 1993 г. Имеет полностью переработанный и очень мощный на то время блок FPU.
Процессор Intel (32 -разрядный) • • • Модели: Pentium II. Модификации сделали процессор более дешевым. 233 — 450 МГц, 1997 г. Celeron. Упрощенная модификация Pentium III. 450 МГц — 1, 4 ГГц, 1999 г. Pentium 4. 1300— 3800 МГц, 2000 г. Core i 3/Core i 5/Core i 7. С 2006 г.
Процессор Intel (32 -разрядный) Режимы работы • Реальный режим (real mode). Процессор выполняет 16 -разрядные инструкции и адресует 1 Мбайт памяти. (аналогично процессорам 8086, 80286) • Защищенный режим (protected mode). Процессор выполняет 32 -разрядные инструкции, имеет аппаратную поддержку виртуальной памяти.
Процессор Intel (32 -разрядный) Регистры • Регистры общего назначения; • Регистры сегментов; • Указатель инструкций; • Регистр флагов; • Управляющие регистры; • Регистры системных адресов;
Процессор Intel (32 -разрядный) Регистры общего назначения
Процессор Intel (32 -разрядный) Регистры сегментов ссылаются на дескрипторы сегментов памяти — описатели, в которых содержатся параметры сегментов
Процессор Intel (32 -разрядный) Указатель инструкций и регистр флагов Указатель инструкций EIP адрес текущей инструкции. Регистр флагов EFLAGS содержит признаки, характеризующие результат выполнения операции, например флаг знака, флаг нуля, флаг переполнения, флаг переноса.
Процессор Intel (32 -разрядный) Управляющие регистры хранят признаки и данные, характеризующие общее состояния процессора
Процессор Intel (32 -разрядный) Структура команды: Максимальный размер команды – 16 байт
Процессор Intel (32 -разрядный) Префикс 1. Префиксы блокировки и повторения: 0 x. F 0 LOCK 0 х. F 2 REPNZ (только для строковых инструкций). 0 x. F 3 REP (только для строковых инструкций). 2. Префиксы переопределения сегмента: 0 х2 E CS: 0 х36 SS: 0 х3 E DS: 0 х26 ES: 0 х64 FS: 0 х65 GS: 3. Префикс переопределения размеров операндов: 0 х66 4. Префикс переопределения размеров адреса: 0 х67
Процессор Intel (32 -разрядный) Префиксы блокировки и повторения Префикс "LOCK" указывает процессору на необходимость монопольного захвата шины. Это позволяет синхронизовать обращения к памяти, предотвращая одновременный доступ нескольких процессоров (или устройств - контроллера DMA например) к одной ячейке памяти. Два префикса повторений повторяют следующую за ними строковую инструкцию ECX раз, каждый раз уменьшая ECX
Процессор Intel (32 -разрядный) Префиксы переопределения сегмента указывают какой именно сегментной регистр следует использовать для обращения к ячейке памяти. Префикс переопределения размеров операндов: если он встречается в 32 -разрядном коде, то процессор интерпретирует операнды следующей за ним инструкции как 16 -разрядные и, соответственно, наоборот. Префикс переопределения размеров адреса: указывает на длину адресного поля, а не операнда.
Процессор Intel (32 -разрядный) Код операции Поле "опкод" занимает от одного до двух байт, а при необходимости еще три бита поля mod. R/M
Процессор Intel (32 -разрядный) Поле mod. R/M Содержит информацию об операндах и режиме адресации. Используется не для всех команд. mod=00 Операнд находится в памяти, адрес находится в регистре, код регистра хранится в R/M. mod=01 К адресу прибавляется значение поля «Смещение» (8 бит) mod=10 Смещение 32 бита mod=11 Операнды находятся в регистрах
Процессор Intel (32 -разрядный) Коды регистров По коду регистра нельзя однозначно определить регистр, для этого необходимо анализировать код операции
Процессор Intel (32 -разрядный) Адресация с индексами mod=00 • R/M=100 Адрес определяется полем SIB • R/M=101 32 -разрядный адрес хранится в поле «Смещение» mod=01 • R/M=100 Поле SIB+8 -битное «Смещение» mod=10 • R/M=100 Поле SIB+32 -битное «Смещение»
Процессор Intel (32 -разрядный) Поле SIB Base - базовый регистр Index – индексный регистр Scale - степень двойки для масштабирования. Например, если Scale=01, адрес будет вычислен как [ Base+(Index*2) ]
Процессор Intel (32 -разрядный) Примеры: add ah, bl 00000010 11100011 (02 E 3 h) Опкод= 00000010 ADD r 8, r/m 8 mod=11 – регистры reg=100 – регистр ah R/M=011 – регистр bl
Процессор Intel (32 -разрядный) Примеры: add al, 3 00000100 00000011 (0403 h) Опкод= 00000100 ADD AL, imm 8 00000011 – непосредственное значение
Процессор Intel (32 -разрядный) Примеры: add eax, i 000000011 00000101 00001111 0000 10100011 Опкод= 00000011 ADD r 16/32 , r/m 16/32 mod=00 – операнд в памяти reg=000 – регистр eax R/M=101 – для mod=00 32 -битный адрес в поле смещение 0 FFF 00 A 3 h – смещение, адрес переменной i
Процессор Intel (32 -разрядный) Примеры: add i, eax 00001 00000101 00001111 0000 10100011 Опкод= 00000001 ADD r/m 16/32 , r 16/32 mod=00 – операнд в памяти reg=000 – регистр eax R/M=101 – для mod=00 32 -битный адрес в поле смещение 0 FFF 00 A 3 h – смещение, адрес переменной i
Процессор Intel (32 -разрядный) Примеры: add eax, [ebx+esi] 000000011 00000100 0011 Опкод= 00000011 ADD r 16/32 , r/m 16/32 mod=00 – операнд в памяти reg=000 – регистр eax R/M=100 – Адрес в поле SIB scale=00 index=110 – регистр esi base=011 – регистр ebx
Процессор Intel (32 -разрядный) Примеры: add eax, A[esi] 000000011 10000110 00001111 0000 10100011 Опкод= 00000011 ADD r 16/32 , r/m 16/32 mod=10 – операнд в памяти, 32 -разрядное смещение + регистр reg=000 – регистр eax R/M=110 – Регистр esi 0 FFF 00 A 3 h – смещение, адрес массива A