-
Diese
Erfindung betrifft eine Speicherschnittstelle. Insbesondere betrifft
die Erfindung eine Schnittstelle zu Host-Controllern.
-
Beschreibung verwandter Technik
-
Speichervorrichtungen,
wie etwa Diskettenlaufwerke, Festplatten und CD-ROM-Laufwerke sind üblicherweise
durch eine Integrated Drive Electronics- (IDE-)Schnittstelle, auch
Advanced Technology Attachment (ATA) genannt, mit einem Rechner
verbunden. Paralleles ATA ermöglicht
es bis zu zwei Vorrichtungen, unter Verwendung eines Master/Slave-Datenaustauschverfahrens
mit einem einzigen Anschluß verbunden
zu sein. Eine ATA-Vorrichtung ist als Master konfiguriert und die
andere als Slave. Diese Konfiguration ermöglicht es, daß der Controller einer
Vorrichtung der anderen Vorrichtung sagt, wann sie Daten an den
oder von dem Rechner übertragen
kann. Beide Vorrichtungen sind über
ein Flachbandkabel in Reihe geschaltet (daisy-chained), das ein
Multidrop-Bus ohne Abschlußwiderstand
ist. Dieser Bus oder diese Verbindung wird üblicherweise als paralleler
Kanal bezeichnet. Zusätzlich
kann ein Personal Computer (PC) zwei parallele ATA-Kanäle haben:
einen primären
Kanal und einen sekundären Kanal.
-
Die
parallele ATA-Schnittstelle gibt es in im Wesentlichen gleicher
Form seit 1989 und sie wurde zur in den größten Mengen gefertigten Diskettenlaufwerkvorrichtung.
Wenn der Bedarf nach höherer Übertragungs-
und Speicherbandbreite jedoch steigt, nähert sich das parallele ATA
seiner Leistungsgrenze. Serielles ATA wurde eingeführt, um
paralleles ATA zu ersetzen. Serielles ATA verbindet jede der Vorrichtungen
mit einzelnen Kabeln auf eine Punkt-zu-Punkt-Weise. Die Vorteile
von seriellem ATA umfassen hohe Datenübertragungsraten bis zu 150
MB/s (im Vergleich zu 100 MB/s für
paralleles ATA), niedrige Kosten, leichte Installation und Konfiguration,
und niedrige Anschlußzahl,
usw.
-
Wegen
der derzeit existierenden großen Menge
von parallelem ATA kann der Übergang
von parallelem ATA zu seriellem ATA jedoch ein Problem sein. Um Übergangskosten
zu vermeiden und einfache Migrationswege bereitzustellen, wurden
Software-Treiber für
paralleles ATA abgewandelt, um seriellem ATA Rechnung zu tragen,
und eine neue Schnittstelle für
serielles ATA wurde so konstruiert, daß sie mit parallelen ATA-Vorrichtungen
kompatibel ist. Zum Beispiel ist der Hardware-Emulator eine Hardware-Schaltung, die für den Treiber
für paralleles
ATA transparent arbeitet, so daß der
Treiber für
paralleles ATA die seriellen ATA-Vorrichtungen steuern kann, als
wären sie
parallele ATA-Vorrichtungen.
Bei der Verwendung von seriellen ATA-Vorrichtungen mit einem Treiber
für paralleles
ATA gibt es Bedarf nach unabhängiger
und gleichzeitiger Datenübertragung.
-
KURZE BESCHREIBUNG DER ZEICHNUNGEN
-
Die
Merkmale und Vorteile der vorliegenden Erfindung werden aus der
folgenden ausführlichen Beschreibung
der vorliegenden Erfindung deutlich. Es ist:
-
1 ein
Diagramm, das ein System darstellt, in dem eine erfindungsgemäße Ausführungsform
genutzt werden kann.
-
2 ein
Diagramm, das einen in 1 dargestellten ATA-Controller
darstellt, der einen Hardware-Emulator verwendet.
-
3 ein
Diagramm, das einen Emulator in einem in 2 dargestellten
ATA-Controller darstellt.
-
4 ein
Flußdiagramm,
das einen Prozeß zur
Emulation einer Reaktion von einem parallelen Kanal auf der Grundlage
einer Zugriffsart gemäß einer
erfindungsgemäßen Ausführungsform
darstellt.
-
5 ein
Flußdiagramm,
das einen Prozeß zur
Emulation einer Reaktion darstellt, wenn die Zugriffsart eine erste
Zugriffsart gemäß einer
erfindungsgemäßen Ausführungsform
ist.
-
6 eine
Flußdiagrammdarstellung
einer Ausführungsform
einer Software-Programmierungsfolge
in Bezug auf die Einstellung des DEV-Bits.
-
BESCHREIBUNG
-
In
der folgenden Beschreibung werden zum Zweck der Erklärung zahlreiche
Einzelheiten dargelegt, um ein gründliches Verständnis der
vorliegenden Erfindung bereitzustellen. Dem Fachmann wird jedoch
deutlich, daß die
speziellen Einzelheiten nicht erforderlich sind, um die vorliegende
Erfindung zu nutzen. In anderen Fällen werden bekannte elektrische
Strukturen und Schaltungen in Form eines Blockschaltbilds dargestellt,
um die vorliegende Erfindung nicht zu verdecken.
-
1 ist
ein Diagramm, das ein Rechnersystem 100 darstellt, in dem
eine erfindungsgemäße Ausführungsform
genutzt werden kann. Das Rechnersystem 100 enthält einen
Prozessor 110, eine Verbindung 120, einen Memory
Controller Hub (MCH) 130, einen Basic Input/Output System-Speicher 135,
einen Systemspeicher 140, einen Input/Output Controller
Hub (ICH) 150, serielle ATA-Einrichtungen 176 und 178,
eine Massenspeichereinrichtung 170 und Eingabe-/Ausgabe-Einrichtungen 1801 bis 180K.
-
Der
Prozessor 110 stellt eine Zentraleinheit jeder Art von
Architektur dar, wie etwa eingebettete Prozessoren, Mikro-Controller,
digitale Signalprozessoren, superskalare Rechner, Vektorprozessoren, Single
Instruction Multiple Data (SIMD)-Rechner, Rechner mit komplexem
Befehlssatz (Complex Instruction Set Computers (CISC)), Rechner
mit reduziertem Befehlssatz (Reduced Instruction Set Computers (RISC)),
Very Long Instruction Word (VLIW) oder gemischte Architektur. In
einer Ausführungsform
ist der Prozessor 110 mit dem Intel-Architektur (IA)-Prozessor,
wie etwa mit dem IA-32 und dem IA-64, kompatibel. Der Prozessor 110 umfaßt typischerweise
eine Anzahl von Steuerregistern, um Speicherverwaltungsaufgaben,
wie etwa virtuellen Speicher und Cache-Speicher, zu unterstützen. Diese
Aufgaben können
Paging und Segmentierung umfassen. Der Chip mit dem Prozessor 110 kann
nur einen Prozessorkern oder mehr als einen Prozessorkern haben.
Die Verbindung 120 stellt Schnittstellensignale bereit,
um dem Prozessor 110 zu ermöglichen, mit anderen Prozessoren
oder Einrichtungen, z.B. dem MCH 130, zu kommunizieren.
Die Verbindung 120 kann eine Konfiguration mit einem Prozessor
oder mit mehreren Prozessoren unterstützen. Die Verbindung 120 kann
parallel, sequentiell, mit Pipeline-Verarbeitung, asynchron, synchron
oder jede Kombination davon sein. Die Verbindung 120 kann Punkt-zu-Punkt
sein oder kann mit mehr als zwei Chips verbunden sein.
-
Der
MCH 130 stellt Steuerung und Konfiguration von Speicher
und Eingabe-/Ausgabe-Einrichtungen,
wie etwa dem Systemspeicher 140 und dem ICH 150 bereit.
Der MCH 130 kann in einen Chipsatz integriert sein, der
mehrere Funktionen integriert, wie etwa den abgeschotteten Ausführungsmodus, Host-zur-Peripheriebusschnittstelle,
Speichersteuerung. Zur Verdeutlichung sind nicht alle Peripheriebusse
dargestellt. Es ist vorgesehen, daß auch das System 100 Peripheriebusse,
wie etwa Peripheral Component Interconnect (PCI), Accelerated Graphics
Port (AGP), Industry Standard Architecture (ISA) und Universal Serial
Bus (USB) usw. umfaßt.
In einer Ausführungsform
kann der MCH 130 im selben Chip sein wie der Prozessor 110.
In manchen Ausführungsformen
kann derselbe MCH 130 für
alle Kerne oder Prozessoren in dem Chip mit den Prozessoren arbeiten.
In anderen Ausführungsformen
kann der MCH 130 verschiedene Teile umfassen, die getrennt
für verschiedene
Kerne oder Prozessoren in dem Chip mit den Prozessoren arbeiten.
-
Der
BIOS-Speicher 135 speichert Startcode und Startdaten. Der
BIOS-Speicher 135 ist normalerweise mit nicht flüchtigem
Speicher implementiert, wie etwa Festwertspeicher (ROM), Flashspeicher und
anderen ähnlichen
Speichern. Der BIOS-Speicher 135 kann auch im Inneren des
MCH 130 gespeichert sein. Der BIOS-Speicher 135 kann
einen Treiber 138 für
paralleles ATA enthalten, um die seriellen ATA-Einrichtungen 176 und 178 über den
ICH 150 zu steuern.
-
Der
Systemspeicher 140 speichert Systemcode und Systemdaten.
Der Systemspeicher 140 wird normalerweise mit dynamischem
Random Access Memory (DRAM) oder statischem Random Access Memory
(SRAM) umgesetzt. Andere Arten von Speicher können verwendet werden, einschließlich solchen,
die nicht aufgefrischt werden müssen.
Der Systemspeicher kann Programmcode oder Codesegmente enthalten,
die eine erfindungsgemäße Ausführungsform
implementieren. Der Systemspeicher kann auch einen Treiber 145 für paralleles
ATA umfassen. Der Treiber 145 für paralleles ATA kann Teil
eines Betriebssystems (OS) oder eines Anwendungsprogramms sein.
Der Treiber 145 für
paralleles ATA greift über
den ICH 150 auf die seriellen ATA-Einrichtungen 176 und 178 zu.
Der Treiber 138 für
paralleles ATA im BIOS-Speicher 135 und der Treiber 145 für paralleles
ATA im Speicher 140 können
nebeneinander bestehen oder nicht.
-
Der
ICH 150 hat eine Anzahl von Funktionen, die konstruiert
sind, Eingabe-/Ausgabefunktionen
zu unterstützen.
Der ICH 150 kann auch zusammen mit dem MCH 130 oder
von diesem getrennt in einen Chipsatz integriert sein, um Eingabe-/Ausgabefunktionen
auszuführen.
Der ICH 150 kann eine Anzahl von Schnittstellen- und Eingabe-/Ausgabefunktionen umfassen,
wie etwa PCI-Bus-Schnittstelle, Prozessorschnittstelle, Interrupt
Controller, Direct Memory Access (DMA)-Controller, Energiesparlogik,
Zeitgeber, Universal Serial Bus (USB)-Schnittstelle, Massenspeicherschnittstelle,
Low Pin Count (LPC)-Schnittstelle
usw. Insbesondere umfaßt
der ICH 150 einen ATA-Controller 155, um die seriellen ATA-Einrichtungen 176 und 178 zu
steuern. Der ATA-Controller 155 hat einen Hardware-Emulator
für umgekehrte
Kompatibilität
mit den Treibern für
paralleles ATA. Der ATA-Controller 155 stellt einen Übergangsweg
für Kunden
bereit, um die serielle ATA-Schnittstelle
zu nutzen und dabei die bestehenden Treiber für paralleles ATA zu verwenden.
-
Die
seriellen ATA-Einrichtungen 176 und 178 sind Massenspeichereinrichtungen
oder eine Festplatte, um Archivinformationen zu speichern, wie etwa
Programme, Dateien, Daten, Anwendung, Betriebssysteme usw. Die seriellen
ATA-Einrichtungen 176 und 178 sind mit dem Controller 155 des
Festplattenlaufwerks über
serielle ATA-Schnittstellensignale 179 verbunden. Die Schnittstelle,
Protokolle und Standards für
serielles ATA folgen dem vorgeschlagenen Entwurf „Serial
ATA/High Speed Serialized AT Attachment" von der Serial ATA Workgroup, Revision 1.0.0.1,
veröffentlicht
am 9. April 2001. Die Massenspeichereinrichtung 170 speichert
weitere Archivinformationen. Die Massenspeichereinrichtung 170 kann
Compact Disc (CD) ROM 172, Disketten 174 und Festplattenlaufwerk 176 und
jede andere magnetische oder optische Speichereinrichtung umfassen.
Die Massenspeichereinrichtung 170 stellt einen Mechanismus
bereit, um maschinenlesbare Medien zu lesen.
-
Die
Eingabe-/Ausgabeeinrichtungen 1801 bis 180K können jede
Eingabe-/Ausgabeeinrichtung umfassen,
um Eingabe-/Ausgabefunktionen auszuführen. Beispiele für Eingabe-/Ausgabeeinrichtungen 1801 bis 180K umfassen
Controller für
Eingabeeinrichtungen (z.B. Tastatur, Maus, Rollkugel, Zeigeeinrichtung),
Medienkarte (z.B. Audio, Video, Graphik), Netzwerkkarte und andere
Peripheriecontroller.
-
In
einer parallelen ATA-Schnittstelle präsentiert die Slave-Einrichtung
nach einem Einschaltvorgang, einem Hardware- oder Software-Neustart
oder nach Ausführung
eines Befehls zur Diagnose der vollziehenden Einrichtung (Executive
Device Diagnostic command) der Master-Einrichtung den diagnostischen
Status über
eine PDIAG-Leitung im ATA-Flachbandkabel.
Durch Beobachten des Status auf dem PDIAG-Signal aktualisiert die
Master-Einrichtung die Status- und Fehlerregister entsprechend.
Für eine
serielle ATA-Schnittstelle
gibt es einen derartigen direkten Datenaustausch zwischen den zwei
seriellen ATA-Einrichtungen nicht. Zusätzlich beobachten in einer
parallelen ATA-Schnittstelle beide ATA-Einrichtungen auf demselben
Kanal die Signalaktivität
auf dem Kabel. Zum Beispiel wird der Schreibzugriff auf die ATA-Befehlsblockregister
(außer
die Daten- und Befehlsregister) von beiden Einrichtungen gesehen
und akzeptiert.
-
Um
das Zusammenspiel zu imitieren, das für den Treiber 138 für paralleles
ATA sichtbar ist, leitet der Emulator in dem ATA-Controller 155 Software-Zugriffe
weiter und verarbeitet sie auf beiden seriellen ATA-Einrichtungen 176 und 178,
die auf virtuellem ATA-Kanal
als parallele ATA-Einrichtungen abgebildet werden. Zusätzlich leitet
der Emulator auch die Unterbrechung der seriellen ATA-Einrichtungen
an entweder Unterbrechungsanforderung IRQ 14 oder Unterbrechungsanforderung
IRQ 15.
-
2 ist
ein Diagramm, das den ATA-Controller 155 darstellt, der
einen Hardware-Emulator 210 verwendet.
Der ATA-Controller 155 umfaßt einen Emulator 210 und
serielle ATA-Host-Controller (1 und 2) 220 und 230.
Der Emulator 210 emuliert eine Reaktion einer parallelen
ATA-Einrichtung, wenn er mit dem Treiber 138 für paralleles
ATA interagiert. Der Emulator 210 ist eine Hardware-Schaltung,
die transparent für
den Treiber 138 für
paralleles ATA arbeitet, so daß der
Treiber 138 für
paralleles ATA die seriellen ATA-Einrichtungen 176 und 178 immer
noch steuern kann, als ob sie parallele ATA-Einrichtungen wären. Der
Emulator 210 kann ausgeschaltet werden, wenn der ATA-Treiber
direkt für
die seriellen ATA-Einrichtungen 176 und 178 geschrieben
ist.
-
Die
seriellen ATA-Host-Controller 220 und 230, die
auch als die seriellen Ports bezeichnet werden, enthalten Register,
Steuerschaltungen und Schnittstellenschaltungen für die seriellen
ATA-Einrichtungen 176 bzw. 178. Insbesondere enthalten
die seriellen ATA-Host-Controller 220 und 230 die
Anforderungspakete der seriellen Ports (1 und 2) 225 bzw. 235,
die die Betriebsregister enthalten, die die entsprechenden seriellen
ATA-Einrichtungen 176 und 178 steuern und konfigurieren.
Ein derartiges in der ATA-Spezifikation beschriebenes Register ist
das Device/Head-Register, das die Nummern für die Einrichtung und den Kopf
enthält.
-
Der
Emulator 210 wählt über die
Auswahlsignale für
Port 1 oder Port 2 einen seriellen Port als dem parallelen Kanal
zugeordneten aus. Der Emulator 210 schreibt Daten über den
Datenschreibsignalweg auf den ausgewählten seriellen Port und liest über die
entsprechenden Datenlesesignalwege Daten aus dem ausgewählten seriellen
Port. Die seriellen ATA-Host-Controller 220 und 230 stellen
dem Emulator 210 die Status- und Fehlerzustände bereit.
-
3 ist
ein Diagramm, das den Emulator 210 in dem in 2 dargestellten
ATA-Controller darstellt.
Der Emulator 210 umfaßt
einen Zugriffsdetektor 310, eine Zuordnungsschaltung 320,
eine Emulationszustandsmaschine 330, einen emulierten Registersatz
des Anforderungspakets (emulated task file register set) 340 und
einen Wähler
des seriellen Ports 350. Der Zugriffsdetektor 310 erkennt
eine Zugriffsart eines Zugriffs auf einen der beiden seriellen Ports 220 und 230,
die die Schnittstelle zu den seriellen Speichereinrichtungen 176 und 178 bilden.
Der Zugriff wird durch den Treiber für paralleles ATA 138 bereitgestellt
und ist für
einen der parallelen Kanäle vorgesehen,
die über
die Register der parallelen Kanäle
die Schnittstelle zu den parallelen Speichereinrichtungen bilden.
-
Die
Zuordnungsschaltung 320 ordnet die seriellen Ports den
parallelen Kanälen
zu. Die Zuordnung kann durch eine Adressenübersetzung durchgeführt werden.
Ein serieller Port kann auch gemäß einem
Einrichtungs- (DEV-) Bit in dem Einrichtung/Kopf (Device/Head)-Register einem parallelen Master-
oder Slavekanal zugeordnet werden.
-
Die
Emulationszustandsmaschine 330 emuliert eine Reaktion von
einem der parallelen Kanäle auf
der Grundlage der Zugriffsart, die durch den Zugriffsdetektor 310 erkannt
wurde, und des zugeordneten seriellen Ports, der durch die Zuordnungsschaltung 320 bereitgestellt
wurde. Die Zustandsmaschine 330 umfaßt eine Anzahl von Zuständen, um eine
Folge von Operationen gemäß der Zugriffsart auszuführen. Zum
Beispiel gibt es mehrere Zustande, die Emulation der Reaktion gemäß verschiedenen
Zugriffsarten entsprechen, und einen Unterbrechungszustand, der
Emulation von Unterbrechungserzeugung entspricht.
-
Der
emulierte Registersatz 340 des Anforderungspakets (emulated
task file register set) emuliert die Anforderungspaketregister der
parallelen Kanäle. Diese
Register können Informationen über die
Einrichtung (DEV), belegte Bits (BSY) und das Fehlerregister umfassen.
-
Der
Wähler 350 des
seriellen Ports (Serial Port selector) wählt eine der seriellen Ports 220 und 230 auf
der Grundlage der zugeordneten seriellen Ports, die durch die Zuordnungsschaltung 320 zugeordnet
wurden. Wenn zum Beispiel der Treiber 138 für paralleles
ATA einen Zugriff auf einen parallelen Kanal erzeugt, kann die Zuordnungsschaltung 320 die
Adresse des parallelen Kanals in einen seriellen Port übersetzen.
Alternativ kann die Zuordnungsschaltung 320 gemäß einem
Einrichtungs- (DEV-) Bit in dem Device/Head-Register zuordnen. Diese
Zuordnungsinformation wird an den Wähler 350 des seriellen
Ports direkt oder über
die Zustandsmaschine 330 weitergeleitet, um den entsprechenden
seriellen Port zu wählen.
Die Auswahl kann durch Einschalten des ausgewählten seriellen ATA-Host-Controllers 220 oder 230 ausgeführt werden.
-
4 ist
ein Flußdiagramm,
das einen Prozeß 400 zur
Emulation einer Reaktion von einem parallelen Kanal auf der Grundlage
einer Zugriffsart darstellt. Bei START erkennt der Prozeß 400 einen
Zugriff auf den seriellen ATA-Port, der einem parallelen Kanal entweder
als Master- oder als Slavekanal zugeordnet ist (Block 410).
Der Zugriff erfolgt durch den Treiber 138 für paralleles
ATA. Dann bestimmt der Prozeß 400 die
Art des Zugriffs (Block 420). Dies kann durch Entschlüsseln der
Zugriffsinformationen erfolgen, wie etwa Adressen und Lese-/Schreibinformation.
Die Zugriffsart kann eine von mehreren Zugriffsarten sein.
-
Der
Prozeß 400 bestimmt,
ob der Zugriff eine erste Zugriffsart ist, so daß es ein erstes Lesen von einem
Busmasterregister (BM-IDE), von einem Nicht-Daten-Befehlsregister
und von einem Einrichtungssteuerregister ist (Block 430).
Der Zugriff kann auch ein erstes Schreiben auf eines von einem Busmasterregister
(BM-DIE) sein, ausgenommen das Setzen eines START-Bits des Busmasterbefehlsregisters
auf eine logische „1", von einem Nicht-Daten-Befehlsregister
und von einem Einrichtungssteuerregister ist (Block 430).
Wenn dies der Fall ist, emuliert der Prozeß 400 eine erste Zugriffsart
(Block 435) und wird dann beendet. Ansonsten bestimmt der
Prozeß 400,
daß der
Zugriff eine andere Zugriffsart ist (Block 440) und emuliert
die andere Zugriffsart (Block 445). Die andere Zugriffsart
kann ein Zugriff auf ein Device/Head-Register sein oder ein Lesezugriff
auf ein Zustandsregister, ein Ausweichregister oder ein Fehlerregister
eines ausgewählten
seriellen Ports, der einem parallelen Slavekanal zugeordnet ist,
nach einem Einschaltvorgang, einem Hardware- oder Software-Neustart
oder einem Ausführen
des Einrichtungsdiagnosebefehls. Die andere Zugriffsart kann auch
ein Lesezugriff auf ein Zustandsregister oder ein Ausweichregister
eines ausgewählten
seriellen Ports sein, der einem parallelen Masterkanal zugeordnet
ist, nach einem Einschaltvorgang, Hardware- oder Software-Neustart
oder einem Ausführen
des Einrichtungsdiagnosebefehls. Die andere Zugriffsart kann auch
ein Lesezugriff auf ein Fehlerregister eines seriellen Ports sein,
der einem parallelen Masterkanal zugeordnet ist, nach einem Einschaltvorgang, Hardware-
oder Software-Neustart oder einem Ausführen des Einrichtungsdiagnosebefehls.
-
Um
einen Befehl in einer seriellen SATA-Einrichtung 176 oder 178 zu
installieren, führt
der jeweilige Host-Controller 220 oder 230 normalerweise eine
Folge von Ereignissen aus. Er liest ein Zustandsregister, um zu
bestimmen, daß der
Kanal nicht belegt ist. Er schreibt das Device/Head-Register, um
zu gewährleisten,
daß die
richtige Einrichtung gewählt
wird. Er schreibt ein Sector Count-Register, um die Anzahl der zu übertragenden
Selektoren anzuzeigen. Er schreibt ein Sector Number-Register, um
einen Teil einer Logischen Blockadressierungs- (LBA-) Adresse zu
laden. Er schreibt ein Cylinder Low-Register, um einen Teil der
LBA-Adresse zu laden. Er schreibt ein Cylinder High-Register, um einenTeil
der LBA-Adresse zu laden. Er schreibt das Command-Register mit dem
Befehl, der in vier Phasen ausgeführt werden soll: Absendung,
Start Eingabe/Ausgabe, Unterbrechungsanforderung IRQ und Fertigstellung.
-
Die
Befehle vom Host werden nach der Auswahl von der ausgewählten seriellen
ATA-Einrichtung empfangen. Der Host-Controller unterscheidet zwischen
den zwei Einrichtungen durch Verwendung des DEV-Bits im Device/Head-Register.
Der DEV-Bit wird programmiert, um anzuzeigen, von oder an welche
Einrichtung er Daten übertragen
möchte.
Eine „0" wählt Einrichtung
0, die als Mastereinrichtung bezeichnet werden kann. Ansonsten wählt das
DEV-Bit Einrichtung 1, die als Slaveeinrichtung bezeichnet werden kann.
Beim herkömmlichen
Controllerbetrieb gehen die Registerinhalte jedoch an beide Einrichtungen
und deren Controller. Entsprechend werden im herkömmlichen
Controllerbetrieb die Registerschreibzugriffe an das Anforderungspaketregister von
sowohl Master- als auch Slaveeinrichtung 225 und 236 und
die BM-IDE-Register weitergeleitet.
-
5 ist
ein Flußdiagramm,
das einen Prozeß 435 zur
Emulation einer Reaktion gemäß einer erfindungsgemäßen Ausführungsform
darstellt, wenn die Zugriffsart die erste Zugriffsart ist. Der Prozeß 435 wird
durch den ersten Zustand in der in 3 dargestellten
Zustandsmaschine 330 ausgeführt. Bei START bestimmt der
Prozeß 435,
ob der Zugriff ein Schreibzugriff ist (Block 510). In einer
Ausführungsform
der vorliegenden Erfindung wird das DEV-Bit vor jedem zugehörigen Schreibzugriff
auf das BM-IDE-Register oder die Anforderungspakete 225 oder 235 geschrieben.
Wenn das DEV-Bit gleich Null ist, wird Einrichtung 0 ausgewählt. Wenn
das DEV-Bit gleich Eins ist, wird Einrichtung 1 ausgewählt.
-
Entsprechend
hat die Emulations-Hardware einen Modus, in dem sie die Schreibzyklen
nicht sowohl an Master- als auch Slave-BM-EDI-Register und Schatten-Anforderungspakete
(shadow task files) weiterleitet. Statt dessen werden die Schreibzyklen
an die spezielle Einrichtung gemäß dem DEV-Bit weitergeleitet.
Dies ist anders als beim herkömmlichen
Betrieb, bei dem der Emulator den Schreibzyklus an die Anforderungspaketregister
von sowohl Master- als Slaveeinrichtung und die BM-DIE-Eingabe-/Ausgaberegister
weiterleitet.
-
Wenn
der Zugriff ein Schreibzugriff ist, schreibt der Prozeß 435 die
Daten an den ausgewählten
seriellen Port, der gemäß dem Einrichtungs- (DEV-)
Bit dem parallelen Kanal zugeordnet ist (Block 515) und
wird dann beendet. Auf der Grundlage des Schreibzyklus wird eher
der Host-Registersatz der gewählten
Einrichtung gesetzt, als beide Host-Registersätze zu setzen. Entsprechend
wird auf die Master- und Slave-ATA-Einrichtungen zugegriffen, als seien
sie vollständig
unabhängig
voneinander. Also kann gleichzeitige und unabhängige Datenübertragung auf zwei Treibern
für serielles
ATA ausgeführt werden,
die dem Treiber für
paralleles ATA als Master- und Slavetreiber erscheinen. Ansonsten,
wenn der Zugriff ein Lesezugriff ist, liest der Prozeß 435 die Daten
aus dem ausgewählten
seriellen Port, der gemäß dem Einrichtungs-
(DEV-) Bit dem parallelen Kanal zugeordnet ist (Block 520).
Dann sendet der Prozeß 435 die
Lesedaten an den Zugriffsanforderer zurück und wird dann beendet.
-
6 ist
eine Darstellung einer Ausführungsform
einer Software-Programmierungsfolge, um
die Einstellung des DEV-Bits auszuführen. In Block 610 schreibt
der Prozeß 600 in
das DEV-Bit des Device/Head-Registers des seriellen Ports, das der
gewählten
Einrichtung entspricht. In Block 620 programmiert der Prozeß 600 andere
BM-IDE-Register
und zugehörige
Anforderungspaketregister. In einer Ausführungsform schreibt der Prozeß 600 in
die BM-IDE- und die Anforderungspaketregister, die dem gewählten seriellen
Port zugeordnet sind. In Block 630 programmiert der Prozeß 600 das
Command-Register
des Anforderungspakets und setzt das Startbit des BM-IDE-Command-Registers.
In Block 640 schreibt der Prozeß 600 einen anderen Wert
in das DEV-Bit des Device/Head-Registers.
In Block 650 programmiert der Prozeß 600 andere BM-IDE-Register
und zugehörige
Anforderungspaketregister, wenn notwendig. In Block 660 programmiert
der Prozeß 600 das
Command-Register des Anforderungspakets und setzt das Startbit des BM-IDE-Command-Registers
vor dem Beenden.
-
Obwohl
diese Erfindung unter Bezugnahme auf Ausführungsbeispiele beschrieben
wurde, ist nicht beabsichtigt, daß diese Beschreibung in einem einschränkenden
Sinn verstanden wird. Zahlreiche Abwandlungen der Ausführungsbeispiele
sowie andere erfindungsgemäße Ausführungsformen,
die Fachleuten auf dem Gebiet, das die Erfindung betrifft, deutlich
sind, gelten als innerhalb der Idee und des Geltungsbereichs der
Erfindung. Obwohl zum Beispiel die obige Beschreibung serielle und
parallele ATA-Schnittstellen betrifft, kann das Verfahren auf jede
Punkt-zu-Punkt-Schnittstelle angewandt werden.
-
Die
vorliegende Erfindung kann durch Hardware, Software, Firmware, Mikrocode
oder jede Kombination davon umgesetzt werden. Wenn sie in Software,
Firmware oder Mikrocode umgesetzt wird, sind die Elemente der vorliegenden
Erfindung der Programmcode Erfindung der Programmcode oder Codesegmente,
um die notwendigen Aufgaben auszuführen. Ein Codesegment kann
eine Prozedur, eine Funktion, ein Unterprogramm, ein Programm, eine
Routine, eine Subroutine, ein Modul, ein Softwarepaket, eine Klasse
oder jede Kombination von Befehlen, Datenstrukturen oder Programmaussagen darstellen.
Ein Codesegment kann durch Weiterleiten und/oder Empfangen von Informationen,
Daten, Argumenten, Parametern oder Speicherinhalten an ein anderes
Codesegment oder eine Hardware-Schaltung gekoppelt sein. Informationen,
Argumente, Parameter, Daten usw. können durch alle geeigneten Mittel
einschließlich
gemeinsame Speicherbenutzung, Nachrichtenweitergabe, Token-Weitergabe, Netzwerkübertragung
usw. weitergegeben, weitergeleitet oder übertragen werden. Das Programm
oder die Codesegmente können
in einem prozessorlesbaren Medium gespeichert oder über ein Übertragungsmedium
durch ein in einer Trägerwelle
verkörpertes Rechnerdatensignal
oder ein durch eine Trägerfrequenz
moduliertes Signal übertragen
werden. Das „prozessorlesbare
Medium" kann jedes
Medium umfassen, das Informationen speichern oder übertragen kann.
Beispiele des prozessorlesbaren Mediums umfassen eine elektronische
Schaltung, eine Halbleiterspeichereinrichtung, ein ROM, einen Flash-Speicher, ein
löschbares
ROM (EROM), eine Diskette, eine Compact-Disc (CD-ROM), einen optischen
Speicher, eine Festplatte, ein Glasfasermedium, eine Hochfrequenz-
(HF-) Verbindung usw. Das Rechnerdatensignal kann jedes Signal umfassen,
das sich über
ein Übertragungsmedium
fortpflanzen kann, wie z.B. Kanäle
eines elektronischen Netzes, Glasfasern, Luft, elektromagnetisch,
HF-Verbindungen usw. Die Codesegmente können über Rechnernetze, wie etwa das
Internet, Intranet usw., herunter geladen werden.
-
Es
ist zu beachten, daß die
Erfindung als ein Prozeß beschrieben
werden kann, der üblicherweise als
ein Ablaufdiagramm, ein Flußdiagramm,
ein Strukturdiagramm oder ein Blockschaltbild dargestellt wird.
Obwohl ein Ablaufdiagramm die Operationen als sequentiellen Prozeß beschreiben
kann, können
viele der Operationen parallel oder gleichzeitig ausgeführt werden.
Außerdem
kann die Reihenfolge der Operationen geändert werden. Ein Prozeß wird beendet,
wenn seine Operationen abgeschlossen sind. Ein Prozeß kann einem
Verfahren, einer Funktion, einem Ablauf, einer Subroutine, einem oder Codesegmente,
um die notwendigen Aufgaben auszuführen. Ein Codesegment kann
eine Prozedur, eine Funktion, ein Unterprogramm, ein Programm, eine
Routine, eine Subroutine, ein Modul, ein Softwarepaket, eine Klasse
oder jede Kombination von Befehlen, Datenstrukturen oder Programmaussagen darstellen.
Ein Codesegment kann durch Weiterleiten und/oder Empfangen von Informationen,
Daten, Argumenten, Parametern oder Speicherinhalten an ein anderes
Codesegment oder eine Hardware-Schaltung gekoppelt sein. Informationen,
Argumente, Parameter, Daten usw. können durch alle geeigneten Mittel
einschließlich
gemeinsame Speicherbenutzung, Nachrichtenweitergabe, Token-Weitergabe, Netzwerkübertragung
usw. weitergegeben, weitergeleitet oder übertragen werden. Das Programm
oder die Codesegmente können
in einem prozessorlesbaren Medium gespeichert oder über ein Übertragungsmedium
durch ein in einer Trägerwelle
verkörpertes Rechnerdatensignal
oder ein durch eine Trägerfrequenz
moduliertes Signal übertragen
werden. Das „prozessorlesbare
Medium" kann jedes
Medium umfassen, das Informationen speichern oder übertragen kann.
Beispiele des prozessorlesbaren Mediums umfassen eine elektronische
Schaltung, eine Halbleiterspeichereinrichtung, ein ROM, einen Flash-Speicher, ein
löschbares
ROM (EROM), eine Diskette, eine Compact-Disc (CD-ROM), einen optischen
Speicher, eine Festplatte, ein Glasfasermedium, eine Hochfrequenz-
(HF-) Verbindung usw. Das Rechnerdatensignal kann jedes Signal umfassen,
das sich über
ein Übertragungsmedium
fortpflanzen kann, wie z.B. Kanäle
eines elektronischen Netzes, Glasfasern, Luft, elektromagnetisch,
HF-Verbindungen usw. Die Codesegmente können über Rechnernetze, wie etwa das
Internet, Intranet usw., herunter geladen werden.
-
Es
ist zu beachten, daß die
Erfindung als ein Prozeß beschrieben
werden kann, der üblicherweise als
ein Ablaufdiagramm, ein Flußdiagramm,
ein Strukturdiagramm oder ein Blockschaltbild dargestellt wird.
Obwohl ein Ablaufdiagramm die Operationen als sequentiellen Prozeß beschreiben
kann, können
viele der Operationen parallel oder gleichzeitig ausgeführt werden.
Außerdem
kann die Reihenfolge der Operationen geändert werden. Ein Prozeß wird beendet,
wenn seine Operationen abgeschlossen sind. Ein Prozeß kann einem
Verfahren, einer Funktion, einem Ablauf, einer Subroutine, einem
Unterprogramm usw. entsprechen. Wenn ein Programm einer Funktion
entspricht, entspricht seine Beendigung einer Rückkehr zu der abrufenden Funktion oder
Hauptfunktion.
-
Zusammenfassung
-
Ein
Zugriffsdetektor erkennt eine Zugriffsart eines Zugriffs auf einen
von einer Mehrzahl von seriellen Ports, die die Schnittstelle zu
seriellen Speichereinrichtungen bilden. Der Zugriff ist für einen
von einer Mehrzahl von parallelen Kanälen vorgesehen, die über Anforderungspaketregister
der parallelen Kanäle
die Schnittstelle zu den parallelen Speichereinrichtungen bilden.
Eine Zuordnungsschaltung ordnet die seriellen Ports den parallelen
Kanälen
zu. Eine Zustandsmaschine emuliert eine Reaktion von dem einen der
parallelen Kanäle
auf der Grundlage der Zugriffsart und der zugeordneten seriellen
Ports.