Wort- oder byteadressierbar? Richtige Terminologie


9

Scheinbar hat sich ein Byte als 8-Bit etabliert (ist das richtig?). Auf RAM und NOR-Flash kann normalerweise auf einer recht detaillierten Ebene zugegriffen werden. Es liegt jedoch an der Systemarchitektur, zu bestimmen, ob die kleinste adressierbare Einheit 8 Bit, 16 Bit oder eine andere Potenz mit zwei Bit ist. Wäre die richtige Terminologie, dieses Wort adressierbar zu nennen? Oder anders gefragt, hat ein Wort die Größe der kleinsten adressierbaren Einheit? Oder gibt es einen anderen Begriff, um dies zu beschreiben?

Sind Mabye-Knabbereien, Bytes, Wörter und Doppelwörter alle in der Bitlänge variabel und nur durch die Architektur definiert? Und es ist also nur Zufall, dass ein Byte immer 8 Bit ist? Zum Beispiel könnte jemand einen neuen CPU- und Speichertyp entwerfen und ihr Byte als 16-Bit definieren?

Hauptfrage: Was ist der genaue Begriff für den kleinsten adressierbaren Speicherblock?

Nebenfrage: Was ist der Antonyme zu diesem Wort, das ich suche (zB in NAND-Flash verwendet)? Seitenadressierbar, Blockadressierbar? Sind beide richtig oder ist einer ungenau?

Antworten:


9

Aus Sicht der Computerarchitektur und mit der Einschränkung, dass die Nomenklatur manchmal variiert, insbesondere wenn es eine Familie verwandter Architekturen gibt, die sich seit langer Zeit entwickelt hat, oder wenn die Marketingabteilung entscheidet, dass die üblichen Begriffe in einer anderen verwendet werden müssen Weg (entweder um das Produkt durch die Verwendung einer größeren Zahl in ein besseres Licht zu rücken, oder um eine einfache Zahl zu haben, um mehr oder weniger verwandte Produkte zu unterscheiden).

Ein Wort hat die Größe, die normalerweise für Ganzzahloperationen verwendet wird (häufig ausgedrückt als Größe der Ganzzahl- oder der Allzweckregister, dh nicht Adresse oder Daten, interne oder externe Busse, keine Adressregister, keine Indexregister). Ein häufiges Problem ist, dass, wenn eine Architektur eine Weiterentwicklung einer vorherigen ist, häufig der Begriff Wort für die Anfangsgröße beibehalten wird und "Doppelwort" oder "Vierfachwort" für ein Wort verwendet wird, wenn Sie sich die Architektur in ansehen Isolation. Historisch gesehen waren Wörter nicht immer eine Zweierpotenz (ich kenne Größen: 12, 16, 18, 24, 32, 36, 60, 64 und ich denke nicht, dass mein Wissen erschöpfend ist).

Wortadressierbar bedeutet, dass der Speicher als Array von Wörtern betrachtet wird und somit keine kleinere Einheit eine individuelle Adresse hat.

Ein Byte hat verschiedene Definitionen. Der Begriff wurde eingeführt, um die Einheit zu bezeichnen, die bei der Zeichenkodierung zu einem Zeitpunkt verwendet wurde, als es keine Mehrbytekodierung gab. Es wird oft verwendet, um die kleinste adressierbare Einheit für Maschinen zu bezeichnen, die nicht wortadressierbar sind (und solange es sich nicht um ein Bit handelt). Ich glaube nicht, dass diese beiden Definitionen jemals eine andere Größe gegeben haben. (noch eine andere Größe als 6 oder 8 Bit). Für wortadressierbare Maschinen bedeutet dies häufig, dass eine Einheit kleiner als ein Wort ist, für das die Maschine Unterstützung bietet (zum Beispiel hatte der PDP-10 - ein 36-Bit-wortadressierbarer Computer - Byteanweisungen, die jede Größe von 1 bis 35 oder manipulieren konnten 36 Bit). Heutzutage sind es auch oft 8 Bits. Oft sind mehrere dieser Definitionen praktisch gleichwertig.

Byteadressierbar kennzeichnet Maschinen, bei denen der Speicher als Arrays von Bytes in einer der oben genannten Bedeutungen betrachtet wird.

AFAIK Nibble wurde nur für 4-Bit-Mengen verwendet.

