Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
x64b.pdf
Скачиваний:
72
Добавлен:
10.02.2015
Размер:
4.62 Mб
Скачать

Архитектура современной вычислительной системы (обзор)

ЦПУ

 

Видео

Rn

АЛУ

контроллер

 

 

УУ

 

ОЗУ

Контроллер

 

 

клавиатуры

 

 

Общая шина

 

 

Сетевой

Контроллер

 

 

управления

Шина

 

адаптер

 

дисками

 

 

 

 

Сеть

Диск0

 

Диск1

 

 

 

 

P6

 

Блок

 

 

 

 

 

 

P6

Предсказание переходов

согласования

 

 

 

 

 

Предсказ

 

 

результатов

 

 

 

 

 

 

Предвыборка/

Очередь команд

Разупорядоченное ядро

Предвыбор

декодирование

 

декодирова

Кэш-память

Кэш-память

Конвейер

 

 

 

 

 

ФУ1

ФУ

 

...

ФУ

 

 

1го уровня

1го уровня

 

 

 

2

 

 

N

 

(инструкции)

(данные)

Конвейер

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Кэш-память

ФУ1

ФУ2 ...

ФУN

Кэш

 

 

 

 

 

 

 

 

 

2го уровня

Конвейер

 

 

 

 

2го у

 

 

 

 

 

 

 

 

 

ФУ

1

ФУ2 ...

ФУN

 

 

 

 

 

 

 

 

 

 

Устройство сопряжения

 

Регистры (Rn)

 

 

Устройство

 

с шиной

 

 

 

с ш

 

 

 

 

 

 

 

 

- УУ выбирает команду для исполнения

 

 

Локальная шина

 

 

 

 

- получить эффективный адрес исполняемой инструкции

 

 

 

 

 

 

 

 

 

- вычислить физический адрес инструкции

 

 

 

 

северный

 

 

 

 

- послать по шине запрос на считывание кода инструкции

 

западный

 

 

мост

восточный

 

 

 

- сохранить код операции во внутреннем регистре

 

 

 

 

 

 

 

- УУ анализирует полученную инструкцию и осуществляет выборку операндов

 

мост

 

 

 

мост

 

 

 

 

 

 

GMCH

 

 

 

 

- для каждого операнда, размещенного в памяти:

Видео

(AGP)

 

 

Шина памяти

 

- получить эффективный адрес операнда

контроллер

 

контроллер-

 

 

 

 

- вычислить физический адрес операнда

 

 

концентратор

 

 

 

 

- послать по шине запрос на считывание операнда

 

 

 

памяти

 

 

 

 

- поместить операнд во внутренний регистр

 

 

 

 

 

 

 

 

 

 

 

 

ОЗУ

ОЗУ

ОЗУ

ОЗУ

- УУ передает команду в АЛУ (если команда выполняется в АЛУ)

 

 

 

 

 

- АЛУ выполняет команду и сохраняет результат во внутреннем регистре

 

южный

(HI)

(HI)

(HI)

 

 

 

 

- УУ сохраняет результат в операнде-приёмнике

 

 

 

 

 

 

мост

 

 

 

 

- послать по шине запрос на запись операнда (приёмник обычно является

 

 

 

 

 

 

 

 

 

одним из источников и его адрес уже известен)

 

 

 

IOCH

 

 

Сеть

 

Основные понятия:

 

 

 

Сетевой

 

 

 

контроллер-

 

 

- частота, ширина, арбитраж и протокол шины

 

 

адаптер

 

 

 

 

концентратор

 

 

- прерывания, исключения, остановы, программные прерывания

 

 

 

 

 

 

 

 

ввода-вывода

 

 

 

 

- устройства, управляющие шиной (master-bus)

 

 

 

 

 

 

