- Регистр процессора
-
Эта статья включает описание термина «IP»; см. также другие значения.
Регистр процессора — блок ячеек памяти, образующий сверхбыструю оперативную память (СОЗУ) внутри процессора; используется самим процессором и большой частью недоступен программисту: например, при выборке из памяти очередной команды она помещается в регистр команд (англ.), к которому программист обратиться не может.
Имеются также регистры, которые в принципе программно доступны, но обращение к ним осуществляется из программ операционной системы, например, управляющие регистры и теневые регистры дескрипторов сегментов. Этими регистрами пользуются в основном разработчики операционных систем.
Существуют также так называемые регистры общего назначения (РОН), представляющие собой часть регистров процессора, использующихся без ограничения в арифметических операциях, но имеющие определенные ограничения, например в строковых. РОН, не характерные для эпохи мейнфреймов типа IBM/370[1] стали популярными в микропроцессорах архитектуры X86 — i8085, i8086 и последующих[2].
Специальные регистры[3] содержат данные, необходимые для работы процессора — смещения базовых таблиц, уровни доступа и т. д.
Часть специальных регистров принадлежит устройству управления, которое управляет процессором путём генерации последовательности микрокоманд.
Доступ к значениям, хранящимся в регистрах, как правило, в несколько раз быстрее, чем доступ к ячейкам оперативной памяти (даже если кеш-память содержит нужные данные), но объём оперативной памяти намного превосходит суммарный объём регистров (объём среднего модуля оперативной памяти сегодня составляет 1-4 Гб[4], суммарная «ёмкость» регистров общего назначения/данных для процессора Intel 80386 и более новых 32 битов * 8 = 256 бит).
Содержание
Архитектура x86
IP (англ. Instruction Pointer) — регистр, обозначающий смещение следующей команды относительно кодового сегмента.
IP — 16-битный (младшая часть EIP)
EIP — 32-битный аналог (младшая часть RIP)
RIP — 64-битный аналог
Сегментные регистры — регистры, указывающие на сегменты.
CS (англ. Code Segment), DS (англ. Data Segment), SS (англ. Stack Segment), ES, FS, GS
В реальном режиме работы процессора сегментные регистры содержат адрес начала 64Kb сегмента, смещенный вправо на 4 бита.
В защищенном режиме работы процессора сегментные регистры содержат селектор сегмента памяти, выделенного ОС.
CS — указатель на кодовый сегмент. Связка CS:IP (CS:EIP/CS:RIP — в защищенном/64-битном режиме) указывает на адрес в памяти следующей команды.
Регистры данных — служат для хранения промежуточных вычислений.
RAX, RCX, RDX, RBX, RSP, RBP, RSI, RDI, R8 — R15 — 64-битные
EAX, ECX, EDX, EBX, ESP, EBP, ESI, EDI, R8D — R15D — 32-битные (extended AX)
AX, CX, DX, BX, SP, BP, SI, DI, R8W — R15W — 16-битные
AH, AL, CH, CL, DH, DL, BH, BL, SPL, BPL, SIL, DIL, R8B — R15B — 8-битные (половинки 16-ти битных регистров)
например, AH — high AX — старшая половинка 8 бит
AL — low AX — младшая половинка 8 бит
RAX RCX RDX RBX EAX ECX EDX EBX AX CX DX BX AH AL CH CL DH DL BH BL RSP RBP RSI RDI Rx ESP EBP ESI EDI RxD SP BP SI DI RxW SPL BPL SIL DIL RxB где x — 8..15.
Регистры RAX, RCX, RDX, RBX, RSP, RBP, RSI, RDI, Rx, RxD, RxW, RxB, SPL, BPL, SIL, DIL доступны только в 64-битном режиме работы процессора.Регистр флагов FLAGS (16 бит) / EFLAGS (32 бита) / RFLAGS (64 бита) — содержит текущее состояние процессора.
Регистром называется функциональный узел, осуществляющий приём, хранение и передачу информации. Регистры состоят из группы триггеров, обычно D. По типу приёма и выдачи информации различают 2 типа регистров:
- С последовательным приёмом и выдачей информации — сдвиговые регистры.
- С параллельным приёмом и выдачей информации — параллельные регистры.
Сдвиговые регистры представляют собой последовательно соединённую цепочку триггеров. Основной режим работы — сдвиг разрядов кода от одного триггера к другому на каждый импульс тактового сигнала.
По назначению регистры различаются на:
- аккумулятор — используется для хранения промежуточных результатов арифметических и логических операций и инструкций ввода-вывода;
- флаговые — хранят признаки результатов арифметических и логических операций;
- общего назначения — хранят операнды арифметических и логических выражений, индексы и адреса;
- индексные — хранят индексы исходных и целевых элементов массива;
- указательные — хранят указатели на специальные области памяти (указатель текущей операции, указатель базы, указатель стека);
- сегментные — хранят адреса и селекторы сегментов памяти;
- управляющие — хранят информацию, управляющую состоянием процессора, а также адреса системных таблиц.
Счётчик команд
IP
IP (англ. Instruction Pointer) — регистр, содержащий адрес-смещение следующей команды, подлежащей исполнению, относительно кодового сегмента CS в процессорах семейства x86.
Регистр IP связан с CS в виде CS:IP, где CS является текущим кодовым сегментом, а IP — текущим смещением относительно этого сегмента.
Регистр IP является 16-разрядным регистром-указателем. Кроме него, в состав регистров этого типа входят SP (англ. Stack Pointer — указатель стека) и BP (англ. Base Pointer — базовый указатель).
- Принцип работы
Например, CS содержит значение
2CB5[0]H
, в регистре IP хранится смещение123H
.Адрес следующей инструкции, подлежащей исполнению, вычисляется путем суммирования адреса в CS (сегменте кода) со смещением в регистре IP:
2CB50H + 123H = 2CC73H
Таким образом, адрес следующей инструкции для исполнения равен
2CC73H
.При выполнении текущей инструкции процессор автоматически изменяет значение в регистре IP, в результате чего регистровая пара CS:IP всегда указывает на следующую подлежащую исполнению инструкцию.
EIP
Начиная с процессора 80386 была введена 32-разрядная версия регистра-указателя — EIP. В данном случае IP является младшей частью этого регистра (первые 16 разрядов). Принцип работы EIP в целом схож с работой регистра IP. Основная разница состоит в том, что в защищённом режиме, в отличие от реального режима, регистр CS является селектором (селектор указывает не на сам сегмент в памяти, а на его дескриптор сегмента в таблице дескрипторов).
RIP
В 64-разрядных процессорах используется свой регистр-указатель инструкций — RIP.
Младшей частью этого регистра является регистр EIP.
На основе RIP в 64-разрядных процессорах введён новый метод адресации RIP-relative. В остальном работа RIP аналогична работе регистра EIP.
См. также
Примечания
- ↑ Barbara J. Burian Программирование на языке ассемблера системы IBM/370 упрощённый подход = A simple approach to S/370 assembly language programming. — New Jersy: Prentice-Hall, Inc, 1977.
- ↑ Погорелый С. Д., Слободянюк Т. Ф. Программное обеспечение микропроцессорных систем. Справочник. — 2-е, переработанное и дополненное. — К: Тэхника, 1989. — С. 7, 48-51. — 301 с. — (Справочник специалиста). — 50 000 экз. — ISBN 5-335-00169-0
- ↑ Intel 64 and IA-32 Architectures Software Developer’s Manual. Volume 1: Basic Architecture. 3.4 BASIC PROGRAM EXECUTION REGISTERS (англ.)
- ↑ Статистика объёма оперативной памяти ПК, используемых для игр
Это заготовка статьи о компьютерах. Вы можете помочь проекту, исправив и дополнив её.
Это примечание по возможности следует заменить более точным.Технологии цифровых процессоров Архитектура CISC · EDGE · EPIC · MISC · URISC · RISC · VLIW · ZISC · Фон Неймана · Гарвардская
8 бит · 16 бит · 32 бит · 64 бит · 128 битПараллелизм Pipeline Конвейер · In-Order & Out-of-Order execution · Переименование регистров · Speculative execution Уровни Бит · Инструкций · Суперскалярность · Данных · Задач Потоки Многопоточность · Simultaneous multithreading · Hyperthreading · Superthreading · Аппаратная виртуализация Классификация Флинна SISD · SIMD · MISD · MIMD Реализации DSP · GPU · SoC · PPU · Векторный процессор · Математический сопроцессор • Микропроцессор · Микроконтроллер Компоненты Barrel shifter · FPU · BSB · MMU · TLB · Регистровый файл · control unit · АЛУ • Демультиплексор · Мультиплексор · Микрокод · Тактовая частота • Корпус • Регистры • Кэш (Кэш процессора) Управление питанием APM · ACPI · Clock gating · Динамическое изменение частоты • Динамическое изменение напряжения Микроконтроллеры Архитектура 8-бит MCS-51 • MCS-48 • PIC • AVR • Z8 • H8 • COP8 • 68HC08 • 68HC11 16-бит MSP430 • MCS-96 • MCS-296 • PIC24 • MAXQ • Nios • 68HC12 • 68HC16 32-бит ARM • MIPS • AVR32 • PIC32 • 683XX • M32R • SuperH • Nios II • Am29000 • LatticeMico32 • MPC5xx • PowerQUICC • Parallax Propeller Производители Analog Devices • Atmel • Silabs • Freescale • Fujitsu • Holtek • Hynix • Infineon • Intel • Microchip • Maxim • Parallax • NXP Semiconductors • Renesas • Texas Instruments • Toshiba • Ubicom • Zilog • Cypress Компоненты Регистр • Процессор • SRAM • EEPROM • Флеш-память • Кварцевый резонатор • Кварцевый генератор • RC-генератор • Корпус Периферия Таймер • АЦП • ЦАП • Компаратор • ШИМ-контроллер • Счётчик • LCD • Датчик температуры • Watchdog Timer Интерфейсы CAN • UART • USB • SPI • I²C • Ethernet • 1-Wire ОС FreeRTOS • μClinux • BeRTOS • ChibiOS/RT • eCos • RTEMS • Unison • MicroC/OS-II • Nucleus Программирование JTAG • C2 • Программатор • Ассемблер • Прерывание • MPLAB • AVR Studio • MCStudio Категории:- Технологии процессоров
- Архитектура компьютеров
- Программирование x86
- Обработка команд
Wikimedia Foundation. 2010.