Zum Beispiel könnte jemand einen neuen CPU- und Speichertyp entwerfen und ihr Byte als 16-Bit definieren?

Ja, aber ich bin mir nicht sicher, ob es sinnvoll wäre, dies zu tun, wenn die CA-Verwendung beibehalten wird, um Byte für etwas zu verwenden, das kleiner als das Wort ist. Ein wortadressierbarer 16-Bit-Prozessor ohne Unterstützung für etwas Kleineres als ein Wort kann eine gute Wahl für einen Spezialprozessor sein.

Zweitens, was ist der Antonyme zu diesem Wort, das ich suche? Seitenadressierbar, Blockadressierbar?

Bitadressierbar, Byteadressierbar und Wortadressierbar sind die einzigen Begriffe, die ich verwendet habe. Es macht wenig Sinn, nur Einheiten anzusprechen, die auf architektonischer Ebene größer sind als das Wort. Word-adressierbar wird heutzutage nur für Spezialprozessoren wie DSP verwendet. Ich glaube nicht, dass die Bitadressierbarkeit für etwas anderes als einen speziellen Zweck verwendet wurde, mit Ausnahme von IBM Stretch.

Über Ihre neue Hauptfrage

Was ist der genaue Begriff für den kleinsten adressierbaren Speicherblock?

Ich kenne keine in der Computerarchitektur verwendete ( Byte wurde für etwas verwendet, das in wortadressierbaren Maschinen kleiner ist), aber es ist die Definition, die C für Byte verwendet .


Danke für die ausführliche Antwort. Als ich meine Frage noch einmal las, bemerkte ich, dass ich etwas vage war, deshalb suche ich immer noch nach einer eindeutigen Antwort, die Sie vielleicht noch zu Ihrer Antwort hinzufügen könnten: Was ist der genaue Begriff für den kleinsten adressierbaren Speicherblock? Oder gibt es keine? Außerdem habe ich den von Ihnen zitierten Satz geändert. Vielen Dank.
Franz Kafka

1
Bitbanding-Bereiche auf einigen Mikrocontroller-ISAs können als Bitadressierung gelten. Ein Teil des Adressraums übersetzt Wortadressen (zumindest in ARM Cortex-M) in Bitadressen. Offensichtlich unterstützt dies nur die Bitadressierung für einen kleinen Teil des gesamten Adressraums (nur 2 MB von 4 GB für Cortex-M3). Die Adressierbarkeit von Befehlssätzen unterscheidet sich auch von der Adressierbarkeit von Hardware (z. B. ist NAND-Flash seitenadressierbar, DRAM ist häufig bei Cache-Block-Granularität adressierbar, L1-Cache ist normalerweise maximal adressierbar [bei kleineren Schreibvorgängen erfordert ECC RMW].)
Paul A. Clayton

@ PaulA.Clayton Ich kannte den Begriff Bitbanding nicht, aber ich kannte den 8051, der ihn auch bietet. Ich würde einen ISA nicht als bitadressierbar betrachten, nicht mehr als den PDP-10 als byteadressierbar, er scheint zu verschieden von üblichen Datenpfaden zu sein.
AProgrammer

@AProgrammer Ich bin nicht sicher, wie ich die ISA-Adressierbarkeit definieren würde. Das Definieren einer solchen gemäß der kleinsten Einheit der externen Adressierung, die in einem einzelnen Befehl unterstützt wird, ergibt eine andere Antwort als das Definieren einer solchen Einheit gemäß der Einheit der Adressierbarkeit einer "gewöhnlichen Adresse / eines Zeigers" (die Bitbanding und Adresse / Zeiger und Feiner ausschließt) -grained-offset-Mechanismen). Letzteres (das Sie gewählt haben) scheint in einigen Kontexten natürlicher zu sein, Ersteres kann jedoch in anderen Kontexten sinnvoll sein. Atomizität (Wrt-Interrupts oder Wrt-Cache-Kohärenz) kann ebenfalls berücksichtigt werden (Anweisungen können nicht atomar sein).
Paul A. Clayton

1
@ PaulA.Clayton, ich habe versucht, mich an die auf diesem Gebiet etablierte Praxis zu halten, aber es ist ein Gebiet, das Zwischenzustände liebt, und ich habe weder das Talent noch die Kultur von Andy Glew, um eine erschöpfende, aber verständliche Beschreibung geben zu können.
AProgrammer

