Articles

Mi az akkumulátor?


Legjobb válasz

Az akkumulátor olyan objektum, amely fokozatosan nyomon követi az összegek számát, amelyre szükség van az eszközök, a szórás, a perc hatékony számításához , max stb. ahelyett, hogy minden alkalommal újraszámolnunk kellene.

Válasz

Engedje meg, hogy kissé pontosítsam a kérdését: Mi a különbség egy akkumulátoros utasításkészlet-architektúra és egy általános célú regiszter-utasításkészlet-architektúra között?

Ez két pontot képvisel az utasításkészletek tervezési terében. Fontolja meg, hogy mit kell tennie a CPU utasításainak. Egyelőre fontolja meg a kiszámítás utasításokat. Legalább a következő információkat kell megadnia:

  • Milyen számítást kell végrehajtani (összeadni, kivonni, eltolni, összehasonlítani)
  • Milyen értékekkel kell elvégezni a számítást ( a számítás bemenetei)
  • Hová tegyük az eredményt (a számítás kimenetét)

Például, ha a magas szintű program utasítást írtam X = Y + Z, meg kell szólítania a processzort, hogy töltse le az Y és Z értékeket, adja hozzá őket, és írja be az eredményt az X-be.

Egy akkumulátor architektúrában a legtöbb a számítási utasítások az akkumulátor néven ismert speciális regiszteren működnek. A legtöbb műveletnél tehát az akkumulátor implicit argumentumként szerepel az utasításban. Az akkumulátor vagy bemenetet ad az utasításhoz, megkapja az utasítás kimenetét, vagy mindkettőt. A X = Y + Z végrehajtásához akkumulátor-alapú gépen az utasítássor nagyjából így néz ki:

  • Y betöltése az akkumulátorba
  • Z hozzáadása az akkumulátorhoz
  • Az akkumulátor tárolása az X-be

Ha összetettebb kifejezésem volt, például: “I = J + K + L + M + N + O “, a sorrend így nézhet ki:

  • J betöltése az akkumulátorba
  • K hozzáadása az akkumulátorhoz
  • L hozzáadása a akkumulátor
  • M hozzáadása az akkumulátorhoz
  • N hozzáadása az akkumulátorhoz
  • O hozzáadása az akkumulátorhoz
  • Az akkumulátor tárolása az I

Mivel a legtöbb művelet az akkumulátort vonja maga után, annak megadásához nem kell dedikálni semmilyen opcode bitet. Mint már korábban említettem, az akkumulátor implicit . Magában a gépben az akkumulátort közvetlenül a számtani egységbe is be lehet építeni, ezzel leegyszerűsítve a hardvert.

Általános célú regiszterarchitektúrában az utasításokat kell kiszámítani. s több argumentumot kell megadnia, hogy mely regiszterekből olvasson értékeket. Ez rugalmasabbá teszi őket. De a rugalmasság költséggel jár: Több opcode-bitre van szüksége annak meghatározásához, hogy mely regisztereket kell működtetni, és meg kell adnia az összes regiszter elérési útját a számtani egységhez.

A fenti példa kifejezésekhez , a kód végül nem tűnik másként:

  • Y betöltése az R0 regiszterbe
  • Z betöltése az R1 regiszterbe
  • R0 hozzáadása az R1-hez, amivel az eredmény az R2-ben
  • Tárolja az R2-et X-be

Az általános célú nyilvántartó gépek előnyt mutatnak, amikor számos művelet során értékeket tarthat a nyilvántartásokban. Tegyük fel például, hogy ezt a kissé bonyolultabb programot akartam futtatni:

X = A + B

Y = A - B

Egy akkumulátoros gépben mindkét művelethez újra kell töltenem A és B elemeket. Egy általános rendeltetésű gépben csak egyszer töltenék be A-t és B-t.

Az általános célú regiszter-gépeken belül többféle változat is létezik: (Ez a felsorolás nem teljes; egyes architektúrák keverik ezeket a fogalmakat. )

  • Regisztráció-memória: Egy operandus egy regiszterből származik, egy operandus pedig a memóriából.
  • Register-Register, 2-address: Mindkét operandus regiszterekből származik, de az eredménynek felül kell írnia az egyik bemenetet.
  • Register-Register, 3-address: Mindkét operandus származik regisztrál, és az eredmény eljuthat a saját regiszterébe.

Az x86 processzor például egy Register-Memory gép, amely kétcímű Register-Register utasításokat is kínál. A legtöbb RISC gép 3 címû Register-Register gép, külön rakodási / tárolási utasításokkal. Mindkettő általános célú nyilvántartó gép.

Hasonlítsa össze ezeket a 6502 -vel, amely egy akkumulátoros gép. A legtöbb számtan (összeadás, kivonás, rotáció és eltolás) az A regiszteren működik. A másik két regiszter, X és Y, csak a növekményt, a csökkentést és az összehasonlítást támogatja; elsősorban memória- és hurokszámlálók indexelésére használják.

A harmadik architektúra típus, amelyet nem említett, a verem architektúra . A verem architektúra hasonló az akkumulátor architektúrához, mivel a számítás teljes összege egyetlen pontra összpontosul. A különbség az, hogy a verem architektúra mindig egy veremből olvassa el az argumentumait, és az eredményeket mindig a veremre rakja.A számítási utasítás és kimenetei egyaránt implicitek. Ezután más utasításoknak kezelniük kell az értékeket a verembe és az értékeket a veremből.

Nem találsz sok veremarchitektúrát a tényleges chipekben. De népszerűek az értelmezőkben (például Java bytecode) , vagy FORTH), és bizonyos számológépekben, például a HP RPN-alapú számológépeiben.

Vélemény, hozzászólás?

Az email címet nem tesszük közzé. A kötelező mezőket * karakterrel jelöltük