Počítadlo programu - Program counter

Přední panel počítače IBM 701 představený v roce 1952. Světla uprostřed zobrazují obsah různých registrů. Čítač instrukcí je v levém dolním rohu.

Programový čítač ( PC ), obyčejně nazvaný instrukce ukazatel ( IP ) v Intel x86 a Itanium mikroprocesory , a někdy nazvaný adresa instrukce registr ( IAR ), je čítač instrukcí , nebo jen jeho část návodu sekvenceru, je procesor registr , který označuje, kde je počítač ve své programové sekvenci.

Obvykle je počítač po načtení instrukce zvýšen a obsahuje adresu paměti („ ukazuje na“) další instrukce, která by byla provedena.

Procesory obvykle načítají instrukce postupně z paměti, ale instrukce pro řízení přenosu mění sekvenci tím, že do počítače vloží novou hodnotu. Patří mezi ně větve (někdy nazývané skoky), volání podprogramů a návraty . Převod, který je podmíněn pravdivostí nějakého tvrzení, umožňuje počítači sledovat odlišnou sekvenci za různých podmínek.

Větev poskytuje, že další instrukce je načtena z jiného místa v paměti. Volání podprogramu nejen větví, ale někde uloží předchozí obsah počítače. Návrat načte uložený obsah počítače a umístí jej zpět do počítače a obnoví postupné provádění pomocí instrukce následující po volání podprogramu.

Hardwarová implementace

V jednoduché centrální procesorové jednotce (CPU) je PC digitální čítač (který je původem výrazu „programový čítač“), který může být jedním z několika hardwarových registrů . Instrukční cyklus začíná s aport , ve kterém CPU umisťuje hodnotu PC na adresové sběrnici jej poslat do paměti. Paměť reaguje odesláním obsahu tohoto paměťového místa na datové sběrnici . (Toto je počítačový model uloženého programu , ve kterém jeden paměťový prostor obsahuje jak spustitelné instrukce, tak běžná data.) Po načtení CPU pokračuje v provádění a provede nějakou akci na základě obsahu paměti, který získala. V určitém okamžiku tohoto cyklu bude počítač upraven tak, aby následující prováděná instrukce byla odlišná (obvykle se zvýší tak, že další instrukce je ta, která začíná na adrese paměti bezprostředně následující po posledním paměťovém místě aktuální instrukce) .

Stejně jako ostatní registry procesorů může být PC bankou binárních západek, z nichž každý představuje jeden bit hodnoty PC. Počet bitů (šířka PC) se vztahuje k architektuře procesoru. Například „32bitový“ procesor může používat 32 bitů, aby mohl adresovat 2 32 jednotek paměti. U některých procesorů závisí šířka programového čítače místo toho na adresovatelné paměti; například některé řadiče AVR mají počítač, který se zalomí po 12 bitech.

Pokud je PC binární čítač, může se zvýšit, když se na jeho vstup COUNT UP aplikuje puls, nebo CPU může vypočítat nějakou jinou hodnotu a načíst ji do PC pulzem na svůj vstup LOAD.

K identifikaci aktuální instrukce může být počítač kombinován s jinými registry, které identifikují segment nebo stránku . Tento přístup umožňuje PC s menším počtem bitů za předpokladu, že většina požadovaných paměťových jednotek je v aktuálním okolí.

Důsledky v architektuře strojů

Použití počítače, který obvykle zvyšuje, předpokládá, že to, co počítač dělá, je provádění obvykle lineární sekvence pokynů. Takový počítač je ústředním bodem architektury von Neumanna . Programátoři tedy zapisují sekvenční tok řízení i pro algoritmy, které nemusí být sekvenční. Výsledné „ úzké místo von Neumanna “ vedlo k výzkumu paralelních výpočtů, včetně modelů jiných než von Neumannů nebo datových toků, které nepoužívaly počítač; například namísto zadávání postupných kroků může programátor na vysoké úrovni určit požadovanou funkci a programátor na nízké úrovni může tuto specifikovat pomocí kombinační logiky .

Tento výzkum také vedl ke způsobům, jak zajistit rychlejší běh konvenčních procesorů založených na PC, včetně:

  • Pipelining , ve kterém různý hardware v CPU provádí různé fáze více instrukcí současně.
  • Architektura velmi dlouhého instrukčního slova (VLIW), kde jediná instrukce může dosáhnout více efektů.
  • Techniky předpovídání provádění mimo objednávku a příprava následných pokynů pro provedení mimo běžnou sekvenci.

Důsledky v programování na vysoké úrovni

Moderní programovací jazyky na vysoké úrovni stále následují model sekvenčního provádění a běžný způsob identifikace programovacích chyb je skutečně s „prováděním procedury“, při kterém prst programátora identifikuje místo provedení jako PC. Jazyk na vysoké úrovni je v podstatě strojový jazyk virtuálního stroje, příliš složitý na to, aby byl vytvořen jako hardware, ale místo toho jej emuloval nebo interpretoval software.

Nové programovací modely však převyšují programování sekvenčního provádění:

  • Při psaní vícevláknového programu může programátor psát každé vlákno jako posloupnost instrukcí, aniž by specifikoval načasování jakékoli instrukce vzhledem k instrukcím v jiných vláknech.
  • V programování řízeném událostmi může programátor psát sekvence instrukcí, které mají reagovat na události, aniž by specifikoval celkovou sekvenci programu.
  • V programování datových toků může programátor psát každou část výpočetního kanálu, aniž by specifikoval časování vzhledem k ostatním částem.

Symbol

Prodejci používají různé znaky k symbolizaci počitadla programu v programech jazyka sestavení . Zatímco použití znaku „$“ převládá v dokumentaci procesorů Intel , Zilog , Texas Instruments , Toshiba , NEC , Siemens a AMD , Motorola , Rockwell Semiconductor , Microchip Technology a Hitachi místo toho používají znak „*“, zatímco SGS-Thomson Mikroelektronika používá „PC“.

Viz také

Poznámky

Reference