1

Der Burroughs B1700 war bitadressierbar (tatsächlich bezog sich die Adresse auf den Raum zwischen den Bits, aus dem Sie eine beliebige Anzahl von Bits vorwärts oder rückwärts lesen konnten). (Es war also nicht nur IBMs Stretch, was ein Fehler war.)

Die B1700 wurde als flexibelste Maschine konzipiert. Anwendungen sollten nicht auf Bitebene geschrieben werden, sondern unterschiedliche Umgebungen, die für unterschiedliche Anwendungsstile erstellt wurden. Diese Umgebungen wurden in Mikrocode programmiert und stellen die Engines der virtuellen Maschine bereit. Jede Sprachlaufzeit (System SDL für OS, COBOL für Unternehmen, FORTRAN für COBOL) wurde als separate mikrocodierte Umgebung geschrieben. Somit könnte die Architektur auf zukünftige Anwendungsstile zugeschnitten werden.

Wayne Wilner, einer der Designer, machte darauf aufmerksam, dass andere Maschinen der damaligen Zeit Programmierer dazu zwangen, im prokrustischen Bett aus Bytes und Wörtern fester Größe zu liegen. In jeder Laufzeitumgebung waren Datenstrukturen erforderlich, die für die Anwendung geeignet waren. Leider sind die meisten aktuellen Maschinenarchitekturen immer noch prokrustisch (und daher in Sprachen wie C programmiert, die diese Maschinenstruktur verfügbar machen, anstatt problemorientierte Strukturen zu unterstützen).

Weitere Informationen zu dieser faszinierenden Maschine und ihrer Philosophie finden Sie unter:

http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.590.2624&rep=rep1&type=pdf

und im Detail:

http://ianjoyner.name/Files/Wilner.pdf

Warum wird der B1700 nicht mehr hergestellt?

Burroughs verfügte über drei Hauptcomputerbereiche: die großen Systeme B5000-B7000 (ALGOL-Architektur), die mittleren Systeme B2000-B4000 (COBOL-Architektur) und die kleinen Systeme B1000 (Architektur nach Belieben).

Die großen Systeme waren sehr teuer, bis zum B5900, der auf einem billigen Prozessor mikrocodiert wurde, um die ALGOL-Stack-Maschine bereitzustellen. Jack Allweis, der Designer des B5900, hat darauf hingewiesen, dass die große Systemarchitektur auf kleine Computer verkleinert wurde, der B1700 jedoch billig und nicht skalierbar war.

So starb die B1700 bis B1900, obwohl sie zu dieser Zeit sehr erfolgreich war, aus kommerziellen Gründen.

Burroughs große Systeme sind weiterhin als Unisys ClearPath MCP verfügbar und können sogar als Emulation auf Ihrem PC ausgeführt werden.

Als weitere Fußnote war IPC auf dem B1700 ein Problem zwischen verschiedenen virtuellen Maschinen, aber sehr sicher (wie die heutigen Mikrokerne). Auf den großen Systemen wurden alle Prozesse in derselben Umgebung ausgeführt, in der Daten auf sichere Weise gemeinsam genutzt werden konnten, IPC jedoch direkt. Dies liegt etwas zwischen Mikrokernel-Architekturen (Mach) und Nicht-Kernel-Architekturen (Linux). Der B5000 ist jedoch eine sehr sichere Maschine, bietet aber auch eine gute Leistung.

Sicherheit ist derzeit das größte Problem in der Branche, und diese Maschinen sollten wirklich wiederbelebt und untersucht werden, um den Weg in die Zukunft aufzuzeigen.


1

Hauptfrage: Was ist der genaue Begriff für den kleinsten adressierbaren Speicherblock?

Ich werde eine weitere Antwort hinzufügen, um dies auf andere Weise anzugehen. In der elektronischen Hardware nennen wir es die bit-binäre Ziffer. Dies ist eine Entität, die zwei beliebige Werte darstellen kann. Wir denken normalerweise in 0 und 1, aber es können 3 oder 4, 365 oder 266, -3 oder -4 sein, sogar 25 oder 37.

Jedes Signalisierungssystem kann verwendet werden, um diese Werte darzustellen - Flag hoch, Flag runter, Augen offen, Augen geschlossen, + 5 V, -5 V. Das ist nicht wichtig.

