DE4337437A1 - Leistungsgesteigerte Speicherarchitektur insbesondere für 32-Bit Mikroprozessoren - Google Patents

Leistungsgesteigerte Speicherarchitektur insbesondere für 32-Bit Mikroprozessoren

Info

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
Application number
DE19934337437
Other languages
English (en)
Inventor
Ingo Dipl Ing Bohr
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
BOHR INGO DIPL ING FH
Original Assignee
BOHR INGO DIPL ING FH
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by BOHR INGO DIPL ING FH filed Critical BOHR INGO DIPL ING FH
Priority to DE19934337437 priority Critical patent/DE4337437A1/de
Publication of DE4337437A1 publication Critical patent/DE4337437A1/de
Withdrawn legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/20Handling requests for interconnection or transfer for access to input/output bus
    • G06F13/28Handling requests for interconnection or transfer for access to input/output bus using burst mode transfer, e.g. direct memory access DMA, cycle steal
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0215Addressing 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

(2) Gattung
Die Erfindung betrifft eine leistungsgesteigerte Speicherarchitek­ tur nach dem Oberbegriff des Hauptanspruchs.
(3) Angaben zur Gattung
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.
(4) Stand der Technik
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).
(5) Kritik des Standes der Technik
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ß.
(6) Aufgabe
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.
(7) Lösung
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".
(8) Erzielbare Vorteile
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.
Leistungsvergleich SRAM-Speicher mit t(acc) = 45 ns
Für einen "No-Wait-State-Zugriff" gilt:
Zugriffszeit <= t(acc) + t(dek) d. h. <= 65 ns
Leistungsvergleich EEPROM-Speicher mit t(acc) = 120 ns
Für einen "No-Wait-State-Zugriff" gilt:
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.
(9) Beschreibung eines Ausführungsbeispiels
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.
(9.1) Allgemeines zur Auslegung des Speicher-Subsystems für den "32-Bit Mikroprozessor MC 68040" (9.1.1) Zugriffsarten sowie Architekturmerkmale des Mikroprozes­ sors "MC 68040", die für die Auslegung des Speichers relevant sind
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:
  • - 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.
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.
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).
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.
(9.1.2) Allgemeines zur Steuerung der Speicherzugriffe
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.
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.
(9.1.2.1) Allgemeines zur Steuerung der "READ-Zugriffe"
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.
(9.1.2.2) Allgemeines zur Steuerung der "WRITE-Zugriffe"
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.
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.
(9.1.2.3) Berechnung der "Wait-States"
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.
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
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:
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).
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).
(9.2) Aufbau und Funktion eines Ausführungsbeispiels
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.
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.
(9.2.1) Aufbau und Funktion des "Memory-Blocks"
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.
(9.2.2) Aufbau und Funktion des "Tranceiver-Blocks"
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".
(9.2.3) Aufbau und Funktion des "Control-Blocks"
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.
(9.2.3.1) Funktion des "Adress-Generators"
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.
(9.2.3.2) Funktion des "Adress-Komparators"
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.
(9.2.3.3) Funktion der "Memory-Control" (9.2.3.3.1) Allgemeines zur Steuerung der "READ-Zugriffe" bei einem "128-Bit Speicher"
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.
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.
Beispiel
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.
Beispiel
Bei einem "Burst-Transfer" mit der Langwort-Startadresse (A3, A2 = x mit 0 =< x =< 3) wird nacheinander auf folgende Speicherbänke zugegriffen.
(9.2.3.3.2) Zugriffssteuerung bei "Line-Read-Prefetch"
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:
  • - 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:
Line-Transfer bei "Identität (Addreß-Hit)"
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.
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.
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.
Line-Transfer bei "Nicht-Identität (Address-Miss)"
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.
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.
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.
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.
(9.2.3.3.3) Allgemeines zur Steuerung der "WRITE-Zugriffe" bei einem "128-Bit Speicher"
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.
(9.2.3.3.4) Zugriffssteuerung bei "Line-Write-Delay"
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.
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.
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).
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.
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.
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.
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".

Claims (13)

  1. 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:
  2. 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.
  3. Der "Effektivitätsgewinn" wird durch folgende Eigenschaften erzielt:
  4. 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.
  5. 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:
  6. 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.
  7. 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.
  8. 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.
  9. 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":
  10. 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.
  11. 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".
  12. 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)
  13. 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.
DE19934337437 1993-11-03 1993-11-03 Leistungsgesteigerte Speicherarchitektur insbesondere für 32-Bit Mikroprozessoren Withdrawn DE4337437A1 (de)

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)

* Cited by examiner, † Cited by third party
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 瑞昱半导体股份有限公司 数据写入系统与方法

Cited By (3)

* Cited by examiner, † Cited by third party
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