- блокировка шины (сигнал #lock шины, инструкции с префиксом lock)

 

 

 

 

 

(PCI)

 

 

- SMP (MPP, NUMA, cc-NUMA, CUMA)

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Повышение производительности процессора:

 

 

 

 

 

 

 

 

(USB)

- конвейерные процессоры, RISC и CISC

 

PS/2

контроллер

 

мост

(USB)

Разветвитель

 

 

- цена ветвлений, спекулятивное исполнение, предсказание переходов, условные присваивания

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

(USB)

- параллелизм кода, VLIW и суперскалярные процессоры

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

- упреждающее чтение, разупорядоченные чтения и запись, барьеры памяти

 

 

 

контроллер

 

 

 

 

Повышение производительности памяти (кэширование):

 

 

 

(EIDE)

 

 

 

 

 

 

 

 

 

 

 

- сквозная (write-through) и отложенная (write-back) запись в кэш

Диск 0

(SATA)

 

контроллер

 

 

 

 

- прямой, ассоциативный и множественно-ассоциативные кэши

 

 

 

 

 

 

 

 

 

 

 

 

 

 

- когеррентность кэш-памяти, MESI

 

 

 

 

 

CD-ROM

 

 

Кэши ассоциативные, с прямым отображением и множественно-ассоциативные

 

 

 

Длина строки кэша = 32

 

(25)

 

 

Адрес 0x24C = 0b0010 0100 1100

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

00 04 08 0C 10 14 18 1C

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

5 бит

 

5 бит

 

 

 

 

 

 

0000

 

 

 

xx xx xx xx xx xx xx xx

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

0020

 

 

 

xx xx xx xx xx xx xx xx

 

 

 

 

Тэг

 

Смещение

 

 

 

 

 

 

0040

 

 

 

xx xx xx xx xx xx xx xx

 

 

 

 

 

 

 

 

 

строкикэша

0060

 

 

 

 

 

 

 

 

 

 

10010

 

01100

 

 

 

 

 

строки)(25 кэша

0140

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

0080

 

 

 

 

 

 

 

отображение

Тэг=0x12

 

Смещение=0xC

 

 

 

 

00A0

 

 

 

 

 

 

 

строки кэша

 

 

 

 

 

00C0

 

 

 

 

 

 

 

определяется

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

00E0

 

 

 

 

 

 

 

её тэгом

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

0100

 

 

 

 

 

 

 

Длина строки кэша = 32 (25)

 

 

 

 

0120

 

 

 

 

 

 

 

 

 

(25)

0160

 

 

 

 

 

 

 

 

Тэг «Время»

 

00 04 08 0C 10 14 18 1C

 

 

 

 

32

 

0180

 

 

 

 

 

 

 

 

#0x00

123

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

8 (23) строк

=ОЗУОбъем1K (210) или 32

0340

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

ОЗУОбъем= 1K (210) или

 

 

01A0

 

 

 

 

 

 

 

 

#0x14

87

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

01C0

 

 

 

 

 

 

 

 

#0x12

54

 

 

 

 

 

xx xx xx xx xx xx xx xx

 

 

 

 

 

 

 

 

01E0

 

 

 

xx xx xx xx xx xx xx xx

 

 

#0x02

3

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

0200

 

 

 

xx xx xx xx xx xx xx xx

 

 

#0x11

986

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

0220

 

 

 

xx xx xx xx xx xx xx xx

 

 

#0x0F

64

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

0240

 

 

 

xx xx xx xx xx xx xx xx

 

 

#0x01

28

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

0260

 

 

 

 

 

 

 

 

#0x10

11

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

0280

 

 

 

xx xx xx xx xx xx xx xx

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

при вытеснении

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

02A0

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

выбирается самая

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

02C0

 

 

 

 

 

 

 

 

 

«старая» строка

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

02E0

 

 

 

 

 

 

 

 

(LRU -Least Recently Used)

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

0300

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

0320

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

0360

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

0380

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

03A0

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

03C0

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

03E0

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

В приведенных иллюстрациях предполагается использование кэш-памяти объемом 256

 

 

байт (28) со строками длиной 32 байта (25) каждая (т.е. кэш содержит 8 (23) строк); общий

 

 

 

 

объем ОЗУ составляет 1К (210 байт, 25 строк).

 

 

 

 

 

 

 

 

 

 

 

 

 

Ассоциативный кэш — любая строка кэша может быть отображена в любую строку ОЗУ;

 

 

текущее отображение задается тэгом строки. При обращении к данным необходим поиск

кэша

строки с нужным тэгом в кэше; в случае промаха выполняется поиск и вытеснение самой

«старой» (LRU) строки.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

строки)5