Wichtig ist, dass wir philosophisch die kleinste unterscheidende Informationsmenge darstellen. Dies kann ein, aus oder wahr, falsch oder hoch, runter oder 0, 1 sein - alles, was zwei getrennte Zustände unterscheidet. Wir können diese Werte auf jedes der oben genannten Signalisierungssysteme und viele andere abbilden.

Die Frage ist nun, wie wir eine so kleine Menge an Informationen einzeln testen und einstellen können. Wie ich in der vorherigen Antwort sagte, hat sich der B1700 dafür entschieden, diese kleinste Menge an Informationen direkt anzusprechen.

Die meisten Maschinen entschieden sich jedoch dafür, nur größere Informationsmengen zu adressieren. Betrachten wir eine Gruppe von vier Bits mit einer einzelnen Adresse. Wenn wir also an unserem Standort den Wert 1011 erhalten, wie testen wir das zweite Bit von links? Wir verwenden eine Maske: 1011 und 0100 testen nur das zweite Bit. Wie setzen wir das zweite Bit auf 1? Eine kleine CPU-Arithmetik besagt, dass der Wert 15 oder 1111 sein wird, so dass ganze vier Bits in den Speicher zurückgeschrieben werden, obwohl wir wirklich nur ein Bit gesetzt haben.

Dies ist für die meisten Anwendungen nicht sinnvoll. Die meisten Anwendungen repräsentieren Daten oder Informationen, nach oben, unten, wahr, falsch, offen, geschlossen.

Wir wollen Dinge sagen wie:

wenn offen dann ... sonst ... ende

oder eher auf ein größeres Unternehmen anwenden:

Wenn die Tür offen ist, dann - höchstwahrscheinlich 'door.open' ... sonst ... ende

'Tür ist offen' veranschaulicht die hierarchische Adressierung. Die Hauptsystemadressierung gibt der Entitätstür, und die Tür hat eine eigene Adressierung, die den Zugriff auf open (und möglicherweise andere Attribute) ermöglicht.

Die meisten Mengen haben auch mehr als zwei mögliche Werte (eine Menge mit einem Wert ändert sich nie und benötigt daher nicht einmal eine Darstellung, also null Bits). Für diese haben wir Sätze aufgezählt, wie (gelb, grün, blau, lila Dunst, rot). Diese definieren Mengen und Typen und die genaue Anzahl der erforderlichen Bits ergibt sich aus der Anzahl der Werte (log2 (Anzahl der Werte)).

Die optimale Adressierung hängt also wirklich von der in der Anwendung verwendeten Entitätsgröße ab - möglicherweise sogar von Entitäten mit variabler Größe. In der meisten Hardware müssen solche Adressen jedoch in die von der Hardware definierte feste Größe übersetzt werden. Dies könnte natürlich zeitaufwändig sein. Es sollte auch etwas sein, was ein automatischer Übersetzer (Compiler oder Interpreter) tut, nicht ein Programmierer, so wie ein solches System Code zum Testen und Setzen von Bits wie oben generieren würde (wenn Bits nicht direkt adressierbar sind).

Ein wichtiger Punkt dabei ist, nicht in Bezug auf Elektronik zu denken - Elektronik ist nur eine wirklich gute und schnelle Art, Berechnungen zu verarbeiten. Es gibt nichts Magisches an elektronischen Berechnungen, das es ermöglicht, Berechnungen durchzuführen, die Sie sonst nicht durchführen könnten. Die Magie liegt nur in der Geschwindigkeit. Aus diesem Grund sind Abstraktionen auf niedriger Ebene wie Bit-, Byte-, Wort- oder Hardware-Adressierungsmechanismen (Zeiger) wirklich nicht so nützlich.


-2

Unser Computersystem verwendet standardmäßig Byte-adressierbaren Speicher. Seine eine Zelle zeigt auf 8-Bit-Informationen. Die Zellengröße hängt nicht von der Prozessorlänge ab. Im wortadressierbaren Speicher zeigt eine Zelle auf eine Wortinformation, aber die Wortlänge hängt von der Prozessorlänge ab. Wenn wir Wörter verwenden, die adressierbar sind, erzeugt dies eine Mehrdeutigkeit. Daher verwendet unser Computer standardmäßig byteadressierbaren Speicher.


Willkommen auf der Website, aber ich sehe nicht, wie dies die Frage beantwortet.
David Richerby
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.