Ðåãèñòð ïðîöåññîðà
Ðåãèñòð ïðîöåññîðà â áëîê ÿ÷ååê ïàìÿòè, îáðàçóþùèé ñâåðõáûñòðóþ îïåðàòèâíóþ ïàìÿòü (ÑÎÇÓ) âíóòðè ïðîöåññîðà; èñïîëüçóåòñÿ ñàìèì ïðîöåññîðîì è áîëüøîé ïàëëåòíûé ÷àñòüþ íåäîñòóïåí ïðîãðàììèñòó: íàïðèìåð, ïðè âûáîðêå èç ïàìÿòè î÷åðåäíîé êîìàíäû îíà ïîìåùàåòñÿ â ðåãèñòð êîìàíä, ê êîòîðîìó ïðîãðàììèñò îáðàòèòüñÿ íå ìîæåò. (Èìåþòñÿ òàêæå ðåãèñòðû, êîòîðûå â ïðèíöèïå ïðîãðàììíî äîñòóïíû, íî îáðàùåíèå ê íèì îñóùåñòâëÿåòñÿ èç ïðîãðàìì îïåðàöèîííîé ñèñòåìû, íàïðèìåð, óïðàâëÿþùèå ðåãèñòðû è òåíåâûå ðåãèñòðû äåñêðèïòîðîâ ñåãìåíòîâ. Ýòèìè ðåãèñòðàìè ïîëüçóþòñÿ â îñíîâíîì ðàçðàáîò÷èêè îïåðàöèîííûõ ñèñòåì).
Ñóùåñòâóþò òàêæå òàê íàçûâàåìûå ðåãèñòðû îáùåãî íàçíà÷åíèÿ (ÐÎÍ), ïðåäñòàâëÿþùèå ñîáîé ÷àñòü ðåãèñòðîâ ïðîöåññîðà, èñïîëüçóþùèõñÿ áåç îãðàíè÷åíèÿ â àðèôìåòè÷åñêèõ îïåðàöèÿõ, íî èìåþùèå îïðåäåëåííûå îãðàíè÷åíèÿ, íàïðèìåð â ñòðîêîâûõ. ÐÎÍ, íå õàðàêòåðíûå äëÿ ýïîõè ìåéíôðåéìîâ òèïà IBM/370[1] ñòàëè ïîïóëÿðíûìè â ìèêðîïðîöåññîðàõ àðõèòåêòóðû X86 â i8085, i8086 è ïîñëåäóþùèõ[2].
Ñïåöèàëüíûå ðåãèñòðû[3] ñîäåðæàò äàííûå, íåîáõîäèìûå äëÿ ðàáîòû ïðîöåññîðà â ñìåùåíèÿ áàçîâûõ òàáëèö, óðîâíè äîñòóïà è ò. ä.
×àñòü ñïåöèàëüíûõ ðåãèñòðîâ ïðèíàäëåæèò óñòðîéñòâó óïðàâëåíèÿ, êîòîðîå óïðàâëÿåò ïðîöåññîðîì ïóò¸ì ãåíåðàöèè ïîñëåäîâàòåëüíîñòè ìèêðîêîìàíä.
Äîñòóï ê çíà÷åíèÿì, õðàíÿùèìñÿ â ðåãèñòðàõ, êàê ïðàâèëî, â íåñêîëüêî ðàç áûñòðåå, ÷åì äîñòóï ê ÿ÷åéêàì îïåðàòèâíîé ïàìÿòè (äàæå åñëè êåø-ïàìÿòü ñîäåðæèò íóæíûå äàííûå), íî îáú¸ì îïåðàòèâíîé ïàìÿòè íàìíîãî ïðåâîñõîäèò ñóììàðíûé îáú¸ì ðåãèñòðîâ (îáú¸ì ñðåäíåãî ìîäóëÿ îïåðàòèâíîé ïàìÿòè ñåãîäíÿ ñîñòàâëÿåò 1-4 Ãá[4], ñóììàðíàÿ «¸ìêîñòü» ðåãèñòðîâ îáùåãî íàçíà÷åíèÿ/äàííûõ äëÿ ïðîöåññîðà Intel 80x86 16 áèòîâ * 4 = 64 áèòà (8 áàéò)).
Ñîäåðæàíèå |
[ïðàâèòü] Àðõèòåêòóðà 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 · Ôîí Íåéìàíà · Ãàðâàðäñêàÿ · |
||||||||
| Ïàðàëëåëèçì |
|
||||||||
| Ðåàëèçàöèè | DSP · GPU · SoC · PPU · Âåêòîðíûé ïðîöåññîð · Ìàòåìàòè÷åñêèé ñîïðîöåññîð Ìèêðîïðîöåññîð · Ìèêðîêîíòðîëëåð | ||||||||
| Êîìïîíåíòû | Barrel shifter · FPU · BSB · MMU · TLB · Ðåãèñòðîâûé ôàéë · control unit · ÀËÓ Äåìóëüòèïëåêñîð · Ìóëüòèïëåêñîð · Ìèêðîêîä · Òàêòîâàÿ ÷àñòîòà Êîðïóñ Ðåãèñòðû Êýø (Êýø ïðîöåññîðà) | ||||||||
| Óïðàâëåíèå ïèòàíèåì | APM · ACPI · Clock gating · Äèíàìè÷åñêîå èçìåíåíèå ÷àñòîòû Äèíàìè÷åñêîå èçìåíåíèå íàïðÿæåíèÿ | ||||||||
| Ìèêðîêîíòðîëëåðû | ||||||||
|---|---|---|---|---|---|---|---|---|
| Àðõèòåêòóðà |
|
|||||||
| Ïðîèçâîäèòåëè | 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 | |||||||

