DE4337437A1 - Leistungsgesteigerte Speicherarchitektur insbesondere für 32-Bit Mikroprozessoren - Google Patents
Leistungsgesteigerte Speicherarchitektur insbesondere für 32-Bit MikroprozessorenInfo
- Publication number
- DE4337437A1 DE4337437A1 DE19934337437 DE4337437A DE4337437A1 DE 4337437 A1 DE4337437 A1 DE 4337437A1 DE 19934337437 DE19934337437 DE 19934337437 DE 4337437 A DE4337437 A DE 4337437A DE 4337437 A1 DE4337437 A1 DE 4337437A1
- Authority
- DE
- Germany
- Prior art keywords
- memory
- address
- burst
- write
- line
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Withdrawn
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/20—Handling requests for interconnection or transfer for access to input/output bus
- G06F13/28—Handling requests for interconnection or transfer for access to input/output bus using burst mode transfer, e.g. direct memory access DMA, cycle steal
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0215—Addressing or allocation; Relocation with look ahead addressing means
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Multi Processors (AREA)
Description
Die Erfindung betrifft eine leistungsgesteigerte Speicherarchitek
tur nach dem Oberbegriff des Hauptanspruchs.
Die vorgegebene Leistungssteigerung soll dadurch erreicht werden,
daß die vorgestellte Speicherarchitektur speziell auf die "Burst-
Fähigkeit" von modernen 32-Bit Prozessoren zugeschnitten ist und
im Vergleich zu konventionellen Speicherarchitekturen durch ein
sogenanntes "Line-Read-Prefetching" und "Line-Write-Delaying" Spei
cherzugriffe mit wesentlich weniger "Wait-States" ermöglicht.
Zur Realisierung des Speicher-Subsystems für 32-Bit Prozessoren
sind derzeit folgende "Speicher-Architekturen" bekannt:
- - Speicher mit "Konventioneller 32-Bit-Architektur" sowie
- - Speicher mit "Einfacher 128-Bit-Architektur".
Während die "Konventionelle 32-Bit-Architektur" keine Merkmale
besitzt, die auf die besonderen Fähigkeiten der 32-Bit Mikropro
zessoren der neuen Generation (wie z. B. MOTOROLA MC68040 oder
INTEL i486) zugeschnitten ist und somit keine Vorteile bezüglich
Verringerung der erforderlichen Wait-States beim Zugriff auf den
Speicher aufzuweisen hat, erlaubt jedoch die "Einfache 128-Bit-
Architektur" bereits "Burst-Read-Zugriffe" mit wesentlich weniger
Wait-States wie bei der "Konventionellen 32-Bit-Architektur".
Ermöglicht wird diese Leistungssteigerung durch einen, an die
speziellen Erfordernisse begrenzt angepaßten Aufbau, bestehend
aus 4 parallel geschalteten 32-Bit Speicherbänken, mit dem Ziel,
während des "Burst-Transfers" den Zugriff auf alle Speicherbänke
und somit auch auf alle 4 Langworte der "Line" gleichzeitig erfol
gen zu lassen, so daß für den Transfer des 2., 3. und 4. Lang-
Wortes bereits keine Wait-States notwendig sind.
Fundstellen:
- 1. MC 68040 Designer′s Handbook (MOTOROLA)
- 2. MC 68040 32-Bit Mikroprozessors User′s Manual (MOTOROLA)
- 3. Mit 128-Bit breiter Speicherarchitektur zu neuen Ufern (Design und Elektronik 11/1990).
Ein Nachteil der "Einfachen 128-Bit Architektur" besteht jedoch
darin, daß beim ersten Lese-Zugriff, dem sogenannten "Initial-
Access" auf eine Line (gleichzeitig 4 Langworte), weiterhin Wait-
States notwendig sind, falls die Zugriffszeit der verwendeten
Speicherelemente nicht ausreicht, um den Zugriff innerhalb der
minimal dafür vorgesehenen Anzahl von "Prozessor-Takt-Perioden"
(z. B. zwei beim MC 68040) durchzuführen.
Weiterhin bietet die "Einfache 128-Bit Architektur" bei "Burst-
Write-Zugriffen" keinerlei Vorteile gegenüber der "Konventionel
len 32-Bit Architektur" bezüglich Reduzierung der Wait-States
beim Zugriff auf eine "Line", da die einzelnen Langworte nur se
quentiell in die adressierten Speicherbänke eingeschrieben wer
den können und somit bei jedem "Long-Word-Transfer" innerhalb
des Bursts die volle Zugriffszeit berechnet werden muß.
Der Erfindung liegt die Aufgabe zugrunde, die Effektivität des
"Speicher-Subsystems", insbesondere für 32-Bit Mikroprozessoren
der neuen Generation, die mit einem sogenannten "Burst-Modus" aus
gestattet sind, durch eine, gegenüber den bekannten Speicher-Ar
chitekturen, an diese "Burst-Fähigkeit" besser zugeschnittene Ar
chitektur zu erhöhen, wobei Effektivität in diesem Fall bedeutet,
daß:
- - bei "Burst-Read-Zugriffen" auch der "Initial-Zugriff" ohne Warte-Zyklen erreichbar sein soll sowie
- - bei "Burst-Write-Zugriffen" die Anzahl der dafür notwendigen Warte-Zyklen wesentlich zu reduzieren ist.
Die Aufgabe wird erfindungsmäßig dadurch gelöst, daß:
- - während des Ablaufs eines "Burst-Read-Transfers" mit der "Adres se (N)" bereits auf die nächste "Line" mit der "Adresse (N+1)" durch einen sogenannten "Line-Read-Prefetch" zugegriffen wird, so daß ein folgender "Burst-Read-Transfer" ohne Warte-Zyklen erfolgen kann, falls seine Adresse mit derjenigen übereinstimmt, auf die bereits durch "Prefetch" zugegriffen wurde. Diesem Prinzip liegt die Tatsache zugrunde, daß Programme übli cherweise zusammenhängend im Speicher untergebracht sind, d. h. der nächste "Befehl (J+1)", der dem "Befehl (J)" folgt, der selbst in der "Speicherstelle (N)" untergebracht ist, wird meist, falls es sich beim "Befehl (J)" nicht um einen "Branch-Befehl" handelt, in der "Speicherstelle (N+1)" zu finden sein.
- - bei "Burst-Write-Transfers" durch ein verzögertes, sogenanntes "Delayed Write", quasi gleichzeitig Daten in den Speicher einge schrieben werden und somit Schreibzugriffe meist ohne Wait-States zu erzielen sind, wobei dieser Vorteil sogar generell für alle "Line-Write-Zugriffe" gilt, unabhängig von "Adress-Identität (Address-Hit)" oder "Adress-Nicht-Idendität (Address-Miss)" zwi schen zwei aufeinanderfolgenden "Burst-Write-Transfers".
Der Vorteil der "128-Bit Architektur" mit "Line-Read-Prefetch" bzw.
"Line-Write-Delay" liegt in der erhöhten Effektivität gegenüber
den bekannten Speicherarchitekturen, wobei Effektivität in diesem
Fall bedeutet, daß entweder:
- - wesentliche Leistungssteigerungen durch eine geringere Anzahl von "Wait-States" bei Verwendung von Speicherelementen gleicher Zugriffszeit möglich sind, oder
- - merkliche Kosteneinsparungen bei gleicher Systemleistung durch Verwendung von Speicherelementen mit größerer Zugriffszeit zu erzielen sind.
Diese, beim Speicherzugriff erhöhte Leistung wird in den nachste
henden Tabellen aufgezeigt, in denen am Beispiel eines "MOTOROLA
MC 68040 Mikroprozessorsystems" für die Speicherarchitekturen:
- - 32 Bit Konventionell
- - 128 Bit Einfach-
- - 128 Bit mit "Line-Read-Prefetch" und "Line-Write-Delay"
ein Vergleich über Zugriffszeiten, Wartezyklen sowie relative
Leistung untereinander angestellt wird.
Verglichen werden folgende Speichertypen:
- - statischer Schreib/Lese-Speicher (SRAM) mit einer Zugriffszeit von t(acc) = 45 ns
- - nichtflüchtiger Programmspeicher (EEPROM) mit einer Zugriffszeit von t(acc) = 120 ns
Bei der Berechnung der Zugriffszeiten sowie der Wartezyklen für
den Zugriff eines "Prozessors 68040", mit einer Taktfrequenz von
25 MHz, auf den Speicher, wurde neben den eigentlichen Speicher-
Zugriffszeiten - t(acc) - noch eine zusätzliche Verzögerungszeit
von - t(dek) = 20 ns -, für Dekodier- und Steuerungslogik sowie
Zwischenspeicherung und/oder -pufferung der Daten und Adressen,
berücksichtigt.
Für einen "No-Wait-State-Zugriff" gilt:
Zugriffszeit <= t(acc) + t(dek) d. h. <= 65 ns
Zugriffszeit <= t(acc) + t(dek) d. h. <= 65 ns
Für einen "No-Wait-State-Zugriff" gilt:
Zugriffszeit <= t(acc) + t(dek) d. h. <= 140 ns
Zugriffszeit <= t(acc) + t(dek) d. h. <= 140 ns
Die Beispiele zeigen, daß der Leistungsgewinn bei der neuen
Speicher-Architektur um so deutlicher ausfällt, je größer die
Zugriffszeit der verwendeten Speicherelemente ist.
Zum Verständnis des Aufbaus und der Wirkungsweise eines 128-Bit
Speichers mit "Line-Read-Prefetch" und "Line-Write-Delay" für den
beispielweisen Einsatz in einem "MOTOROLA MC 68040 Mikroprozessor
system" werden zuerst die signifikanten Eigenschaften des Prozes
sors, die bei der Auslegung des Speicher-Subsystems zu berück
sichtigen sind, nachstehend kurz beschrieben.
Zugriffsarten:
Beim Zugriff über den 32-Bit Datenbus auf Operanden im Speicher, die an beliebigen Byte-Grenzen untergebracht sein dürfen, sind verschiedene Zugriffsarten möglich und zwar:
Beim Zugriff über den 32-Bit Datenbus auf Operanden im Speicher, die an beliebigen Byte-Grenzen untergebracht sein dürfen, sind verschiedene Zugriffsarten möglich und zwar:
- - Byte (8 Bit)
- - Word (16 Bit)
- - Long-Word (32 Bit)
- - Line (16 Byte = 4 Long-Words)
Zur Vermeidung von "Misaligned-Zugriffen" jedoch, die letztlich
eine Verringerung der Prozessor-Leistung durch zusätzliche
Zugriffs-Zyklen bedeuten, sollten die Operanden an ihren natür-
Grenzen innerhalb des Speichers untergebracht werden.
Der ′040 unterstützt 3 verschiedene Arten von externen Bus-Zyklen,
die immer durch die entsprechenden "Acknowledge-Signals" abge
schlossen werden müssen.
Es wird unterschieden zwischen:
- "Synchron (Normal) Zyklen", bei denen maximal 4 Bytes innerhalb von minimal 2 Prozessor-Clock-Perioden übertragen werden und die mit "Transfer-Acknowledge (!TA)" abgeschlossen werden müssen.
- "Burst-Zyklen", bei denen sequentiell 4 Lang-Worte (16 Bytes) innerhalb von minimal 5 Prozessor-Clock-Zyklen übertragen wer den, wobei der Transfer jedes einzelnen Lang-Wortes ebenfalls mit "!TA" abgeschlossen werden muß.
- "Burst-Inhibit-Zyklen", bei denen maximal 4 Bytes innerhalb von minimal 2 Prozessor-Clock-Zyklen übertragen werden und mit "!TA" und "!TBI" (gleichzeitig) abgeschlossen werden müssen.
Anmerkung:
Signale, die "aktive-low" sind, werden durch "!Signalname" gekenn zeichnet.
Signale, die "aktive-low" sind, werden durch "!Signalname" gekenn zeichnet.
Architekturmerkmale:
Der ′040 verfügt intern sowohl über ein "Instruktions-Cache" als auch ein "Daten-Cache", deren Inhalt auf dem "neuesten Stand" ge halten werden müssen.
Der ′040 verfügt intern sowohl über ein "Instruktions-Cache" als auch ein "Daten-Cache", deren Inhalt auf dem "neuesten Stand" ge halten werden müssen.
Einer der Vorteile des ′040 ist es nun, daß er dieses Auffrischen
der Caches mittels sogenannter "Burst-Transfers" durchführt, wobei
er annimmt, daß der Speicher diese Zugriffsart auch unterstützt.
Falls nicht, dann muß ihm dies durch das Signal "Transfer-Burst-
Inhibit (!TBI)" signalisiert werden.
Der Vorteil der Burst-Zugriffe liegt darin, daß die Zugriffszeit
auf eine Line geringer ist wie 4 einzelne Langwort-Zugriffe oder
die Summe der Einzelzugriffe im Fall "Burst-Inhibit".
Vergleicht man bei einem "No-Wait-State"-Speicher die Zugriffs
zeiten auf eine Line für beide Fälle, Burst/Burst-Inhibit, so
erhält man folgende Werte:
Burst: 5 Taktzyklen (2 + 1 + 1 + 1)
Burst-Inhibit: 8 Taktzyklen (2 + 2 + 2 + 2).
Burst-Inhibit: 8 Taktzyklen (2 + 2 + 2 + 2).
Es ist einzusehen, daß an einen Speicher sehr hohe Anforderungen
bezüglich Zugriffszeit gestellt werden, wenn Burst-Zugriffe ohne
Wartezyklen durchgeführt werden sollen.
Da jedoch bei einem Speicher Zugriffszeit und Preis in einem umge
kehrten Verhältnis zueinander stehen, bedeutet dies entsprechend
hohe Kosten für einen solchen "No-Wait-State-Speicher".
Bei der Berechnung der kritischen Zeiten beim Speicherzugriff muß
zwischen den 3 verschiedenen Zugriffsarten unterschieden werden
und zwar:
- - Synchrone Zyklen
- - Burst Zyklen
- - Burst-Inhibit Zyklen
wobei der zeitliche Ablauf für Synchrone- und Burst-Inhibit-Zyklen
sowie den 1. Langwort Transfer eines Burst-Zyklus identisch ist.
Der zeitliche Ablauf des 2., 3. und 4. "Langwort-Transfers" eines
Burst-Zyklus ist jedoch von der "Architektur des Speichers" ab
hängig.
Beim Datentransfer des Prozessors zum Speicher oder zu anderen
Systemkomponenten handelt es sich um "synchrone Transfers", die
über "Handshake-Sequenzen" abgewickelt werden.
Synchron heißt in diesem Fall, daß alle dazu notwendigen Ein
gangs- und Ausgangssignale synchron zur Vorderflanke des "Bus-
Clock-Signals (BCLK)" entweder vom Prozessor erzeugt werden (Aus
gangssignale) oder von der Peripherie zu erzeugen sind (Eingangs
signale).
Folgende Prozessor-Signale werden zur Steuerung des Bustransfers
benötigt:
- A31 . . . A0, mit: Address
A31 . . . A4: Line-Address
A3, A2: Word-Address
A1, A0: Byte-Address
A31 . . . A4: Line-Address
- SIZ0, SIZ1: Transfer-Size (Anzahl Bytes)
- TT1, TT0: Transfer-Type
- TM2 - TM0: Transfer-Modifier
- R/!W: Read/Write
- !TA: Transfer Acknowledge
- !TBI: Tranfer Burst Inhibit
- !TCI: Tranfer Cache Inhibit.
A31 . . . A4: Line-Address
A3, A2: Word-Address
A1, A0: Byte-Address
A31 . . . A4: Line-Address
- SIZ0, SIZ1: Transfer-Size (Anzahl Bytes)
- TT1, TT0: Transfer-Type
- TM2 - TM0: Transfer-Modifier
- R/!W: Read/Write
- !TA: Transfer Acknowledge
- !TBI: Tranfer Burst Inhibit
- !TCI: Tranfer Cache Inhibit.
Eingangssignale wie, z. B. die Daten bei Read-Operationen oder die
Quittungssignale "!TA, !TBI, !TCI", werden vom Prozessor mit der
positiven Flanke des Taktsignals "BCLK" abgetastet und müssen,
um fehlerfrei erkannt zu werden, während eines "Abtastfensters"
stabil sein, wobei dessen Dauer durch die entsprechenden "Setup"
und "Hold" Zeiten der Eingangssignale festgelegt ist
(siehe "MC 68040 Electrical Specifications").
Für die Erzeugung der Quittungssignale gilt im einzelnen:
"Tranfer-Acknowledge (!TA)"
Jeder Buszyklus muß durch Aktivierung von "Tranfer-Acknowledge (!TA → true)" abgeschlossen werden
"Transfer-Burst-Inhibit (!TBI)"
Beim Zugriff auf Systemkomponenten (Speicher, Peripherie . . .) die keine "Burst-Fähigkeit" besitzen, muß ein Line-Transfer mit "Transfer-Burst-Inhibit (!TBI → true)" abgeschlossen werden. Dabei wird das Signal "!TBI" gleichzeitig mit "!TA" beim ersten Lang-Wort-Transfer eines Line-Zugriffes aktiviert und zwingt damit den Prozessor, den Line-Transfer abzubrechen und den Rest der Line durch den Transfer von 3 einzelnen "Long-Words" zu er setzen, wobei während deren Übertragung "!TBI" ignoriert wird.
"Transfer-Cache-Inhibit (!TCI)"
Die internen "Caches" des Prozessors werden durch "Line-Read-Cyc les" beschrieben.
Das Beschreiben der Caches beim Zugriff auf die Peripherie oder auf Speicherbereiche, in denen nicht zeitkritische Programmteile untergebracht sind, kann verhindert werden, indem bei der Über tragung des 1. Lang-Wortes eines Line-Read-Transfers gleichzeitig mit "!TA" das Signal "Transfer Cache-Inhibit (!TCI → true)" er zeugt wird.
Nach der Übertragung des 1. Lang-Wortes eines Line-Transfers wird "!TCI" vom Prozessor ignoriert.
"Tranfer-Acknowledge (!TA)"
Jeder Buszyklus muß durch Aktivierung von "Tranfer-Acknowledge (!TA → true)" abgeschlossen werden
"Transfer-Burst-Inhibit (!TBI)"
Beim Zugriff auf Systemkomponenten (Speicher, Peripherie . . .) die keine "Burst-Fähigkeit" besitzen, muß ein Line-Transfer mit "Transfer-Burst-Inhibit (!TBI → true)" abgeschlossen werden. Dabei wird das Signal "!TBI" gleichzeitig mit "!TA" beim ersten Lang-Wort-Transfer eines Line-Zugriffes aktiviert und zwingt damit den Prozessor, den Line-Transfer abzubrechen und den Rest der Line durch den Transfer von 3 einzelnen "Long-Words" zu er setzen, wobei während deren Übertragung "!TBI" ignoriert wird.
"Transfer-Cache-Inhibit (!TCI)"
Die internen "Caches" des Prozessors werden durch "Line-Read-Cyc les" beschrieben.
Das Beschreiben der Caches beim Zugriff auf die Peripherie oder auf Speicherbereiche, in denen nicht zeitkritische Programmteile untergebracht sind, kann verhindert werden, indem bei der Über tragung des 1. Lang-Wortes eines Line-Read-Transfers gleichzeitig mit "!TA" das Signal "Transfer Cache-Inhibit (!TCI → true)" er zeugt wird.
Nach der Übertragung des 1. Lang-Wortes eines Line-Transfers wird "!TCI" vom Prozessor ignoriert.
Der ′040 unterscheidet bei Lese-Operationen zwischen:
- - Instruction-Read-Cycles
- - Data-Read-Cycles.
Bei ersteren handelt es sich immer um "cachable" Langwort-Zugriffe,
bei denen der Prozessor annimmt, daß der gesamte 32-Bit Datenbus
gültige Daten enthält.
Bei "Data-Read-Cycles" sind jedoch sowohl "cachable" als auch
"non-cachable" Zugriffe möglich.
Während im Fall eines "cachable Data-Read-Cycles", genauso wie bei
"Instruction-Read-Cycles" auf den gesamten 32-Bit Datenbus zuge
griffen wird, sind im Unterschied dazu bei "noncachable" Data-Read-
Cycles, Zugriffe auf Operanden beliebiger Größe (wie Byte, Word
oder Long-Word) und Unterbringung möglich.
Da der ′040 jedoch "nur" 32-Bit-Zugriffe zuläßt, ignoriert er
letzteren Fall alle nicht angesprochenen Bytes auf dem 32-Bit-Bus.
Die Konsequenz davon ist, daß bei Lese-Zyklen im Gegensatz zu
Schreibzyklen generell der gesamte "32-Bit Ausgangsport" des Spei
chers freigegeben werden kann.
Folgende Signale werden zur Steuerung der "READ-Zugriffe" zusätz
lich benötigt:
"Adressen (A3, A2)" bei "Synchron (Normal)-Transfers"
Zu Beginn eines "READ-Cycles" werden vom Prozessor die "Adressen (A31 . . . A0)" zusammen mit den "Transfer-Attributes" ausgegegeben und im Anschluß daran mit dem Signal "Transfer-Start (!TS → true)" der angesprochenen Speicherbaugruppe mitgeteilt, daß die erzeug ten Bussignale gültig sind und ein neuer Buszyklus gestartet wor den ist.
Dies bedeutet, daß die "Adressen (A3, A2)" zum Zeitpunkt (!TS → true) von der angesprochenen Baugruppe gespeichert werden müssen (siehe auch "Line-Transfers").
"Adressen (A3, A2)" bei "Line-Transfers"
"Line-Zugriffe" werden mittels sogenannter "Burst-Transfers" durch geführt, wobei zeitlich nacheinander 4 Lang-Worte zusammen mit der Anfangsadresse des 1. Lang-Wortes übertragen werden.
Die "Adressen (A3, A2)" werden für die gesamte Dauer des Line- Transfers stabil gehalten und zeigen auf eines der 4 Lang-Worte innerhalb eines 16-Byte Speicherblocks.
Diese "Startadresse (A3, A2)" wird zum Zeitpunkt (!TS → true) von der angesprochenen Baugruppe gespeichert.
Zur Adressierung der weiteren Lang-Worte (2, 3, 4) der restlichen Line, müssen die "Adressen (A3, A2)" für deren Transfers explizit erzeugt (inkrementiert) werden.
"Adressen (A3, A2)" bei "Burst-Inhibit-Transfers"
Da in diesem Fall ein "Line-Transfer" durch 4 einzelne Lang-Wort- Transfers ersetzt wird, gilt hier das Gleiche wie für "Synchron (Normal)-Transfers".
"Adressen (A1, A0)"
Die niederwertigsten Bits der Adresse können bei allen READ-Zu griffen ignoriert werden, unabhängig von der Größe der Operan den oder der Art des Bus-Zyklus.
"Chip-Select (!CS)"
Das "Chip-Select" Signal zur Anwahl einer Speicherbank sollte wegen der großen "Chip-Select-Access-Time (Tacs)" der Speicher bausteine zum frühestmöglichen Zeitpunkt erzeugt werden. Dies bedeutet, daß es unmittelbar aus den Adressen abgeleitet werden kann, ohne auf "Transfer-Start (!TS → true)" zu warten.
"Output-Enable (!OE)"
Bei "READ" darf, unabhängig vom verwendeten Datentyp (Byte, Word, Long-Word), immer auf den "gesamten" 32-Bit Datenbus zugegriffen werden, da der Prozessor alle nicht selektierten Bytes ignoriert. Dies bedeutet, daß "keine" selektive Byte-Auswahllogik benötigt wird und somit durch das Signal "Output-Enable" immer der gesamte "32-Bit Ausgangsport" der angesprochenen Speicherbank freigegeben werden kann.
Bei der Erzeugung von "Output-Enable" ist auf die "Data-Setup-Time" und "Data-Hold-Time" des "Prozessors 68040" zu achten.
"Adressen (A3, A2)" bei "Synchron (Normal)-Transfers"
Zu Beginn eines "READ-Cycles" werden vom Prozessor die "Adressen (A31 . . . A0)" zusammen mit den "Transfer-Attributes" ausgegegeben und im Anschluß daran mit dem Signal "Transfer-Start (!TS → true)" der angesprochenen Speicherbaugruppe mitgeteilt, daß die erzeug ten Bussignale gültig sind und ein neuer Buszyklus gestartet wor den ist.
Dies bedeutet, daß die "Adressen (A3, A2)" zum Zeitpunkt (!TS → true) von der angesprochenen Baugruppe gespeichert werden müssen (siehe auch "Line-Transfers").
"Adressen (A3, A2)" bei "Line-Transfers"
"Line-Zugriffe" werden mittels sogenannter "Burst-Transfers" durch geführt, wobei zeitlich nacheinander 4 Lang-Worte zusammen mit der Anfangsadresse des 1. Lang-Wortes übertragen werden.
Die "Adressen (A3, A2)" werden für die gesamte Dauer des Line- Transfers stabil gehalten und zeigen auf eines der 4 Lang-Worte innerhalb eines 16-Byte Speicherblocks.
Diese "Startadresse (A3, A2)" wird zum Zeitpunkt (!TS → true) von der angesprochenen Baugruppe gespeichert.
Zur Adressierung der weiteren Lang-Worte (2, 3, 4) der restlichen Line, müssen die "Adressen (A3, A2)" für deren Transfers explizit erzeugt (inkrementiert) werden.
"Adressen (A3, A2)" bei "Burst-Inhibit-Transfers"
Da in diesem Fall ein "Line-Transfer" durch 4 einzelne Lang-Wort- Transfers ersetzt wird, gilt hier das Gleiche wie für "Synchron (Normal)-Transfers".
"Adressen (A1, A0)"
Die niederwertigsten Bits der Adresse können bei allen READ-Zu griffen ignoriert werden, unabhängig von der Größe der Operan den oder der Art des Bus-Zyklus.
"Chip-Select (!CS)"
Das "Chip-Select" Signal zur Anwahl einer Speicherbank sollte wegen der großen "Chip-Select-Access-Time (Tacs)" der Speicher bausteine zum frühestmöglichen Zeitpunkt erzeugt werden. Dies bedeutet, daß es unmittelbar aus den Adressen abgeleitet werden kann, ohne auf "Transfer-Start (!TS → true)" zu warten.
"Output-Enable (!OE)"
Bei "READ" darf, unabhängig vom verwendeten Datentyp (Byte, Word, Long-Word), immer auf den "gesamten" 32-Bit Datenbus zugegriffen werden, da der Prozessor alle nicht selektierten Bytes ignoriert. Dies bedeutet, daß "keine" selektive Byte-Auswahllogik benötigt wird und somit durch das Signal "Output-Enable" immer der gesamte "32-Bit Ausgangsport" der angesprochenen Speicherbank freigegeben werden kann.
Bei der Erzeugung von "Output-Enable" ist auf die "Data-Setup-Time" und "Data-Hold-Time" des "Prozessors 68040" zu achten.
Da der ′040 den Transfer von "Misaligned Operanden", d. h. Operan
den, die nicht an ihren natürlichen Adreßgrenzen untergebracht
sind, erlaubt, ist eine "Byte-Select-Logic" zwingend erforderlich,
um zu vermeiden, daß bei Schreib-Operationen nicht verwendete
Bytes überschrieben werden.
Dies bedeutet, daß jedes Byte innerhalb der 32-Bit mit einem
eigenen "Byte-Data-Strobe" anwählbar sein muß.
Folgende Signale werden zur Steuerung der "WRITE-Zugriffe" zusätz
lich benötigt:
"Write-Enable (!WE)"
Bei Schreib-Operationen unterstützt der "68040" Zugriffe auf Ope randen unterschiedlicher Größe, wie Byte, Word, Long-Word oder Line.
Da jedoch ein Zugriff auf den externen Bus immer ein 32-Bit Zu griff ist und alle Operanden im Speicher an beliebigen Byte-Adres sen untergebracht sein dürfen, sind beim Zugriff auf Word- und Long-Word-Operanden, die nicht auf ihren "natürlichen" Adressen untergebracht sind, sogenannte "Misaligned-Zugriffe" die Folge. Um nun zu vermeiden, daß im Fall eines "Misaligned-Write-Zugriffes" diejenigen Bytes, innerhalb der 32-Bit, die nicht angesprochen sind, überschrieben werden, muß jedes Byte mit einem eigenen "Data-Write-Strobe (!WE)" anwählbar sein, wobei diese durch Ver knüpfung der Signale "Transfer-Size (SIZ1, SIZ0)" mit den "Adres sen (A1, A0)" gewonnen werden.
Beim Timing der "Write-Enable-Signale" ist besonders auf die ge ringe "Data-Hold-Time" des ′040 mit - t(dh) = 9 ns/min @ 25 MHz - zu achten.
"Write-Enable (!WE)"
Bei Schreib-Operationen unterstützt der "68040" Zugriffe auf Ope randen unterschiedlicher Größe, wie Byte, Word, Long-Word oder Line.
Da jedoch ein Zugriff auf den externen Bus immer ein 32-Bit Zu griff ist und alle Operanden im Speicher an beliebigen Byte-Adres sen untergebracht sein dürfen, sind beim Zugriff auf Word- und Long-Word-Operanden, die nicht auf ihren "natürlichen" Adressen untergebracht sind, sogenannte "Misaligned-Zugriffe" die Folge. Um nun zu vermeiden, daß im Fall eines "Misaligned-Write-Zugriffes" diejenigen Bytes, innerhalb der 32-Bit, die nicht angesprochen sind, überschrieben werden, muß jedes Byte mit einem eigenen "Data-Write-Strobe (!WE)" anwählbar sein, wobei diese durch Ver knüpfung der Signale "Transfer-Size (SIZ1, SIZ0)" mit den "Adres sen (A1, A0)" gewonnen werden.
Beim Timing der "Write-Enable-Signale" ist besonders auf die ge ringe "Data-Hold-Time" des ′040 mit - t(dh) = 9 ns/min @ 25 MHz - zu achten.
Für die Signale:
- - "Adressen (A3, A2)" bei Normal-Transfers
- - "Adressen (A3, A2)" bei Line-Transfers
- - "Adressen (A3, A2)" bei Burst-Inhibit-Transfers
- - "Chip-Select (!CS)"
gilt das Gleiche wie bei "READ-Zugriffen" bereits beschrieben.
Für die Berechnung der "Wait-States" bei der "Konventionellen
32-Bit Architektur" und bei Verwendung von statischen Speichern
wird der kritische Zeitwert "Address-to-Data" herangezogen.
Die Anzahl der "Wait-States" ist dabei immer ein ganzzahliges
Vielfaches der nicht teilbaren "Prozessor-Takt-Periode".
Die Berechnung der Wait-States wird am Beispiel eines "Statischen-
Schreib-Lese-Speichers (SRAM)" durchgeführt, wobei bezüglich
des "Line-Zugriffs" auf das "SRAM" zwischen READ und WRITE unter
schieden wird und zwar:
READ: Burst Enable
WRITE: Burst Inhibit
READ "Byte, Word, Long-Word, Line (1. Long-Word)"
t(afds) = n * T - t(av) - t(adrf) - t(ds)
n = N(n) + w
t(afds) <= t(accr)
w <= { [ t(accr) + t(av) + t(adrf) + t(ds) ] : T } - N(n)
w <= z, . . - 2.
WRITE: Burst Inhibit
READ "Byte, Word, Long-Word, Line (1. Long-Word)"
t(afds) = n * T - t(av) - t(adrf) - t(ds)
n = N(n) + w
t(afds) <= t(accr)
w <= { [ t(accr) + t(av) + t(adrf) + t(ds) ] : T } - N(n)
w <= z, . . - 2.
Da die Anzahl der "Wait-States" immer ein ganzzahliges Vielfaches
der nicht teilbaren "Prozessor-Takt-Periode" sein muß, folgt:
w = (z + 1) - 2
w = z + 1
READ "Line (2., 3., 4. Long-Word)"
t(abds) = n * T - t(adrb) - t(ds)
n = N(b) + w
t(abds) <= t(accr)
w <= { [ t(accr) + t(adrb) + t(ds) ] : T } - N(b)
w <= z, . . - 1
w = (z + 1) - 1
w = z
WRITE "Byte, Word, Long-Word"
t(accw) = t(aw) + t(dhw)
t(avdh) = n * T - t(av) - t(adrf) + t(dh)
n = N(n) + w
t(avdh) <= t(accw)
w <= { [ t(accw) + t(av) + t(adrf) - t(dh) ] : T } - N(n)
w <= z, . . - 2
w = (z + 1) - 2
w = z - 1
w = z + 1
READ "Line (2., 3., 4. Long-Word)"
t(abds) = n * T - t(adrb) - t(ds)
n = N(b) + w
t(abds) <= t(accr)
w <= { [ t(accr) + t(adrb) + t(ds) ] : T } - N(b)
w <= z, . . - 1
w = (z + 1) - 1
w = z
WRITE "Byte, Word, Long-Word"
t(accw) = t(aw) + t(dhw)
t(avdh) = n * T - t(av) - t(adrf) + t(dh)
n = N(n) + w
t(avdh) <= t(accw)
w <= { [ t(accw) + t(av) + t(adrf) - t(dh) ] : T } - N(n)
w <= z, . . - 2
w = (z + 1) - 2
w = z - 1
Begriffserklärungen:
Die angegebenen Zeiten sind den entsprechenden Datenblättern für den PROZESSOR 68040 entnommen bzw. den Datenblättern für das SRAM bzw. des ADDRESS-DEKODERS zu entnehmen:
Die angegebenen Zeiten sind den entsprechenden Datenblättern für den PROZESSOR 68040 entnommen bzw. den Datenblättern für das SRAM bzw. des ADDRESS-DEKODERS zu entnehmen:
t(afds) = time address-first valid to data setup (Proz/r)
(siehe "68040 Designer′s Handbook -9.6-")
t(abds) = time address-burst valid to data setup (Proz/r) (siehe "68040 Designer′s Handbook -9.6-")
t(avdh) = time address valid to data hold (Proz/w) (siehe "68040 Designer′s Handbook -9.6-")
t(av) = time BCLK-high to address valid (Proz/r-w) (30 ns/max bei 25 MHz)
t(ds) = time data-in setup to BCLK-high (Proz/r) (5 ns/min)
t(dh) = time BCLK-high to data-out hold (Proz/w) (9 ns/min)
t(adrf) = time address-first load (ADR-GEN)
t(adrb) = time address-burst generate (ADR-GEN)
t(accr) = time address to output delay (SRAM/r)
t(accw) = time address valid to end of write (SRAM/w)
z = Element der natürlichen Zahlen einschließlich der Null
n = Anzahl der gesamten BCLK-Perioden pro Zugriff (mit Wait-States)
N(n) = Anzahl BCLK-Perioden für Normal-Zugriff (first) (zwei(2) ohne Wait-States)
N(b) = Anzahl BCLK-Perioden für Burst-Zugriff (eine(1) ohne Wait-States)
w = Anzahl Wait-States
T = Prozessor-Takt-Periode (BCLK-Periode).
t(abds) = time address-burst valid to data setup (Proz/r) (siehe "68040 Designer′s Handbook -9.6-")
t(avdh) = time address valid to data hold (Proz/w) (siehe "68040 Designer′s Handbook -9.6-")
t(av) = time BCLK-high to address valid (Proz/r-w) (30 ns/max bei 25 MHz)
t(ds) = time data-in setup to BCLK-high (Proz/r) (5 ns/min)
t(dh) = time BCLK-high to data-out hold (Proz/w) (9 ns/min)
t(adrf) = time address-first load (ADR-GEN)
t(adrb) = time address-burst generate (ADR-GEN)
t(accr) = time address to output delay (SRAM/r)
t(accw) = time address valid to end of write (SRAM/w)
z = Element der natürlichen Zahlen einschließlich der Null
n = Anzahl der gesamten BCLK-Perioden pro Zugriff (mit Wait-States)
N(n) = Anzahl BCLK-Perioden für Normal-Zugriff (first) (zwei(2) ohne Wait-States)
N(b) = Anzahl BCLK-Perioden für Burst-Zugriff (eine(1) ohne Wait-States)
w = Anzahl Wait-States
T = Prozessor-Takt-Periode (BCLK-Periode).
Folgende Zeiten müssen mit den zulässigen Grenzwerten aus dem
"SRAM-Datenblatt" zwecks deren Einhaltung verglichen werden:
t(cs) = time chip-select to output delay (SRAM/r)
t(oe) = time output-enable to output delay (SRAM/r)
t(aw) = time address valid to end of write pulse (SRAM/w)
t(cw) = time chip-select to end of write (SRAM/w)
t(wp) = write pulse width (SRAM/w)
t(dhw) = time data hold from write (RAM/w).
t(oe) = time output-enable to output delay (SRAM/r)
t(aw) = time address valid to end of write pulse (SRAM/w)
t(cw) = time chip-select to end of write (SRAM/w)
t(wp) = write pulse width (SRAM/w)
t(dhw) = time data hold from write (RAM/w).
Aufbau und Wirkungsweise eines 128-Bit Schreib/Lese-Speichers mit
"Line-Read-Prefetch" und "Line-Write-Delay" für den beispielswei
sen Einsatz in einem "MOTOROLA MC 68040 Mikroprozessorsystem" ist
in den Abb. 1 bis 5 dargestellt und wird nachfolgend näher
beschrieben.
Die einzelnen Abbildungen zeigen:
Bild 1: Das Blockschaltbild eines 128-Bit Speichers mit "Line-
Read-Prefetch und Line-Write-Delay"
Bild 2: Das Blockschaltbild eines "Kombinierten Speichers" bestehend aus:
einem konventionellen 32-Bit-Speichersegment (EPROM) sowie
zwei 128-Bit-Speichersegmenten (RAM + EEPROM) mit "Line-Read-Prefetch und Line-Write-Delay"
Bild 3: Der zeitliche Ablauf von "Line-Read-Prefetch-Zyklen" bei Adress-Identität bzw. Adress-Nicht-Identität
Bild 4: Der zeitliche Ablauf von "Line-Write-Delay-Zyklen" mit frühestem Zeitpunkt der Adreßübernahme
Bild 5: Der zeitliche Ablauf von "Line-Write-Delay-Zyklen" mit späterem Zeitpunkt der Adreßübernahme.
Bild 2: Das Blockschaltbild eines "Kombinierten Speichers" bestehend aus:
einem konventionellen 32-Bit-Speichersegment (EPROM) sowie
zwei 128-Bit-Speichersegmenten (RAM + EEPROM) mit "Line-Read-Prefetch und Line-Write-Delay"
Bild 3: Der zeitliche Ablauf von "Line-Read-Prefetch-Zyklen" bei Adress-Identität bzw. Adress-Nicht-Identität
Bild 4: Der zeitliche Ablauf von "Line-Write-Delay-Zyklen" mit frühestem Zeitpunkt der Adreßübernahme
Bild 5: Der zeitliche Ablauf von "Line-Write-Delay-Zyklen" mit späterem Zeitpunkt der Adreßübernahme.
Das in Bild 1 dargestellte Blockschaltbild dieses Ausführungs
beispiels ist in folgende "Funktions-Blöcke" unterteilt:
- - den "Memory-Block"
- - den "Tranceiver-Block"
- - den "Control-Block"
deren Aufbau und Funktionsweise nachstehend einzeln beschrieben
werden.
Dieser Block besteht aus 4 parallel geschalteten Speicherbänken
zu je 32-Bit Breite, wobei Art, Kapazität, Organisation sowie
Zugriffszeiten der verwendeten Speicherelemente von den Anforde
rungen an das zu realisierende Mikroprozessorsystem bestimmt wird.
Da sich in der Realität, abhängig von der Anwendung, der Spei
cher eines Mikroprozessorsystems aus mehreren "Speichersegmenten"
(siehe Bild 2) zusammensetzt, wie z. B. bei sogenannten "Embedded-
Control-Anwendungen" aus:
- "Festwert-Speicher" zur Unterbringung des Betriebssystems (PROM-Technologie)
- "Programm-Speicher" zur Unterbringung des Anwenderprogramms (z. B. EEPROM-Technologie für Onboard-Programmierung)
- "Schneller Schreib/Lese-Speicher" zur Unterbringung von Daten und Operanden (SRAM-Technologie)
bedeutet dies, daß sich jede Speicherbank wiederum aus mehreren
parallel geschalteten Speichersegmenten zusammensetzen kann, wo
bei die Parallelschaltung "vor" den Tranceiver-Bänken durch Ver
knüpfung der entsprechenden I/O-Pins der Speicherelemente vorge
nommen wird.
Für jedes dieser Speichersegmente kann demnach die Fähigkeit
der Leistungssteigerung durch "Line-Read-Prefetching" bzw. "Line-
Write-Delaying" vorgesehen werden.
Speichersegmente jedoch, bei denen von dieser Möglichkeit der
Leistungssteigerung nicht Gebrauch gemacht wird, wie z. B. beim
"System-Speicher", können konventionell, d. h. mit einer Breite
von 32-Bit, aufgebaut werden, wobei es vorteilhaft ist, diese Seg
mente, zur Vermeidung von sogenannter "Bus-Contention", ebenfalls
mit "Bus-Tranceivern", jedoch ohne integrierte Register, auszu
rüsten.
Die Parallelschaltung solcher Segmente mit den übrigen leistungs
gesteigerten Segmenten geschieht dann "hinter" den Tranceiver-Ban
ken durch Verknüpfung der entsprechenden Tranceiver-I/O-Pins.
Der "Memory-Block" wird mit den übrigen Funktionsblöcken folgen
dermaßen verbunden:
- indem die 32-Bit Daten-I/O-Ports der Speicherbänke mit den ent sprechenden Receiver-I/O-Ports der Tranceiver-Bänke verknüpft werden und
- indem die Eingangssignale zur Steuerung der Schreib/Lese-Opera tionen im Speicher, wie:
- - Adressen
- - Chip-Select (!CS)
- - Output-Enable (!OE)
- - Write-Enable (!WE)
mit den entsprechenden Ausgangssignalen des Funktionsblocks
"Memory-Control" verbunden werden.
Dieser Block ist aus "Bus-Tranceivern" mit Tri-State-Ausgängen
und integrierten Receiver- und Transmitter-Registern, sogenannten
"Registered-Tranceivern" aufgebaut, wobei jeder Speicherbank ein
32-Bit-Tranceiver vorgeschaltet ist und zwar derart, daß die
Receiverein-/ausgänge dieser Bauelemente mit den Datenein-/aus
gängen der Speicherbänke verbunden sind, während die entspre
chenden Transmitterein-/ausgänge untereinander und mit den zuge
hörigen Datenein-/ausgängen des Prozessors verknüpft sind
(Datenbus).
Die integrierten Register besitzen unterschiedliche Funktionen
und zwar:
- Die "Transmitter-Register" haben dabei die Aufgabe, die aus den Speicherbänken gelesenen Daten zu Beginn eines Burst-Transfers zwischenzuspeichern und ermöglichen somit den erneuten Zugriff (Prefetch) auf die Speicherbänke während des Burst-Transfers. Durch sequentielles Aufschalten (Tri-State) der Register-Aus gänge auf den Datenbus werden die in den Registern zwischenge speicherten Daten während des "Burst-Read-Transfers" zum Pro zessor übertragen.
- Die "Receiver-Register" sind vorgesehen, um die sequentiell während des "Burst-Write-Transfers" vom Prozessor gelieferten Daten zwischenzuspeichern, damit diese anschließend, quasi gleichzeitig, in die Speicherbänke umgeladen werden können. Der Zweck dabei ist, daß die Dauer des Einschreibvorgangs bis zum Zeitpunkt der nächsten Adressenänderung verlängert wird und somit die zur Verfügung stehend "Write-Access-Time" wesent lich größer ist wie beim "normalen" Schreibzugriff ohne "Line-Write-Delaying".
Dieser Funktionsblock dient zur Steuerung der vom Prozessor initi
ierten Schreib/Lese-Operationen im Speicher durch Bereitstellung
der dafür benötigten Steuersignale für den "Memory-Block" sowie
den "Tranceiver-Block".
Eine weitere Unterteilung dieses Funktions-Blocks in die
"Funktions-Gruppen":
- - "Adress-Generator"
- - "Adress-Komparator"
- - "Memory-Control"
wird durch die spezielle Art der Zugriffssteuerung bedingt, wobei
speziell in diesem Fall heißt, daß die Steuerung in der Lage
sein muß
- - sowohl "Non-Burst-Schreib/Lese-Zugriffe" als auch
- - "Burst-Zugriffe mit Line-Read-Prefetch und Line-Write-Delay"
durchzuführen.
Die Wirkungsweise der einzelnen "Funktions-Gruppen" wird nach
stehend einzeln beschrieben.
Der Prozessor startet einen "Speicherzugriffszyklus" durch Ausgabe
der "Adresse (A31 . . . A0)" und der "Transfer-Attributes", wobei er
diese Signale während des gesamten Transfers (auch bei Burst-
Transfers) unverändert läßt.
Gleichzeitig wird das Signal "Transfer-Start (!TS → true)" akti
viert, um den Start des Bus-Zyklus anzuzeigen.
Der "Adress-Generator" ist vorgesehen, um die für den Zugriff be
nötigte Speicheradresse bereitzustellen, wobei zwei Fälle zu un
terscheiden sind:
- bei "Non-Burst-Zugriffen" wird die vom Prozessor gelieferte Adresse im "Adress-Generator" lediglich gespeichert
- bei "Burst-Zugriffen" jedoch besteht die Aufgabe des "Adress- Generators" entweder darin, die vom Prozessor ausgegebene "Basis-Adresse" für den Burst-Zugriff zu speichern oder die "Nächste Basisadresse" für den "Prefetch-Zugriff" durch In krementieren der signifikanten Adressbits der vorhergehenden Basisadresse zu erzeugen, wobei signifikant in diesem Fall heißt, daß lediglich die "Adressen (A31 . . . A4)" benötigt werden, weil:
- - die "Adressen (A3, A2)" für den Zugriff auf den adressier ten Operanden (Byte, Word oder Long-Word) durch Freigabe der angesprochenen Speicherbank verwendet werden.
- - die "Adressen (A1, A0)" bei:
"READ-Operationen" ignoriert werden, da immer der gesamte "32-Bit-Ausgangsport", der mit den "Adressen (A3, A2)" ange sprochenen Speicherbank, freigegeben wird. (siehe auch Abschnitt 9.2.3.3.1/2)
"Write-Operationen" für den Zugriff auf das/die angespro chenen Bytes innerhalb des Langwortes verwendet werden. (siehe auch Abschnitt 9.2.3.3.3/4)
Dabei wird die Speicherung oder Erzeugung der "Nächsten Basis- Adresse" zu Beginn eines Burst-Transfers vorgenommen, wobei das Kriterium dafür ob gespeichert oder inkrementiert werden soll vom Ergebnis des "Adressenvergleichs" abgeleitet wird und zwar derart, daß bei "Adress-Identität" inkrementiert, während bei "Adress-Nicht-Identität" gespeichert wird.
Diese Funktionsgruppe dient zum Vergleich der vom Prozessor ausge
gebenen Basisadresse mit der im Adreßgenerator gespeicherten
"Prefetch-Adresse" sowie zur Erzeugung eines Signals, welches das
Ergebnis dieses Vergleichs (Identität/Nicht-Identität) anzeigt,
wobei dieses Signal:
- - einerseits vom Adreßgenerator als Kriterium dafür verwendet wird, ob die Basisadresse des nächsten Burst-Transfers durch Speicherung oder durch Inkrementierung erzeugt werden soll und
- - andererseits als Kriterium dafür dient, ob die während des vorangegangenen Burst-Transfers durch "Prefetch" bereitgestell ten "Line-Daten" gültig sind und zwar derart, daß bei Identi tät die Daten zu Beginn des nächsten "Burst-Read-Transfers" in die "Transmitter-Register" abgespeichert werden, während bei Nicht-Identität dieses Abspeichern erst nach Durchfüh rung des neuen Lese-Zugriffs vorgenommen wird.
Bei Lesezugriffen wird, wie bereits im Abschnitt 9.1.2.1 festge
stellt wurde, immer der gesamte "32-Bit Ausgangsport" einer Spei
cherbank freigegeben. Dies bedeutet für einen "128-Bit Speicher",
aufgebaut aus 4 getrennten 32-Bit Speicherbänken, daß auch 4
getrennte "Output-Enable-Signale" notwendig sind, um jede Bank
separat ansprechen zu können.
Bei der Steuerung der Lesezugriffe ist zwischen "Non-Burst-Zugrif
fen" und "Burst-Zugriffen" zu unterscheiden:
"Non-Burst-Zugriffe"
Während eines "Non-Burst-Zugriffs" wird lediglich auf den adressierten Operanden (Byte, Word, Long-Word) durch Freigabe der angesprochenen Speicherbank zugegriffen.
"Non-Burst-Zugriffe"
Während eines "Non-Burst-Zugriffs" wird lediglich auf den adressierten Operanden (Byte, Word, Long-Word) durch Freigabe der angesprochenen Speicherbank zugegriffen.
Das Kriterium, welche 32-Bit Speicherbank freizugeben ist, wird
von der "Lang-Wort-Adresse (A3, A2)" des angesprochenen Bytes,
Words oder Long-Words abgeleitet, wobei die Lang-Wort-Adresse
normalerweise der freizugebenden Bank entspricht.
Dies bedeutet, daß die Aktivierung einer speziellen Speicher-
Bank (x) mit dem entsprechenden "Enable-Signal (Ex)" unmittelbar
von den Langwort-Adressen (A3, A2 = x mit 0 =< x =< 3) abgelei
tet wird.
Bei einem Byte-Zugriff auf eine Speicheradresse mit (A3, A2 = 1)
wird Bank #1 freigegeben.
"Burst-Zugriffe"
Bei "Burst-Zugriffen" jedoch ist die Freigabe einer speziellen Speicherbank abhängig von der Startadresse (A3, A2) des ersten Langwortes sowie der Nummer (1, 2, 3 oder 4) des gerade statt findenden Langwort-Transfers innerhalb des Bursts.
Bei "Burst-Zugriffen" jedoch ist die Freigabe einer speziellen Speicherbank abhängig von der Startadresse (A3, A2) des ersten Langwortes sowie der Nummer (1, 2, 3 oder 4) des gerade statt findenden Langwort-Transfers innerhalb des Bursts.
Bei einem "Burst-Transfer" mit der Langwort-Startadresse
(A3, A2 = x mit 0 =< x =< 3) wird nacheinander auf folgende
Speicherbänke zugegriffen.
Es werden die Vorgänge während der einzelnen "Clock-Phasen"
beschrieben (siehe Bild 3)
Clock-Zyklus (C1):
Der Prozessor startet einen neuen "Line-Read-Zugriff" während der "High-Phase" des ersten Clock-Zyklus durch:
Clock-Zyklus (C1):
Der Prozessor startet einen neuen "Line-Read-Zugriff" während der "High-Phase" des ersten Clock-Zyklus durch:
- - Ausgabe der "Adresse (N+1)" und der zugehörigen "Transfer- Attributes", wobei der Prozessor diese Signale während des gesamten Line-Transfers unverändert läßt
- - Gleichzeitiges Aktivieren des Signals "Transfer-Start (!TS → true)", um den Start des Bus-Zyklus anzuzeigen.
Der "Adreß-Komparator" vergleicht laufend die vom "Prozessor
68040" erzeugte Bus-Adresse - im dargestellten Fall (N+1) -
mit der erzeugten/gespeicherten Adresse im "Adress-Generator"
- im dargestellten Fall ebenfalls (N+1) -.
Zum Vergleich werden lediglich die "Adressen (A31 . . . A4)"
benötigt, da:
- - die "Adressen (A3, A2)" für den Zugriff auf den adressier ten Operanden (Byte, Word oder Long-Word) durch Freigabe der angesprochenen Speicherbank verwendet werden.
- - die "Adressen (A1, A0)" bei READ-Operationen ignoriert wer den, da immer der gesamte "32-Bit-Ausgangsport", der mit den "Adressen (A3, A2)" angesprochenen Speicherbank, frei gegeben wird.
Clock-Zyklus (C2):
Zu Beginn dieses Zyklus - das Kriterium dazu liefert das Signal "Transfer-Start (!TS = true)" - wird mit der positiven Flanke des "Taktsignals (BCLK)" das Ergebnis des Adressen vergleichs (Ausgang Adreß-Komparator) abgefragt. Abhängig vom Ergebnis dieser Abfrage - Idendität/Nicht- Identität - wird der Ablauf des restlichen Line-Transfers unterschiedlich behandelt und zwar:
Zu Beginn dieses Zyklus - das Kriterium dazu liefert das Signal "Transfer-Start (!TS = true)" - wird mit der positiven Flanke des "Taktsignals (BCLK)" das Ergebnis des Adressen vergleichs (Ausgang Adreß-Komparator) abgefragt. Abhängig vom Ergebnis dieser Abfrage - Idendität/Nicht- Identität - wird der Ablauf des restlichen Line-Transfers unterschiedlich behandelt und zwar:
Identität zwischen Bus-Adresse und erzeugter/gespeicherter
Adresse im Adreß-Generator bedeutet, daß die durch "Prefetch"
bereitgestellten "Line-Daten (N+1)" des vorhergehenden Line-
Zugriffs verwendet werden können und sich somit folgender
Ablauf "ohne" Wait-States ergibt:
Clock-Zyklus (C2):
Mit der Erkennung von "Addreß-Hit" bei der Abfrage des Aus gangs des Adreß-Komparators mit der positiven Flanke des Taktsignals BCLK zu Beginn dieses Zyklus, werden zum glei chen Zeitpunkt die "Line-Daten (N+1)" in die Register der "Data-Tranceiver" übernommen, sowie die "Adresse (N+2)" der nächsten Line durch Inkrementieren der "Adresse (N+1)" im Adreß-Generator erzeugt und damit der "Prefetch-Zugriff" auf die "Line-Daten (N+2)" gestartet.
Mit der Erkennung von "Addreß-Hit" bei der Abfrage des Aus gangs des Adreß-Komparators mit der positiven Flanke des Taktsignals BCLK zu Beginn dieses Zyklus, werden zum glei chen Zeitpunkt die "Line-Daten (N+1)" in die Register der "Data-Tranceiver" übernommen, sowie die "Adresse (N+2)" der nächsten Line durch Inkrementieren der "Adresse (N+1)" im Adreß-Generator erzeugt und damit der "Prefetch-Zugriff" auf die "Line-Daten (N+2)" gestartet.
Gleichzeitig werden die "Tranceiver-Ausgangsports", der durch
die "Lang-Wort-Startadresse (A3, A2)" adressierten Speicher
bank, freigegeben und damit das "1. Lang-Wort" der Line zum
Prozessor übertragen.
Der Abschluß dieses ersten Transfers wird durch Aktivieren
von "Transfer-Acknowledge (!TA → true)", das der Prozessor
am Ende diese Zyklus mit der positiven Flanke von "BCLK"
abtastet, signalisiert.
Clock-Zyklen (C3, C4, C5):
Während dieser Zyklen erfolgt die ebenfalls "wait-state-freie" Übertragung des zweiten, dritten und vierten Lang-Wortes der Line zum Prozessor durch Freigabe der Tranceiver-Ausgangsports der entsprechenden Speicherbänke.
Während dieser Zyklen erfolgt die ebenfalls "wait-state-freie" Übertragung des zweiten, dritten und vierten Lang-Wortes der Line zum Prozessor durch Freigabe der Tranceiver-Ausgangsports der entsprechenden Speicherbänke.
Das Kriterium, welche Speicherbank freizugeben ist, wird von
den "Adressen (A3, A2)" geliefert, die, ausgehend von der vom
Prozessor während des "Clock-Zyklus (C1)" ausgegebenen Start
adresse, zu Beginn dieser Zyklen inkrementiert werden und zwar
mit der positiven Flanke von "BCLK".
Das Ende jedes dieser "Lang-Wort-Lese-Zugriffe (2, 3 und 4)"
wird dem Prozessor ebenfalls durch Aktivieren von "Transfer-
Acknowledge (!TA → true)" mitgeteilt, das von diesem zum
Zeitpunkt der "positiven Flanke von BCLK" abgefragt wird.
Der "Prefetch-Zugriff" auf die "Line-Daten (N+2)" wird im Ver
lauf dieser Zyklen durchgeführt.
Da Nicht-Identität bedeutet, daß die durch "Prefetch" bereit
gestellten "Line-Daten (N+2)" des vorhergehenden Line-Zugriffs
nicht verwendet werden können, muß auf die Line-Daten (M)
erneut zugegriffen werden und zwar mit folgendem Ablauf:
Clock-Zyklus (W1/Wait-State-1):
Zu Beginn dieses Zyklus, der prinzipiell identisch mit dem entsprechenden Zugriffs-Zyklus bei einem Speicher mit "Ein facher 128-Bit-Architektur" ist, werden mit der positiven Flanke von "BCLK" die neue "Line-Start-Adresse (M)" in den Adreßgenerator geladen und damit der Speicher-Zugriff auf die "Line-Daten (M)" gestartet.
Zu Beginn dieses Zyklus, der prinzipiell identisch mit dem entsprechenden Zugriffs-Zyklus bei einem Speicher mit "Ein facher 128-Bit-Architektur" ist, werden mit der positiven Flanke von "BCLK" die neue "Line-Start-Adresse (M)" in den Adreßgenerator geladen und damit der Speicher-Zugriff auf die "Line-Daten (M)" gestartet.
Clock-Zyklen (Wn/Wait-States-n):
Entsprechend der Zugriffszeit der verwendeten Speicherelemente werden weitere "Wait-States (Wn)" eingebaut, wobei die Anzahl der "Wait-States" immer ein ganzzahliges Vielfaches der nicht teilbaren "Prozessor-Takt-Periode" ist.
Entsprechend der Zugriffszeit der verwendeten Speicherelemente werden weitere "Wait-States (Wn)" eingebaut, wobei die Anzahl der "Wait-States" immer ein ganzzahliges Vielfaches der nicht teilbaren "Prozessor-Takt-Periode" ist.
Clock-Zyklus (C2):
Zu Beginn dieses Zyklusses werden mit der positiven Flanke von "BCLK" die neuen "Line-Daten (M)", auf die während der "Wait-State-Zyklen (Wn)" zugegriffen wurde, in die "Transmit ter-Register" der "Data-Tranceiver" übernommen sowie gleich zeitig die "Adresse (M+1)" der nächsten Line durch Inkremen tieren der "Adresse (M)" im Adreß-Generator erzeugt und damit der "Prefetch-Zugriff" auf die "Line-Daten (M+1)" gestartet. Für die Übertragung des 1. Lang-Wortes der Line zum Prozes sor sowie Beendigung des Zyklus durch "Tranfer-Acknowledge (!TA → true)" gilt prinzipiell das gleiche wie bereits für den "Clock-Zyklus (C2)" eines Line-Transfers bei "Identität" beschrieben.
Zu Beginn dieses Zyklusses werden mit der positiven Flanke von "BCLK" die neuen "Line-Daten (M)", auf die während der "Wait-State-Zyklen (Wn)" zugegriffen wurde, in die "Transmit ter-Register" der "Data-Tranceiver" übernommen sowie gleich zeitig die "Adresse (M+1)" der nächsten Line durch Inkremen tieren der "Adresse (M)" im Adreß-Generator erzeugt und damit der "Prefetch-Zugriff" auf die "Line-Daten (M+1)" gestartet. Für die Übertragung des 1. Lang-Wortes der Line zum Prozes sor sowie Beendigung des Zyklus durch "Tranfer-Acknowledge (!TA → true)" gilt prinzipiell das gleiche wie bereits für den "Clock-Zyklus (C2)" eines Line-Transfers bei "Identität" beschrieben.
Clock-Zyklus (C3, C4, C5):
Für diese Zyklen gilt ebenfalls das gleiche wie für die ent sprechenden Zyklen bei "Identität", jedoch mit der Ausnahme, daß hier während deren Verlauf auf die "Line-Daten (M+1)" durch "Prefetch" zugegriffen wird.
Für diese Zyklen gilt ebenfalls das gleiche wie für die ent sprechenden Zyklen bei "Identität", jedoch mit der Ausnahme, daß hier während deren Verlauf auf die "Line-Daten (M+1)" durch "Prefetch" zugegriffen wird.
Da der Speicher zur Unterbringung einer "Line" mit einer Breite
von 128-Bit aufgebaut ist, muß jedes einzelne der 16 Bytes, aus
denen eine Line besteht, über ein eigenes "Write-Enable-Signal"
ansprechbar sein.
(siehe Write-Zugriffe beim "Konventionellen 32-Bit Speicher")
Dies bedeutet, daß für die Steuerung der Write-Zugriffe auf
die 4 Speicherbänke insgesamt 16 Write-Enable-Signale benötigt
werden, wobei diese durch Verknüpfung der Signale "Transfer-
Size (SIZ1, SIZ0)" mit den "Adressen (A3, A2, A1, A0)" gewonnen
werden.
Es werden die Vorgänge während der einzelnen "Clock-Phasen"
beschrieben (siehe Bild 4).
Clock-Zyklus (C1):
Prozessorseitig ist der Start sowie die Durchführung eines "Line-Write-Transfers" prinzipiell identisch mit dem eines "Line-Read-Transfers", d. h. er wird während der ersten Hälfte des ersten Taktzyklus durch Ausgabe der "Adressen (A31 . . . A0)" und der "Transfer-Attributes" gestartet, wobei der Prozessor diese Signale während des gesamten "Burst-Transfers" konstant hält.
Prozessorseitig ist der Start sowie die Durchführung eines "Line-Write-Transfers" prinzipiell identisch mit dem eines "Line-Read-Transfers", d. h. er wird während der ersten Hälfte des ersten Taktzyklus durch Ausgabe der "Adressen (A31 . . . A0)" und der "Transfer-Attributes" gestartet, wobei der Prozessor diese Signale während des gesamten "Burst-Transfers" konstant hält.
Gleichzeitig wird das Signal "Transfer-Start (!TS → true)"
aktiviert, um den Beginn des Buszyklus anzuzeigen.
Clock-Zyklus (C2):
Zu Beginn dieses Zyklusses werden mit der positiven Flanke von "BCLK" (identischer Ablauf wie "Line-Read-Prefetch") die "Line-Start-Adressen (A31 . . . A0)" in den Adreßgenerator übernommen.
Zu Beginn dieses Zyklusses werden mit der positiven Flanke von "BCLK" (identischer Ablauf wie "Line-Read-Prefetch") die "Line-Start-Adressen (A31 . . . A0)" in den Adreßgenerator übernommen.
Während der ersten Hälfte dieses Taktzyklus desaktiviert
der Prozessor das Signal "Transfer-Start (!TS → false)" und
legt, mit - t(setup) = 9 . . 23 ns @ 25 MHz (large Buffer) -,
das "1. Long-Word" auf den Daten-Bus.
Die Bus-Daten bleiben bis in die erste Hälfte des nächsten
Taktzyklus, mit -t(hold) = 9 ns @ 25 MHz-, gültig und werden
am Ende dieses Zyklus mit der positiven Flanke von "Bus-
Clock (BCLK)" in die entsprechenden "Receiver-Register" der
"Data-Tranceiver", der durch die "Lang-Wort-Startadresse
(A3, A2)" adressierten Speicherbank, geladen.
Da das Laden des "1. Long-Words" infolge der geringen "Write-
Access-Time" der Register ohne Wait-States durchgeführt wer
den kann, wird dem Prozessor, am Ende dieses Zyklus durch
Aktivieren von "Transfer-Acknowledge (!TA → true)", der Ab
schluß des Transfers mitgeteilt.
Weil sich die gespeicherte Adresse im Adreßgenerator frühes
tens zu Beginn des "Clock-Zyklus (C2)" des nächsten Line-Trans
fers ändert, stehen zum Umspeichern des ersten Lang-Worts aus
dem Register in die adressierte Speicherbank daher ca. 4 Takt-
Perioden, d. h. ca. 160 ns @ 25 MHz, zur Verfügung.
Anmerkung:
Ein späterer Zeitpunkt zur Adressenübernahme bei einem Burst- Write-Transfer ist ebenfalls denkbar, um eine größere "Write- Access-Time" beim Umspeichern des 2., 3. und besonders des 4. Lang-Wortes aus den Registern in die adressierten Speicher- Bänke zu erzielen (siehe z. B. Bild 5).
Ein späterer Zeitpunkt zur Adressenübernahme bei einem Burst- Write-Transfer ist ebenfalls denkbar, um eine größere "Write- Access-Time" beim Umspeichern des 2., 3. und besonders des 4. Lang-Wortes aus den Registern in die adressierten Speicher- Bänke zu erzielen (siehe z. B. Bild 5).
Clock-Zyklus (C3, C4, C5):
Diese Clock-Zyklen sind vorgesehen, um das 2., 3. und 4. Lang- Wort eines "Line-Write-Transfers" vom Prozessor zum Speicher zu übertragen.
Diese Clock-Zyklen sind vorgesehen, um das 2., 3. und 4. Lang- Wort eines "Line-Write-Transfers" vom Prozessor zum Speicher zu übertragen.
Während der ersten Hälfte der Taktzyklen legt der Prozessor,
mit - t(setup) = 9 . . 23 ns @ 25 MHz (large Buffer) -, das ent
sprechende Lang-Wort auf den Daten-Bus und hält dieses bis
in die erste Hälfte des nächsten Taktzyklus, mit
- t(hold) = 9 ns @ 25 MHz -, gültig.
Somit können die einzelnen Lang-Worte am Ende dieser Zyklen
mit der positiven Flanke von "BCLK" in die entsprechenden "Tran
ceiver-Register", der adressierten Speicherbank übernommen
und anschließend in dieselbe umgeladen werden.
Das Kriterium, welche Speicherbank adressiert ist, wird von
den "Adressen (A3, A2)" geliefert, die, ausgehend von der vom
Prozessor während des "Clock-Zyklus (C1)" ausgegebenen Start
adresse, zu Beginn dieser Zyklen inkrementiert werden und zwar
mit der positiven Flanke von "BCLK".
Damit ergibt sich die zur Verfügung stehende "Write-Access-
Time" für die einzelnen Lang-Worte zu:
2. Lang-Wort: ca. 3 Taktperioden, d. h. ca. 120 ns @ 25 MHz
3. Lang-Wort: ca. 2 Taktperioden, d. h. ca. 80 ns @ 25 MHz
4. Lang-Wort: ca. 1 Taktperioden, d. h. ca. 40 ns @ 25 MHz.
3. Lang-Wort: ca. 2 Taktperioden, d. h. ca. 80 ns @ 25 MHz
4. Lang-Wort: ca. 1 Taktperioden, d. h. ca. 40 ns @ 25 MHz.
Ein "Line-Write-Cycle" mit "Wait-States" beim Transfer des
4. Long-Words ist ebenfalls im Bild 4 dargestellt.
Bei einer Verschiebung des Zeitpunkts der Adressenübernahme
um eine Taktperiode vergrößert sich die zur Verfügung ste
hende "Write-Access-Time" (siehe Bild 5) um:
2. Lang-Wort: ca. 4 Taktperioden, d. h. ca. 160 ns @ 25 MHz
3. Lang-Wort: ca. 3 Taktperioden, d. h. ca. 120 ns @ 25 MHz
4. Lang-Wort: ca. 2 Taktperioden, d. h. ca. 80 ns @ 25 MHz.
3. Lang-Wort: ca. 3 Taktperioden, d. h. ca. 120 ns @ 25 MHz
4. Lang-Wort: ca. 2 Taktperioden, d. h. ca. 80 ns @ 25 MHz.
Das Ende jedes dieser "Lang-Wort-Schreib-Zugriffe (2, 3 und 4)"
wird dem Prozessor ebenfalls durch Aktivieren von "Transfer-
Acknowledge (!TA → true)" mitgeteilt, das von diesem zum
Zeitpunkt der "positiven Flanke von BCLK" abgefragt wird.
Anmerkung:
Für die Erzeugung der "Adressen (A3, A2)" sowie des Signals "Transfer-Acknowledge (!TA)" gilt das Gleiche wie bei den ent sprechenden Clock-Zyklen des bereits beschriebenen "Line-Read- Transfers".
Für die Erzeugung der "Adressen (A3, A2)" sowie des Signals "Transfer-Acknowledge (!TA)" gilt das Gleiche wie bei den ent sprechenden Clock-Zyklen des bereits beschriebenen "Line-Read- Transfers".
Claims (13)
- Leistungsgesteigerte Speicherarchitektur, insbesondere für 32-Bit Mikroprozessoren (wie z. B. "MOTOROLA MC 68040" oder "INTEL i486"), die mit einem sogenannten "Burst-Modus" ausgerüstet sind, gekenn zeichnet durch folgende Merkmale:
- 1
Die Speicherarchitektur ist speziell auf die "Burst-Fähigkeit" dieser Prozessoren zugeschnitten und ermöglicht durch sogenann tes "Line-Read-Prefetching" und "Line-Write-Delaying" gegenüber konventionellen Speicherarchitekturen bedeutend effektivere "Burst-Zugriffe" des Prozessors auf den Speicher, wobei Effekti vität in diesem Fall bedeutet, daß entweder:- - wesentliche Leistungssteigerungen durch eine geringere Anzahl von Wartezyklen (Wait-States) bei Verwendung von Speicherelemen ten gleicher Zugriffszeit möglich sind, oder
- - merkliche Kosteneinsparungen bei gleicher Systemleistung durch Verwendung von Speicherelementen mit größerer Zugriffszeit zu erzielen sind.
- Der "Effektivitätsgewinn" wird durch folgende Eigenschaften erzielt:
- 1.1
Anpassung der Speicherarchitektur an die "Burst-Fähigkeit" der Prozessoren geschieht derart, daß der Speicher, um den gleichzei tigen Zugriff auf alle Langworte innerhalb eines Bursts zu erlau ben, aus mehreren parallel geschalteten Speicherbänken aufgebaut ist, wobei deren Anzahl der Anzahl der Speicherzugriffe innerhalb des "Bursts" entspricht. - 1.2
Fähigkeit zur Durchführung des "Line-Read-Prefetching" dadurch, daß während des Ablaufs eines "Burst-Read-Transfers" mit der "Adresse (N)" bereits auf die nächste "Line (4 Langworte)" mit der "Adresse (N+1)" durch einen sogenannten "Line-Read-Prefetch" zugegriffen wird, so daß ein folgender "Burst-Read-Transfer" ohne Wartezyklen erfolgen kann, falls seine Adresse mit derjenigen übereinstimmt, auf die bereits durch "Prefetch" zugegriffen wurde.
Die Fähigkeit des Speichers zur Durchführung des "Line-Read-Pre fetching" wird durch folgende schaltungstechnischen Maßnahmen er möglicht: - 1.2.1
"Adreßgenerator" zur Speicherung der vom Prozessor ausgegebenen Basisadresse für den Burst-Zugriff oder zur Erzeugung der näch sten Basisadresse für den "Prefetch-Zugriff", wobei diese durch Inkrementieren der "Signifikanten Adreßbits" der vorhergehenden Basisadresse gewonnen wird, wobei signifikant heißt, daß dafür lediglich die "Adressen (A31 . . . A4)" benötigt werden.
Dabei wird die Speicherung oder Erzeugung der nächsten "Basis- Adresse" zu Beginn eines Burst-Transfers vorgenommen, wobei das Kriterium dafür, ob gespeichert oder inkrementiert werden soll, vom Ergebnis des Adressenvergleichs abgeleitet wird und zwar derart, daß bei "Identität (Address-Hit)" inkrementiert, wäh rend bei "Nicht Identität (Address-Miss)" gespeichert wird. - 1.2.2
"Adreßkomparator" zum Vergleich der vom Prozessor ausgegebenen Basisadresse mit der im Adreßgenerator gespeicherten "Prefetch- Adresse" sowie zur Erzeugung eines Signals, welches das Ergebnis dieses Vergleichs (Idendität/Nicht-Idendität) anzeigt, wobei dieses Signal:- - einerseits vom Adreßgenerator als Kriterium dafür verwendet wird, ob die Basisadresse des nächsten Burst-Transfers durch Speicherung oder durch Inkrementierung erzeugt werden soll und
- - andererseits als Kriterium dafür dient, ob die während des vorangegangenen Burst-Transfers durch "Prefetch" bereitgestell ten "Line-Daten" gültig sind und zwar derart, daß bei Identi tät die Daten zu Beginn des nächsten "Burst-Read-Transfers" in die "Transmitter-Register" abgespeichert werden, während bei Nicht-Identität dieses Abspeichern erst nach Durchfüh rung des neuen Lese-Zugriffs vorgenommen wird.
- 1.2.3
"Bus-Tranceiver" mit Tri-State-Ausgängen und integrierten Recei ver- und Transmitter-Registern, sogenannte "Registered-Tranceiver", wobei jeder Speicherbank ein 32-Bit-Tranceiver vorgeschaltet ist und zwar derart, daß die Receiverein-/ausgänge dieser Bauelemen te mit den Datenein-/ausgängen der Speicherbänke verbunden sind, während die entsprechenden Transmitterein-/ausgänge untereinan der und mit den zugehörigen Datenein-/ausgängen des Prozessors verbunden sind (Datenbus).
Die "Transmitter-Register" haben dabei die Aufgabe, die aus den Speicherbänken gelesenen Daten zu Beginn eines Burst-Transfers zwischenzuspeichern und ermöglichen somit den erneuten Zugriff (Prefetch) auf die Speicherbänke während des Burst-Transfers. Durch sequentielles Aufschalten (Tri-State) der Registerausgänge auf den Datenbus werden die in den Registern zwischengespeicher ten Daten während des "Burst-Read-Transfers" zum Prozessor über tragen. - 1.3
Fähigkeit zur Durchführung des "Line-Write-Delaying", wobei durch ein, gegenüber den "Write-Transfers" des Prozessors verzögertes, quasi gleichzeitiges Einschreiben der Daten in die Speicherbänke, Schreibzugriffe meist ohne Wait-States zu erzielen sind.
Im Gegensatz zum "Line-Read-Prefetching" gelten diese Vorteile jedoch generell für alle "Line-Write-Zugriffe" unabhängig von "Address-Hit" oder "Address-Miss".
Ermöglicht wird dies durch folgende schaltungstechnischen Maß nahmen, wobei die dafür benötigten Bauteile, mit Ausnahme des Adreßkomparators, dieselben sind, jedoch mit etwas anderer Funk tion, wie beim "Line-Read-Prefetching": - 1.3.1
"Adreßgenerator" zur Speicherung der vom Prozessor ausgegebenen Basisadresse für den "Burst-Write-Zugriff" ,wobei jedoch im Gegen satz zur Adreßübernahme zu Beginn des Transfers beim "Line-Read- Prefetching", hier ein späterer Zeitpunkt gewählt wird oder ge wählt werden kann, um eine größere "Write-Access-Time" beim Umspeichern des zweiten, dritten und besonders des vierten "Lang- Wortes" aus den "Receiver-Registern" in die Speicher-Bänke zu erzielen. - 1.3.2
"Bus-Tranceiver" mit Tri-State-Ausgängen und integrierten "Recei ver- und Transmitter-Registern", wobei deren schaltungstechnische Anordnung identisch mit der von "Merkmal (1.2.3)" ist.
Die "Receiver-Register" haben dabei die Aufgabe, die sequentiell während des "Burst-Write-Transfers" vom Prozessor gelieferten Daten zwischenzuspeichern, um diese anschließend, quasi simultan, in die Speicherbänke umzuladen.
Der Zweck dabei ist, daß die Dauer des Einschreibvorgangs bis zum Zeitpunkt der nächsten Adressenänderung verlängert wird und somit die zur Verfügung stehende "Write-Access-Time" wesent lich größer ist, wie beim "normalen" Schreibzugriff ohne "Line- Write-Delaying". - 1.4
Möglichkeit des Aufbaus von Speichersystemen, die sich entspre chend den Anforderungen an das zu realisierende Mikroprozessor system aus mehreren Speichersegmenten zusammensetzen können, wie z. B. aus:- "Festwert-Speicher" zur Unterbringung des Betriebssystems (z . B. PROM oder EPROM-Technologie)
- "Programm-Speicher" zur Unterbringung des Anwenderprogramms (z. B. EEPROM oder FLASH-Technologie für Onboard-Programmierung)
- "Schneller Schreib/Lese-Speicher" zur Unterbringung von Daten und Operanden (z. B. SRAM-Technologie)
- wobei für jedes dieser Speichersegmente die Fähigkeit der Lei stungssteigerung durch "Line-Read-Prefetching" bzw. "Line-Write- Delaying" vorgesehen oder darauf verzichtet werden kann.
Im ersteren Fall bedeutet dies, daß sich jede Speicherbank wie derum aus mehreren parallel geschalteten Speichersegmenten zusam mensetzen kann, wobei die Parallelschaltung "vor" den Tranceiver- Bänken durch Verknüpfung der entsprechenden I/O-Pins der Spei cherelemente vorgenommen wird.
Im zweiten Fall jedoch, bei dem von dieser Möglichkeit der Lei stungssteigerung nicht Gebrauch gemacht wird, wie z. B. beim "System Speicher", wird das entsprechende Speichersegment konventionell, d. h. mit einer Breite von 32-Bit aufgebaut, wobei es vorteilhaft ist, diese Segmente, zur Vermeidung von sogenannten "Bus-Konflik ten", ebenfalls mit "Bus-Tranceivern", jedoch ohne integrierte Register, auszurüsten.
Die Parallelschaltung solcher Segmente mit den übrigen leistungs gesteigerten Segmenten geschieht dann "hinter" den Tranceiver-Bän ken durch Verknüpfung der entsprechenden Tranceiver-I/O-Pins.
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
DE19934337437 DE4337437A1 (de) | 1993-11-03 | 1993-11-03 | Leistungsgesteigerte Speicherarchitektur insbesondere für 32-Bit Mikroprozessoren |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
DE19934337437 DE4337437A1 (de) | 1993-11-03 | 1993-11-03 | Leistungsgesteigerte Speicherarchitektur insbesondere für 32-Bit Mikroprozessoren |
Publications (1)
Publication Number | Publication Date |
---|---|
DE4337437A1 true DE4337437A1 (de) | 1995-05-04 |
Family
ID=6501651
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
DE19934337437 Withdrawn DE4337437A1 (de) | 1993-11-03 | 1993-11-03 | Leistungsgesteigerte Speicherarchitektur insbesondere für 32-Bit Mikroprozessoren |
Country Status (1)
Country | Link |
---|---|
DE (1) | DE4337437A1 (de) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
DE10322855A1 (de) * | 2003-05-21 | 2004-12-16 | Lfk-Lenkflugkörpersysteme Gmbh | Verfahren zur Realisierung eines sogenannten "Zero-Wait-State-Main-Memorys", insbesondere für den Einsatz in Hochleistungs-Echtzeit-Rechnersystemen für (Military)-Embedded-Control-Applications" |
CN113377684A (zh) * | 2020-03-09 | 2021-09-10 | 瑞昱半导体股份有限公司 | 数据写入系统与方法 |
-
1993
- 1993-11-03 DE DE19934337437 patent/DE4337437A1/de not_active Withdrawn
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
DE10322855A1 (de) * | 2003-05-21 | 2004-12-16 | Lfk-Lenkflugkörpersysteme Gmbh | Verfahren zur Realisierung eines sogenannten "Zero-Wait-State-Main-Memorys", insbesondere für den Einsatz in Hochleistungs-Echtzeit-Rechnersystemen für (Military)-Embedded-Control-Applications" |
CN113377684A (zh) * | 2020-03-09 | 2021-09-10 | 瑞昱半导体股份有限公司 | 数据写入系统与方法 |
CN113377684B (zh) * | 2020-03-09 | 2024-03-08 | 瑞昱半导体股份有限公司 | 数据写入系统与方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
DE3887324T2 (de) | Speicheranordnung. | |
DE3909896C2 (de) | ||
DE68926936T2 (de) | Vorrichtung und Technik für Burstprogrammierung | |
DE69826863T2 (de) | Verfahren und vorrichtung zur abstimmung eines zur verrieglung digitaler signalen gebrauchten taktsignals und speichervorrichtung die sie verwendet | |
DE19723065B4 (de) | Halbleitereinrichtung und Computersystem | |
DE69124905T2 (de) | Datenverarbeitungsvorrichtung zur dynamischen Zeiteinstellung in einem dynamischen Speichersystem | |
DE69123890T2 (de) | Synchronisierter Burstzugriffsspeicher und Wortleitungstreiber dafür | |
DE3724317C2 (de) | ||
DE19652310C2 (de) | Halbleiterspeichervorrichtung, die ein asynchrones Signal verwendet | |
DE69814137T2 (de) | Cache-speicherbetrieb | |
DE69203842T2 (de) | Speichersteuerungsvorrichtung mit Snoop-Mechanismus. | |
DE3750107T2 (de) | Cachespeicherkohärenzsteuerung mit einem Speicher, der ein laufendes Lesen anzeigt. | |
DE10307912B4 (de) | Speichersteuerschaltung, Halbleiterspeicherschaltung und Halbleiterspeichersystem und zugehörige Speichersteuer- und Datenschreibverfahren | |
DE69625486T2 (de) | Speichersteuerung zur nicht sequentiellen ausführung von schreibbefehlen | |
DE68902193T2 (de) | Datenspeicheranordnung. | |
DE69031411T2 (de) | Verfahren und Anordnung zum Lesen, Schreiben und Auffrischen eines Speichers mit direktem virtuellem oder physikalischem Zugriff | |
DE3852695T2 (de) | Multiprozessorsystem mit mehreren Speichern. | |
DE68920419T2 (de) | Verfahren und Anordnung für eine leistungsfähige DRAM-Steuerung. | |
DE69333319T2 (de) | Datenverarbeitungssystem mit synchronem, dynamischem Speicher in integrierter Schaltkreistechnik | |
DE10101036A1 (de) | Schnittstellenschaltungsvorrichtung zum Ausführen einer Datenabtastung zum optimalen Freigabezeitpunkt | |
DE3885985T2 (de) | Speichersteueranordnung für ein Daten verarbeitendes System. | |
DE3850514T2 (de) | Cachespeicher mit Treffervorhersagelogik. | |
DE10084982B4 (de) | Steuern einer Burst-Sequenz in synchronen Speichern | |
DE68926374T2 (de) | Seriellumsetzungssteuerungssystem für Hauptspeicherreferenz | |
DE19581689B4 (de) | Einrichtung und Verfahren zum Erhöhen der Burst-Rate von EDO-DRAMs in einem Computersystem |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
8122 | Nonbinding interest in granting licenses declared | ||
8141 | Disposal/no request for examination |