кэш-памяти, каждая строка кэша может быть сопоставлена со строкой ОЗУ из

Кэш с прямым отображением

— каждой строке ОЗУ сопоставлена только одна строка

 

 

ограниченного набора (строк, отстоящих друг от друга на расстояние, равное размеру кэш-

(2

32

памяти). При обращении к данным номер строки кэш-памяти однозначно определяется

или

адресом, попадание или промах определяется совпадением тэга адреса с тэгом строки

10)

кэша.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1K (2

Множественно-ассоциативный кэш — каждой строке ОЗУ сопоставлена группа из

нескольких возможных строк кэша (зона). Каждая зона организована как небольшой (4-8-16

=

строк, редко больше) ассоциативный кэш. При обращении к данным в ОЗУ номер

ОЗУ

проверяемой зоны однозначно определяется адресом; внутри зоны используют LRU или

Объем

псевдо-LRU. (Часто множественно-ассоциативный кэш размером 2N строк рассматривают не как набор 2N-K зон по 2K строк, а как 2K банков по 2N-K строк каждый; строка в банке определяется прямым отображением, выбор нужного банка — LRU).

 

Длина строки кэша = 32

 

 

(25)

 

 

Адрес 0x24C = 0b0010 0100 1100

 

 

 

 

 

 

 

 

 

 

00 04 08 0C 10 14 18 1C

 

 

 

 

 

 

 

 

 

0000

 

 

 

 

 

 

 

 

 

 

2 бита

 

 

 

 

3 бита

 

 

 

 

 

 

5 бит

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

0020

 

 

 

 

 

 

 

 

 

 

 

Тэг

 

 

 

 

Строка

 

 

 

 

 

Смещение

 

 

0040

 

 

xx xx xx xx xx xx xx xx

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

10

 

 

 

010

 

 

 

 

 

 

01100

 

 

0060

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

0080

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Тэг=2

Строка=2

Смещение=0xC

00A0

 

 

 

 

 

 

 

 

 

 

00C0

 

 

 

 

 

 

 

тэги совпадают → кэш

 

 

 

 

 

 

 

 

 

 

 

 

 

 

00E0

 

 

 

 

 

 

 

содержит нужную строку

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

0100

 

 

 

 

 

 

 

Длина

строки кэша = 32 (2

 

 

 

 

 

 

 

 

 

0120

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

0140

 

 

xx xx xx xx xx xx xx xx

 

Тэг

 

00 04 08 0C 10 14 18 1C

 

N

 

 

 

 

 

 

0160

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

0180

 

 

 

 

 

 

 

 

#1

 

 

 

 

 

 

 

 

 

 

 

 

 

(0)

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

01A0

 

 

 

 

 

 

 

 

#0

#2

 

xx xx xx xx xx xx xx xx

(1)

строк)3

 

 

 

0200

 

 

 

 

 

 

 

 

#0

 

(4)

 

 

 

01C0

 

 

 

 

 

 

 

 

 

 

(2)

 

 

 

 

 

 

01E0

 

 

 

 

 

 

 

 

#2

 

 

 

 

 

 

 

 

 

 

 

 

 

(3)

 

 

 

 

 

 

0220

 

 

 

 

 

 

 

 

#3

 

 

 

 

 

 

 

 

 

 

 

 

 

(5)

8 (2

 

 

 

 

0240

 

 

xx xx xx xx xx xx xx xx

 

#1

 

 

 

 

 

 

 

 

 

 

 

 

 

(6)

 

 

 

 

0260

 

 

 

 

 

 

 

 

#0

 

 

 

 

 

 

 

 

 

 

 

 

 

(7)

 

 

 

 

 

 

0280

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

02A0

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

02C0

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

02E0

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

0300

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

0320

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

0340

 

 

xx xx xx xx xx xx xx xx

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

0360

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

0380

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

03A0

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

03C0

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

03E0

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Длина строки кэша = 32

 

(25)

 

 

Адрес 0x24C = 0b0010 0100 1100

 

 

 

 

 

 

 

 

 

00 04 08 0C 10 14 18 1C

 

 

 

 

 

 

 

0000

 

 

 

 

 

 

 

 

 

 

 

3 бита

 

2 бита

 

 

 

 

 

5 бит

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

0020

 

 

 

 

 

 

 

 

 

 

 

Тэг

 

Зона

 

 

 

 

Смещение

 

 

0040

 

 

xx xx xx xx xx xx xx xx

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

100

 

 

 

 

10

 

 

 

 

 

 

01100

 

 

0060

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

0080

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

отображение строкиТэг=4

 

Зона=2

Смещение=0xC

00A0

 

 

 

 

 

 

 

 

00C0

 

 

xx xx xx xx xx xx xx xx

кэша определяется

 

 

 

 

 

 

 

 

 

 

 

 

 

 

00E0

 

 

 

 

 

 

 

её тэгом и зоной

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

0100

 

 

 

 

 

 

 

 

Длина строки кэша = 32 (25)

 

 

 

 

 

 

 

0120

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

0140

 

 

xx xx xx xx xx xx xx xx

 

Тэг «Время»

 

00 04 08 0C 10 14 18 1C

 

N

 

 

0160

 

 

 

 

 

 

 

 

 

 

 

 

0180

 

 

 

 

 

 

 

 

#0

 

34

 

 

 

 

 

 

 

 

 

 

 

 

 

 

(0)

 

 

01A0

 

 

 

 

 

 

 

 

#5

 

8

 

 

 

 

 

 

 

 

 

 

 

 

 

 

строк

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

(1)

01E0

 

 

 

 

 

 

 

 

#0

 

321

 

 

 

 

 

 

 

 

 

 

 

 

 

 

01C0

 

 

xx xx xx xx xx xx xx xx

 

#4

 

25

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

0200

 

 

 

 

 

 

 

 

#1

 

14

 

 

 

 

 

 

 

 

 

 

 

 

 

 

(2)

)

0220

 

 

 

 

 

 

 

 

#4

 

83

 

 

 

 

xx xx xx xx xx xx xx xx

(23

0240

 

 

xx xx xx xx xx xx xx xx

 

#7

 

56

 

 

 

 

 

 

 

 

 

 

 

 

 

 

(3)

8

0260

 

 

 

 

 

 

 

 

#2

 

97

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

0280

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

адрес определяет зону

 

 

 

 

 

 

 

 

 

02A0

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

02C0

 

 

xx xx xx xx xx xx xx xx

 

для размещения строки;

 

 

 

 

 

 

 

 

 

02E0

 

 

 

 

 

 

 

внутри зоны используется LRU

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

0300

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

0320

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

0340

 

 

xx xx xx xx xx xx xx xx

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

0360

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

0380

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

03A0

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

03C0

 

 

xx xx xx xx xx xx xx xx

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

03E0

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Представление бинарных данных

 

 

 

 

 

 

 

 

 

Основная проблема с точки зрения человека — разные порядки нумерации слов в тексте

При использовании разных систем счисления (наиболее распространены

(или последовательности чисел) и цифр в числах:

 

 

 

системы с основаниями 2, 8, 16 — степенями двойки) используется

Слова или числа - слева-направо:

 

 

 

 

 

 

позиционная форма записи чисел. При этом самый младший разряд

 

 

 

 

 

 

Первое → Второе → Третье → Четвертое … т.е. нумерация «ячеек памяти», куда

пишется самым последним, правым. (Видимо, унаследовано от

 

 

 

 

 

 

помещаются «слова» идет слева-направо:0..1..2..3..4... и т.п.

 

«обратного» направления арабского письма - справа-налево).

 

 

 

 

 

 

 

Цифры в числе (арабская запись) - справа-налево:

 

 

 

Двоичное

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

… 4 ← 3 ← 2 ← 1 ← 0

 

 

 

 

 

 

 

 

00100010101101010011011111100100

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

последняя цифра представляет собой младший (первый) разряд в числе.

Восьмиричное

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

т.е. нумерация разрядов идет справа-налево: ...4..3..2..1..0

00 100 010 101 101 010 011 011 111 100 100

 

 

 

0

4

2

5

 

5

2

3

3

7

4

4 = 04255233744

При воспроизведении, к примеру, 16ти разрядного образа памяти, байты (или слова, или

Шестнадцатиричное

 

 

 

 

 

 

 

 

 

 

 

 

 

двойные слова и т.п.) обычно перечисляются в привычном нам порядке слов, а вот разряды

0010 0010 1011 0101 0011 0111 1110 0100

 

 

 

 

в числах — в арабском.

 

 

 

 

 

 

 

 

 

2

 

2

B

 

5

3

 

7

 

 

E

4 = 0x22B537E4

Например, последовательность чисел 0x04030201, 0x08070605, 0x000B0A09 будет

_TEXT segment byte public 'CODE' use16

 

 

.code16

 

 

 

 

 

 

 

 

 

 

представлена как:

 

 

 

 

 

 

 

 

 

 

assume cs:_TEXT

 

 

 

 

 

 

 

 

.section .text

 

 

 

04030201

 

08070605

 

000B0A09

 

- в виде списка двойных слов

org 100h

 

 

 

 

 

 

 

 

 

.=0x100

 

 

 

 

0201

0304

0605

0807

0A09

000B

- в виде списка слов

start:

 

 

 

 

 

 

 

 

 

 

start:

 

 

 

 

 

int 20h

 

 

 

 

 

 

 

 

int $0x20

 

 

 

01

02

03

04

05

06

07

08

09

0A

0B

00

- в виде списка байт

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

0

1

2

3

4

5

6

7

8

9

A

B

 

 

 

dd 01234567h, 89ABCDEFh

 

 

 

 

 

.long 0x01234567

 

 

 

 

 

 

 

 

 

 

Такой порядок называется «Little-Endian» — в меньших адресах размещаются младшие

 

 

db 'Sample String', 0

 

 

 

 

 

.long 0x89ABCDEF

 

 

 

 

 

 

 

 

 

(«меньшие») байты.

 

 

 

 

 

 

 

 

 

_TEXT ends

 

 

 

 

 

 

 

 

 

 

.ascii 'Sample String'

 

 

 

 

 

 

 

 

 

 

end start

 

 

 

 

 

 

 

 

 

 

.byte 0

 

 

 

В некоторых вычислительных архитектурах принят более «человеческий» порядок записи

 

 

 

 

 

 

 

 

 

 

 

 

 

чисел, когда порядок перечисления байтов в словах (или двойных словах) совпадает с

 

 

 

 

 

 

 

 

 

 

 

 

.end start

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

порядком перечисления разрядов (бит) в числе. Такой порядок называется «Big-Endian» —

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

по меньшему адресу размещаются старшие байты. Представление при этом зависит от

 

0100

═ gE#☻∩═½ёSample String.........

 

 

 

 

размера данных, для которых применяется big-endian; например, для 16ти разрядных чисел

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

дамп выглядел бы так:

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

04030201

 

08070605

 

000B0A09

 

- в виде списка двойных слов

 

 

 

g

E

#

½ ё

S a

m p

l e

 

 

 

 

 

0100

cd 20 67 45 23 01 ef cd ab 89 53 61 6d 70 6c 65

 

0201

0403

0605

0807

0A09

000B

- в виде списка слов

 

 

 

S

t

r

i

n

g . . . . . . . . .

 

02

01

04

03

06

05

08

07

0A

09

00

0B

- в виде списка байт

 

0110

20 53 74 72 69 6e 67 00 00 00 00 00 00 00 00 00

 

0

1

2

3

4

5

6

7

8

9

A

B

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Последний вариант используют реже, так как с точки зрения человека «перестановки»

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

E g

 

☻ #

═ ∩

 

ё ½

 

a S

p m

e l

 

 

 

устраняются лишь для чисел ограниченной разрядности и только лишь размещаемым по

 

0100

20cd 4567 0123 cdef 89ab 6153 706d 656c

 

 

 

выровненным адресам; умножим, к примеру, на 10016 с переносом разрядов:

 

 

 

S

r t n i . g . . . . . . . .

 

 

 

03020100

 

07060504

 

0B0A0908

 

- в виде списка двойных слов

 

0110

5320 7274 6e69 0067 0000 0000 0000 0000

 

 

 

 

 

 

 

 

 

 

0100

0302

0504

0706

0908

0B0A

- в виде списка слов

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

01

00

03

02

05

04

07

06

09

08

0B

0A

- в виде списка байт

 

 

 

E g ═ ═ ∩ ☻ # a S ё ½ e l p m

 

 

 

 

 

 

 

 

 

 

 

0

1

2

3

4

5

6

7

8

9

A

B

 

 

0100

456720cd cdef0123 615389ab 656c706d

 

 

 

 

 

 

 

 

 

 

с точки зрения разработчиков самой вычислительной системы удобнее использовать little-

 

 

 

r t S

 

. g n i . . . . . . . .

 

 

 

 

 

 

 

 

 

 

 

 

endian, так как в нем предполагаются совпадающие порядки перечислений и слов и

 

0110

72745320 00676e69 00000000 00000000

 

 

 

 

 

 

 

 

 

разрядов (тот же пример с умножением для little-endian):

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

03020100

 

07060504

 

0B0A0908

 

- в виде списка двойных слов

 

e l p m a S ё ½ ═ ∩ ☻ # E g

 

 

 

 

 

 

 

 

 

 

0100

0302

0504

0706

0908

0B0A

- в виде списка слов

 

65 6c 70 6d 61 53 89 ab cd ef 01 23 45 67 20 cd

0100

 

 

 

 

 

00

01

02

03

04

05

06

07

08

09

0A

0B

- в виде списка байт

 

. . . . . . . . . g n i r t S

 

 

 

 

 

 

 

0

1

2

3

4

5

6

7

8

9

A

B

 

 

00 00 00 00 00 00 00 00 00 67 6e 69 72 74 53 20

0110

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Режимы работы процессоров семейства i8086+

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

• В универсальных ЦПУ обычно используют пул регистров общего

 

 

 

 

 

 

 

 

 

 

«Истинный 64х-разрядный» режим

 

назначения (РОН), которые могут быть использованы как в качестве

 

адресных регистров, так и регистров данных.

 

 

 

 

 

 

(страничная адресация)

 

 

 

 

• Разрядность регистров общего назначения, шины даных и шины

 

 

 

 

 

Защищенный режим i80386+

 

адресов в общем случае различается.

 

 

 

 

 

 

 

 

 

 

Подрежим

(селектор:смещение + страничная адресация)

• Если разрядность ША превышает разрядность регистров общего

 

 

 

 

Виртуальный i8086 (V86)

 

назначения, то необходимо комбинировать содержимое нескольких

поддержки старых

 

 

 

 

(сегмент:смещение + страничная адресация)

 

регистров (возможно, используя помимо РОН еще и специальные

режимов «IA-32e»

 

 

 

 

 

 

Защищенный режим i80286

 

регистры), для получения реально используемого адреса (т.н.

 

 

 

 

(64х-разрядный

 

 

 

 

 

 

 

(селектор:смещение)

 

физического).

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

для ОС и

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Режим реальных адресов i8086 «A20 Enabled»

• Фиксированные схемы преобразования адресов; обычно реализуется

32х-разрядный для

 

 

 

 

 

с применением специализированных регистров (ACP, сегментные

приложений)

 

 

 

 

(сегмент:смещение)

 

регистры и т.п.), задающих базовый адрес, который автоматически

 

 

 

 

Режим реальных адресов i8086

 

 

 

 

 

 

 

 

 

 

 

прибавляется (иногда с масштабированием) к адресу, указанному в

 

 

 

 

 

 

 

 

 

(сегмент:смещение)

 

программе.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Защищенный режим i80386+

• Управляемые схемы преобразования адресов; для этого используют

 

 

 

 

 

 

 

 

 

 

(селектор:смещение + страничная адресация)

 

специальные структуры данных (размещенные обычно в

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

«IA-32»

 

 

 

Виртуальный i8086 (V86)

 

физической оперативной памяти, реже в специальной области

 

 

 

 

 

 

 

 

 

процессора):

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

(сегмент:смещение + страничная адресация)

 

• Сегментная (сегмент переменного, обычно большого размера;

Режим

 

 

 

 

Защищенный режим i80286

 

адресация в пределах сегмента непрерывна; могут

 

 

 

 

 

 

совместимости

 

(селектор:смещение)

 

перекрываться в физической памяти).

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Режим реальных адресов i8086 «A20 Enabled»

 

• Страничная (странница фиксированного размера, обычно

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

(сегмент:смещение)

 

небольшого 0.5-8 К, обычно выровнены по адресам, кратным

 

 

 

 

 

 

 

 

 

 

размеру страницы).

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Режим реальных адресов i8086

 

• Сегментно-страничная (комбинированная схема, когда для

 

 

 

 

 

 

 

 

 

 

 

 

 

(сегмент:смещение)

 

каждого сегмента описывается своё страничное преобразование;

4 PB (252)

 

 

 

4 GB (232)

16 MB (224) 1 MB (220)

 

улучшает управление сегментами в физической памяти).

 

 

 

 

 

 

 

 

 

 

 

 

• Логический адрес

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

адрес, которым оперирует программист;

 

Эффективный (логический) адрес

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

(программа)

15 0 15 0

15 0 15 0

 

15 0 31

0

 

15 0 31

0

 

15 0 63 47

0

 

• Эффективный адрес

 

 

 

SSSS

:

OOOO

 

SSSS

:

OOOO

 

 

SSSS

:

OOOO OOOO

 

 

SSSS

:

OOOO OOOO

 

SSSS

:

ssss OOOO OOOO OOOO

 

логический адрес, вычисленный УУ с учетом режима

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

(сегмент)

 

 

(селектор)

(селектор)

(селектор)

 

(селектор)

 

 

адресации;

 

 

 

 

 

 

 

 

• Физический адрес

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Сегментное

 

Сегментное

 

Сегментное

 

Сегментное

 

Коррекция адреса

 

адрес, который процессор устанавливает на шине

 

преобразование преобразование

преобразование

преобразование

 

 

 

адресов для чтения или записи данных в ОЗУ или при

 

 

 

 

 

 

 

 

 

 

 

 

 

 

обмене данными с устройствами;

 

Линейный адрес

 

 

 

 

32 23

0

63

47

0

63

47

0

• Преобразвание адреса

 

(только для УУ процессора)

 

FFFF FFFF

SSSS FFFF FFFF FFFF

ssss FFFF FFFF FFFF

1) реализовано в УУ процессора, а не АЛУ (включая

 

 

 

 

 

 

многие операции адресной арифметики —

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

индексирование, масштабирование и т.п.)

 

 

 

 

 

 

Страничное

 

Страничное

 

Страничное

 

2) выполняется при каждом обращении к внешним

 

 

 

 

 

 

 

 

 

данным (выборке инструкции, считывании каждого

 

 

 

 

 

 

преобразование

преобразование

преобразование

операнда и т.п.)

 

 

Физический адрес

19

0

23 19

0

32 23

0

63

51

0

63

51

0

Легенда:

i8086

i80286

(шина)

 

 

 

 

 

 

 

 

F FFFF

FF FFFF

FFFF FFFF

000F FFFF FFFF FFFF

000F FFFF FFFF FFFF

 

i80386..i80686

x64 (AMD64, EM64T)

 

 

 

 

 

1 MB

 

16 MB

 

4 GB

 

 

4 PB

 

 

4 PB

 

 

 

 

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]