179288. lajstromszámú szabadalom • Nagyssebességű mikroprogramozott processzor elrendezés
3 179288 4 memóriacím megadható egy regiszterpár tartalma' ként is (indirekt címzés). 2. Aritmetikai és logikai utasítások. Ezeket általában az akkumulátor regiszter és egy konstans, az akkumulátor regiszter és egy memóriarekesz, valamint az akkumulátor regiszter és egy általános célú regiszter között értelmezik. Az eredmény az akku mulátor regiszterben áll elő. 3. Feltételekhez kötött ugró, szubrutinhívó és visszatérő utasítás csoport. Ezek általában zéró túlcsorduláshoz, páros és plusz feltételekhez és ezek negáltjaihoz kötöttek. Egyéb más feltételeknél igényelt elágazásokat programtechnikai eszközökkel ezekre a feltételekre kell visszavezetni. 4. Input-output típusú utasítások általában I/O portok és az akkumulátor regiszter között értelmezettek. A processzoros rendszerekben gyakran előfordul, hogy olyan feladatok ellátására van szükség, amelyek a fenti utasításokkal nem, vagy pedig csak viszonylag lassan végezhetők el. A sebesség megnövelésének és a feladatvégrehajtás során nyújtott szolgáltatások kibővítésének, végül a programozás leegyszerűsítésének a gyakorlatban igen nagy jelentősége van. A mikroprocesszoros rendszerekben a szubrutinra való ugrásokat (JTS utasítás — jump to subrutine) és az onnan való visszatérést stack regiszter segítségével végzik el. A stack funkció ellátásával kapcsolatban az ismert megoldások három fő típusa terjedt el: 1. Külső hardware stack alkalmazása. Az operatív memóriától független LIFO (last in first out) típusú regisztertömb 8—16 mélységben, melybe JTS utasítás esetén az aktuális programcím számláló érték betöltődik, RTS (return to subroutine) utasítás esetén az utolsó beírt programcím számláló érték a kimenetéről visszatöltődik a programcím számlálóba A folyamat automatikus menetéről hardware komp lexumok gondoskodnak (például SIGNETICS 2650). 2. Stackpointer alkalmazása, amely az operatív memóriában tárolt visszatérési címek közül mindig az aktuálisra mutat (INTEL 8080). 3. Egyes processzoros rendszerekben, például a Fairchild F8 rendszere, csak egyszeres mélységű stacket alkalmaznak. Amennyiben többszörös mélységű szubrutin hívások fordulhatnak elő, ennek a memóriába való elmentéséről külön gondoskodni kell, és ez nagymértékben csökkenti a rendszer működési sebességét. Az itt összefoglalt stack kezelésen kívül szükség van ezeknél rugalmasabb, gyorsabb működésű és a különböző ismétlődő feladatokhoz jobban alkalmaz kodó stack kezelés kialakítására. A találmány feladata olyan nagysebességű mikro programozott processzor elrendezés létrehozása, amely egyrészt képes arra, hogy a fentiekben leírt utasításkészletekkel megvalósítható feladatokat gyorsabban oldja meg, további igényeket is ki tudjon elégíteni, ugyanakkor a stack kezelés tekintetében a felsorolt kiképzéstől eltérően különleges stack kezelés biztosításával a műveletvégrehajtást gyorsítsa, és ezzel lehetővé tegye a multiprocesszoros üzemmód szimulálását programtechnikai eszközökkel. Felismertük, hogy a kitűzött feladat megoldásához, tehát az egyidőben lezajló nagysebességű folyamatok vezérlésére a szokásos megközelítési módok helyett olyan processzorelrendezést célszerű létrehozni, amely hardware szempontból egyetlen, software szempontból azonban „n” számú processzorként viselkedik. Ez a többprocesszoros viselkedés természetesen nem azonos a nagyszámítógépeknél alkalmazott REAL TIME üzemmóddal, bár a felhasználó számára ez is virtuálisan többprocesszoros üzemmódnak tűnik. REAL TIME rendszerekben egy virtuális processzor egyszeri tényleges működése igen nagy számú (104—106) összefüggő utasításcsoportot foglal magába, tehát az ilyen rendszerek reagálási ideje gyors folyamatok igényeihez képest irreálisan nagy. A találmány szerint kialakított processzor elrendezésnél az ilyen gyors folyamatokhoz tartozó reagálási idők utasításfinomságú léptékben szabályozhatók, A találmány szerinti processzor elrendezés 1 db V utasítás/sec sebességű, vagy „n” darab olyan proceszszorként működtethető, amelyek sebessége rendre Vi, V2,... Vn utasítás/sec. Amennyiben ez az n számú virtuális processzor n számú vezérelt folyamat vezérlő programjait hajtja végre, a Vt ... Vn sebességek az egyes programok végrehajtásának az átlagsebességei, és érvényes rájuk, hogy Vi+V2+... + vn=v. A találmány szerinti processzor elrendezés többprocesszoros működését az a felismerés tette lehetővé, hogy ha egy hagyományos processzorelemekből felépített struktúrát kiegészítünk egy megfelelően alkalmazott utasítás ciklus számlálóval, továbbá a hagyományos elrendezés általános célú regiszterei közül kettőt speciális feladatra tartalékolunk, és az utasításkészletet kiegészítjük két speciális utasítással, akkor a többprocesszoros üzemmód megvalósítható. A fentiek alapján érthetővé válik a REAL TIME rendszerekkel történő kedvező összehasonlítás is. Fő különbség az, hogy a találmány szerinti processzor elrendezésnél a virtuális többprocesszoros működés megszervezése software eszközökkel az elrendezés elindításakor, de hardware sebességgel történik, és ez nagyon kedvező a REAL TIME rendszerek hosszadalmas software adminisztrációjához képest, ahol a futtatás során folyamatos nagy software igény jelentkezik. Egy hagyományos elemekből felépített processzor struktúrában az utasítás ciklus számláló létezése a fentieken túlmenően lehetőséget nyújt egy az eddig ismert processzoros rendszerekben nem használt utasítás típus létrehozására. Ennek az utasításnak az a célja, hogy alkalmazásával egy már megírt programterületről 2 ... n számú összefüggő utasításcsoportot a program más helyére mintegy beollózzunk egyetlen utasítás segítségével. Ez az eljárás hasonlít a közismert szubrutinhívási technikához, azonban a visszatérés helyét nem a szubrutint lezáró RTS (return from subrutine) utasítás határozza meg, hanem a hívó utasításban specifikálható, ami jelentős programteijedelem megtakarítást tesz lehetővé. 5 10 15 20 25 )0 35 40 45 50 55 S0 65 2