-
TECHNISCHES GEBIET
-
Die Offenbarung betrifft allgemein Speichervorrichtungen.
-
HINTERGRUND
-
Ein Bus ist ein Datenübertragungssystem, das Daten zwischen Speichervorrichtungen überträgt. Busse können parallele Busse sein, die Datenworte parallel auf mehreren Drähten übertragen, oder serielle Busse, die Daten in bitserieller Form übertragen. Kollisionen können vorkommen, wenn mehrere Speichervorrichtungen auf einem Bus zu derselben Zeit Daten senden, was eine Verfälschung der Daten auf dem Bus zur Folge haben kann. Als ein Versuch, derartige Kollisionen zu vermeiden, können die Speichervorrichtungen mit spezialisierter Hardware konfiguriert sein, die verschiedene Arbitrierungsschemata unterstützt.
-
KURZDARSTELLUNG
-
Bei einem Beispiel beinhaltet ein Verfahren ein Senden eines ersten Bit auf einer Datenleitung mithilfe einer Steuervorrichtung einer Speichervorrichtung. Das Verfahren beinhaltet ferner, als Reaktion auf ein Senden des ersten Bit auf der Datenleitung, ein Feststellen eines Leitungspegels der Datenleitung mithilfe der Steuervorrichtung. Das Verfahren beinhaltet ferner als Reaktion auf ein Feststellen des Leitungspegels der Datenleitung ein Feststellen, mithilfe der Steuervorrichtung, ob der Leitungspegel der Datenleitung dem ersten Bit entspricht, und als Reaktion auf das Feststellen, dass der Leitungspegel der Datenleitung dem ersten Bit nicht entspricht, ein Feststellen, mithilfe der Steuervorrichtung, dass auf der Datenleitung eine Kollision eingetreten ist.
-
Bei einem anderen Beispiel weist eine Speichervorrichtung (storage device) eine Mehrzahl von Speichervorrichtungen (memory devices) auf, die logisch in eine Mehrzahl von Blöcken und eine Steuervorrichtung unterteilt sind. Die Steuervorrichtung ist derart konfiguriert, dass sie ein erstes Bit auf einer Datenleitung sendet und als Reaktion auf ein Senden des ersten Bit auf der Datenleitung einen Leitungspegel der Datenleitung feststellt. Die Steuervorrichtung ist ferner derart konfiguriert, dass sie als Reaktion auf ein Feststellen des Leitungspegels der Datenleitung feststellt, ob der Leitungspegel der Datenleitung dem ersten Bit entspricht, und als Reaktion auf das Feststellen, dass der Leitungspegel der Datenleitung dem ersten Bit nicht entspricht, feststellt, dass auf der Datenleitung eine Kollision eingetreten ist.
-
Bei einem anderen Beispiel ist ein nichtflüchtiges computerlesbares Speichermedium mit Anweisungen codiert, die, wenn sie ausgeführt werden, einen oder mehrere Prozessoren einer Speichervorrichtung veranlassen, ein erstes Bit auf einer Datenleitung zu senden und als Reaktion auf ein Senden des ersten Bit auf der Datenleitung einen Leitungspegel der Datenleitung festzustellen. Durch die Anweisungen werden ferner einer oder mehrere Prozessoren der Speichervorrichtung derart konfiguriert, dass sie als Reaktion auf ein Feststellen des Leitungspegels der Datenleitung feststellen, ob der Leitungspegel der Datenleitung dem ersten Bit entspricht, und als Reaktion auf das Feststellen, dass der Leitungspegel der Datenleitung dem ersten Bit nicht entspricht, feststellen, dass auf der Datenleitung eine Kollision eingetreten ist.
-
Bei einem anderen Beispiel zählen zu einem System Mittel zum Senden eines ersten Bit auf einer Datenleitung, Mittel zum Feststellen eines Leitungspegels der Datenleitung als Reaktion auf ein Senden des ersten Bit auf der Datenleitung, Mittel zum Feststellen, ob der Leitungspegel der Datenleitung dem ersten Bit entspricht, als Reaktion auf ein Feststellen des Leitungspegels der Datenleitung, und Mittel zum Feststellen, dass eine Kollision auf der Datenleitung eingetreten ist, als Reaktion auf die Feststellung, dass der Leitungspegel der Datenleitung dem ersten Bit nicht entspricht.
-
KURZBESCHREIBUNG DER ZEICHNUNGEN
-
1 ist ein konzeptionelles und schematisches Blockschaltbild, das eine beispielhafte Speicherumgebung veranschaulicht, in der gemäß einer oder mehreren Techniken dieser Offenbarung mehrere Speichervorrichtungen mit einer Host-Vorrichtung interagieren können.
-
2 ist ein konzeptionelles und schematisches Blockschaltbild, das eine beispielhafte Speicherumgebung veranschaulicht, in der gemäß einer oder mehreren Techniken dieser Offenbarung eine Speichervorrichtung mit einer Host-Vorrichtung interagieren kann.
-
3 ist ein konzeptionelles Diagramm, das eine beispielhafte Technik veranschaulicht, die mindestens ein Prozessor gemäß einer oder mehreren Techniken dieser Offenbarung zur Kollisionserkennung umsetzen kann.
-
4 ist ein Ablaufplan, der eine beispielhafte Technik veranschaulicht, die mindestens ein Prozessor gemäß einer oder mehreren Techniken dieser Offenbarung zur Kollisionserkennung umsetzen kann.
-
AUSFÜHRLICHE BESCHREIBUNG
-
Durch die Techniken dieser Offenbarung können Vorrichtungen ohne spezialisierte Hardware in die Lage versetzt werden, Kollisionen auf einem gemeinsam genutzten Bus zu erkennen. Zum Beispiel kann eine Slave-Vorrichtung auf einen gemeinsam genutzten Bus schreiben und einen Leitungspegel des gemeinsam genutzten Busses feststellen, um festzustellen, ob der Leitungspegel der erwartete Leitungspegel ist. Wenn der Leitungspegel nicht der erwartete Leitungspegel ist, kann die Slave-Vorrichtung feststellen, dass eine Kollision eingetreten ist, und einen weiteren Datenaustausch auf dem Bus bis zu einer nächsten Startbedingung beenden. Insbesondere kann durch Techniken dieser Offenbarung eine Steuervorrichtung einer Speichervorrichtung in die Lage versetzt werden, Code auszuführen, der die Steuervorrichtung veranlasst, eine Systembus-Datenleitung eines gemeinsam genutzten Busses zu lesen, einen aktuellen Leitungspegel der Systembus-Datenleitung festzustellen, den aktuellen Leitungspegel mit einem erwarteten Leitungspegel zu vergleichen und, wenn der aktuelle Leitungspegel und der erwartete Leitungspegel hinreichend unterschiedlich sind, festzustellen, dass eine Kollision eingetreten ist. Auf diese Weise können Slave-Vorrichtungen ohne spezialisierte Kollisionserkennungshardware zum Erkennen von Kollisionen konfiguriert werden, was ermöglichen kann, dass mehrere Vorrichtungen bei gleichzeitigem Aufrechterhalten von Datenintegrität an einem einzigen gemeinsam genutzten Bus betrieben werden.
-
1 ist ein konzeptionelles und schematisches Blockschaltbild, das eine beispielhafte Speicherumgebung 10 veranschaulicht, in der gemäß einer oder mehreren Techniken dieser Offenbarung mehrere Speichervorrichtungen mit einer Host-Vorrichtung 102 interagieren können. Die Speicherumgebung 10 kann die Host-Vorrichtung 102 aufweisen, die mithilfe eines Busses 108 mit einer Master-Speichervorrichtung 104 und einer Mehrzahl von Slave-Speichervorrichtungen 106A bis 106N (insgesamt: „Slave-Speichervorrichtungen 106“) verbunden ist. Bei einigen Beispielen kann der Bus 108 einen Datenaustausch zwischen der Host-Vorrichtung 102 mit der Master-Speichervorrichtung 104 und mehreren Slave-Speichervorrichtungen 106 unterstützen. Bei einigen Beispielen können die Slave-Speichervorrichtungen 106 sich eine gemeinsame Adresse auf dem Bus 108 teilen. Bei einigen Beispielen kann der Bus 108 mit einer NVME-MI-Spezifikation konform sein, beispielsweise mit der in der NVM Express Management Interface Revision 1.0 vom 17. November 2015 beschriebenen NVME MI-Spezifikation, deren gesamter Inhalt durch Bezugnahme hierin enthalten ist.
-
Die Master-Speichervorrichtung 104 kann derart konfiguriert sein, dass sie die Slave-Speichervorrichtungen 106 steuert. Zum Beispiel kann die Master-Speichervorrichtung 104 über den Bus 108 einen Stopp-Befehl an die Slave-Speichervorrichtungen 106 senden, der die Slave-Speichervorrichtungen 106 veranlasst, mit einem Senden auf den Bus 108 aufzuhören. In einigen Fällen kann die Master-Speichervorrichtung 104 über den Bus 108 einen Start-Befehl an die Slave-Speichervorrichtungen 106 senden, der eine oder mehrere der Slave-Speichervorrichtungen 106 veranlasst, mit einem Senden auf den Bus 108 anzufangen.
-
Die Master-Speichervorrichtung 104 kann eine beliebige Vorrichtung sein, die dafür geeignet ist, Daten zu speichern, auf die die Host-Vorrichtung 102 unter Verwendung des Busses 108 zugreifen kann. Bei einigen Beispielen kann die Master-Speichervorrichtung 104 ein nichtflüchtiges Speicherarray (z.B. ein Halbleiterlaufwerk (solid-state drive, SSD)) zum Speichern der Daten aufweisen, auf die die Host-Vorrichtung 102 unter Verwendung des Busses 108 zugreifen kann. Zum Beispiel kann die Master-Speichervorrichtung 104 eine Steuervorrichtung, ein nichtflüchtiges Speicherarray, einen Zwischenspeicher und eine Schnittstelle aufweisen. Bei einigen Beispielen kann die Master-Speichervorrichtung 104 eine magnetische Aufzeichnung (z.B. eine Festplatte (hard disk drive, HDD)) zum Speichern der Daten aufweisen, auf die die Host-Vorrichtung 102 unter Verwendung des Busses 108 zugreifen kann. Zum Beispiel kann die Master-Speichervorrichtung 104 eine Steuervorrichtung, eine magnetische Aufzeichnung mit überlappender magnetischer Aufzeichnung, einen Zwischenspeicher und eine Schnittstelle aufweisen.
-
Bei einigen Beispielen kann die Master-Speichervorrichtung 104 den Slave-Speichervorrichtungen 106 im Wesentlichen ähnlich sein, abgesehen davon, dass die Master-Speichervorrichtung 104 auf dem Bus 108 als eine Master-Vorrichtung behandelt wird. Zum Beispiel kann die Master-Speichervorrichtung 104 ein Taktsignal erzeugen, das von den Slave-Speichervorrichtungen 106 verwendet werden kann. In einigen Fällen kann die Master-Speichervorrichtung 104 ein Arbitrierungsmodul aufweisen. Bei einigen Beispielen können die Master-Speichervorrichtung 104 und die Slave-Speichervorrichtungen 106 unterschiedlich sein. Zum Beispiel kann bei der Master-Speichervorrichtung 104 ein Arbitrierungsmodul entfallen. Bei einigen Beispielen kann die Master-Speichervorrichtung 104 konform mit dem System Management (SM) Bus (SMBus) sein, wie beispielsweise dem SMBus, der in der „System Management Bus (SMBus) Specification Version 3.0" des System Management Interface Forum, Inc. vom 20. Dezember 2014 beschrieben wird, deren gesamter Inhalt hierin durch Bezugnahme enthalten ist. Zum Beispiel kann die Master-Speichervorrichtung 104 derart konfiguriert sein, dass sie eine Arbitrierung mit anderen Master-Speichervorrichtungen auf dem Bus 108 durchführt.
-
Die Host-Vorrichtung 102 kann in der Master-Speichervorrichtung 104 und den Slave-Speichervorrichtungen 106 enthaltene Speichervorrichtungen zum Speichern und Abrufen von Daten nutzen. Bei der Host-Vorrichtung 102 kann es sich um eine beliebige Datenverarbeitungsvorrichtung handeln, beispielsweise unter anderem einen Computerserver, eine NAS-Einheit (network attached storage unit), einen Desktop-Computer, einen Notebook-Computer (z.B. einen Laptop), einen Tablet-Computer, eine Set-Top-Box, eine mobile Datenverarbeitungsvorrichtung wie beispielsweise ein „Smartphone“, ein Fernsehgerät, eine Kamera, eine Anzeigevorrichtung, einen digitalen Medienabspieler, eine Videospielkonsole, eine Videostreaming-Vorrichtung oder dergleichen. Die Host-Vorrichtung 102 kann eine Datenverarbeitungseinheit aufweisen, was sich auf eine beliebige Form von Hardware beziehen kann, die in der Lage zum Verarbeiten von Daten ist, und wobei es sich um eine Universal-Datenverarbeitungseinheit (wie beispielsweise eine Zentraleinheit (central processing unit, CPU)), dedizierte Hardware (wie beispielsweise eine anwendungsspezifische integrierte Schaltung (application specific integrated circuit, ASIC)), konfigurierbare Hardware wie beispielsweise ein feldprogrammierbares Gate-Array (field programmable gate array, FPGA) oder eine beliebige andere Form von Datenverarbeitungseinheit handeln kann, die mithilfe von Softwareanweisungen, Mikrocode, Firmware oder dergleichen konfiguriert ist.
-
Der Bus 108 kann eine Datenleitung zum Senden von Daten zwischen der Host-Vorrichtung 102, der Master-Speichervorrichtung 104 und den Slave-Speichervorrichtungen 106 aufweisen. Zum Beispiel kann der Bus 108 eine serielle Datenleitung (SDA) aufweisen. Der Bus 108 kann konform mit jedem geeigneten Protokoll und Standard sein. Zum Beispiel kann der Bus 108 konform mit dem SMBus sein. In einigen Fällen kann der Bus 108 mit dem Inter-Integrated Circuit (I2C) konform sein, beispielsweise mit dem I2C, der in der „I2C-Bus Specification and User Manual" Rev. 6, vom 4. April 2014 beschriebenen wird, deren gesamter Inhalt durch Bezugnahme hierin enthalten ist. Bei einigen Beispielen kann der Bus 108 eine Taktleitung zur zeitlichen Steuerung einer Datenübertragung aufweisen. Zum Beispiel kann der Bus 108 eine serielle Taktleitung (serial clock line, SCL) aufweisen. Bei einigen Beispielen kann die Taktleitung eine zeitliche Steuerung zum Übertragen von Daten auf einer Datenleitung anzeigen. Zum Beispiel kann die Host-Vorrichtung 102 Daten während einer Anstiegsflanke eines Taktsignals lesen, das auf der Taktleitung des Busses 108 gesendet wird.
-
Bei einigen Beispielen führt jede Slave-Speichervorrichtung 106 Kollisionserkennung unter Verwendung eines entsprechenden der Arbitrierungsmodule 110A bis N (insgesamt: „Arbitrierungsmodule 110“) durch. Zum Beispiel erkennt möglicherweise das Arbitrierungsmodul 110A der Slave-Speichervorrichtung 106A ein Arbitrierungsproblem (z.B. eine Kollision) zwischen den Slave-Speichervorrichtungen 106 und beendet ein weiteres Senden, um eine Datenverfälschung bei dem Bus 108 zu verhindern. Bei einigen Beispielen können die Arbitrierungsmodule 110 in Software umgesetzt werden. Zum Beispiel kann das Arbitrierungsmodul 110A Firmware enthalten, die, wenn sie ausgeführt wird, eine Kollision erkennt. Bei einigen Beispielen können die Arbitrierungsmodule 110 mit einer Bus-Datenübertragungseinheit arbeiten. Zum Beispiel kann eine Firmware des Arbitrierungsmoduls 110A feststellen, ob eine Kollision auf der Datenleitung des Busses 108 eingetreten ist, und die Bus-Datenübertragungseinheit kann feststellen, wann Daten auf der Datenleitung des Busses 108 zu senden sind (z.B. bei einer Anstiegsflanke einer Taktleitung des Busses 108).
-
Die Arbitrierungsmodule 110 können sich mit dem Bus 108 synchronisieren, um festzustellen, wann Daten zu senden sind. Bei einigen Beispielen können die Arbitrierungsmodule 110 ein Senden von Daten als Reaktion auf ein Sendepuffer-leer-Ereignis einleiten. Zum Beispiel kann nach einem Empfangen einer Anzeige des Sendepuffer-leer-Ereignisses das Arbitrierungsmodul 110A den Bus 108 im Hinblick auf eine Bestätigung überwachen und mit einem Überwachen eines Sendens von Daten auf dem Bus 108 einen Taktzyklus nach einem Erkennen der Bestätigung beginnen. Auf diese Weise kann sich das Arbitrierungsmodul 110 mit dem Bus 108 synchronisieren, um eine Kollision zu erkennen.
-
Nach einer Synchronisation mit dem Bus 108 können die Arbitrierungsmodule 110 feststellen, ob eine Kollision auf dem Bus 108 eingetreten ist. Zum Beispiel kann das Arbitrierungsmodul 110A feststellen, dass eine Kollision auf dem Bus 108 eingetreten ist, wenn ein Leitungspegel (z.B. eine logische ‚1‘) auf dem Bus 108 nicht mit einem erwarteten Leitungspegel (z.B. eine in ein Sendehalteregister ausgegebene logische ‚1‘) übereinstimmt. Bei einigen Beispielen stimmen der Leitungspegel und der erwartete Leitungspegel möglicherweise nicht überein, wenn mehr als eine Slave-Speichervorrichtung der Slave-Speichervorrichtungen 106 auf dem Bus 108 sendet. Zum Beispiel kann ein Leitungspegel des Busses 108 eine logische ‚0‘ anzeigen, wenn das Arbitrierungsmodul 110A eine logische ‚1‘ sendet, und während desselben Taktzyklus das Arbitrierungsmodul 110B eine logische ‚0‘ sendet.
-
Die Slave-Speichervorrichtungen 106 beenden möglicherweise ein Senden auf dem Bus 108, wenn eine Kollision auf dem Bus 108 eingetreten ist. Wenn zum Beispiel das Arbitrierungsmodul 110A feststellt, dass eine Kollision auf dem Bus 108 eingetreten ist, kann das Arbitrierungsmodul 110A die Slave-Speichervorrichtung 106A veranlassen, ein Senden auf dem Bus 108 zu beenden. Auf diese Weise können die Arbitrierungsmodule 110 eine Arbitrierung durchführen, indem sie auf den Bus 108 zuzugreifen versuchen und eine Ausgabe zum Senden auf dem Bus 108 als Reaktion auf ein Erkennen einer Kollision auf dem Bus 108 beenden.
-
2 ist ein konzeptionelles und schematisches Blockschaltbild, das eine beispielhafte Speicherumgebung 12 veranschaulicht, in der gemäß einer oder mehreren Techniken dieser Offenbarung eine Slave-Speichervorrichtung 107 mit der Host-Vorrichtung 102 interagieren kann. Wie in 2 gezeigt, kann die Slave-Speichervorrichtung 107 eine Steuervorrichtung 122, ein Speicherelement 126, einen Zwischenspeicher 124 und eine Schnittstelle 120 aufweisen. Bei einigen Beispielen kann die Slave-Speichervorrichtung 107 weitere Komponenten aufweisen, die in 2 der Klarheit halber nicht gezeigt werden. Zum Beispiel kann die Slave-Speichervorrichtung 107 Energieversorgungskomponenten aufweisen, darunter beispielsweise ein Kondensator, ein Superkondensator oder eine Batterie; eine Platine (printed board, PB), an der Komponenten der Slave-Speichervorrichtung 107 mechanisch angebracht sind, und die elektrisch leitende Leiterbahnen aufweist, die Komponenten der Slave-Speichervorrichtung 107 elektrisch miteinander verbinden oder dergleichen.
-
Die Slave-Speichervorrichtung 107 kann mit der Host-Vorrichtung 102 über die Schnittstelle 120 kommunikationsmäßig gekoppelt sein. Durch die Schnittstelle 120 können eine mechanische Verbindung und elektrische Verbindung oder beides für die Host-Vorrichtung 102 bereitgestellt werden. Zum Beispiel kann die Schnittstelle 120 derart konfiguriert sein, dass sie zu einer Datenleitung des Busses 108 eine Verbindung herstellt. Bei einigen Beispielen kann die Schnittstelle 120 derart konfiguriert sein, dass sie zu einer Taktleitung des Busses 108 eine Verbindung herstellt. Die Schnittstelle 120 kann entsprechend einem geeigneten Protokoll arbeiten. Zum Beispiel kann die Schnittstelle 120 entsprechend Non-Volatile Memory (NVM) ExpressTM (NVMe) arbeiten, wie beispielsweise das NVM-Teilsystem, das in der „NVMe Revision 1.2a" vom 23. Oktober 2015 beschrieben wird, deren gesamter Inhalt hierin durch Bezugnahme enthalten ist. In einigen Fällen kann die Schnittstelle 120 entsprechend einem oder mehreren der folgenden Protokolle arbeiten: NVMe, NVMe MI, I2C, Advanced Technology Attachment (ATA) (z.B. Serial-ATA (SATA) und Parallel-ATA (PATA)), Fibre Channel, Small Computer System Interface (SCSI), Serially Attached SCSI (SAS), Peripheral Component Interconnect (PCI) und PCI-Express. Die elektrische Verbindung der Schnittstelle 120 (z.B. der Datenbus, der Steuerbus, der Taktbus usw.) kann elektrisch mit der Steuervorrichtung 122 verbunden sein, wodurch eine elektrische Verbindung zwischen der Host-Vorrichtung 102 und der Steuervorrichtung 122 bereitgestellt wird, die ermöglicht, dass Daten zwischen der Host-Vorrichtung 102 und der Steuervorrichtung 122 ausgetauscht werden.
-
Der Zwischenspeicher 124 kann Daten zum Senden auf den Bus 108 speichern. Zum Beispiel kann die Steuervorrichtung 122 Daten in ein Sendehalteregister des Zwischenspeichers 124 schreiben. Dann kann zu einem späteren Zeitpunkt (z.B. während einer steigenden Taktflanke eines Taktsignals), die Schnittstelle 120 die in dem Sendehalteregister des Zwischenspeichers 124 gespeicherten Daten auf den Bus 108 an die Host-Vorrichtung 102 senden. Bei einigen Beispielen kann der Zwischenspeicher 124 flüchtigen Speicher aufweisen. Bei einigen Beispielen kann der Zwischenspeicher 124 nichtflüchtigen Speicher aufweisen. Zum Beispiel kann die Steuervorrichtung 122 in dem Zwischenspeicher gespeicherte Informationen in dem Zwischenspeicher 124 speichern, bis in dem Zwischenspeicher gespeicherte Informationen in das Speicherelement 126 geschrieben werden. Zu Beispielen für den Zwischenspeicher 124 zählen, aber ohne einschränkend zu wirken, Direktzugriffsspeicher (random-access memory, RAM), dynamischer Direktzugriffsspeicher (dynamic random access memory, DRAM), statischer RAM (SRAM) sowie synchroner dynamischer RAM (SDRAM (z.B. DDR1, DDR2, DDR3, DDR3L, LPDDR3, DDR4 und dergleichen)).
-
Bei einigen Beispielen kann das Speicherelement 126 ein Speicherarray (z.B. SSD) zum Speichern der Daten aufweisen, auf die die Host-Vorrichtung 102 möglicherweise unter Verwendung des Busses 108 zugreift. Zum Beispiel kann die Steuervorrichtung 122 als Reaktion auf ein Empfangen eines Befehls von der Host-Vorrichtung 102 über den Bus 108 von einem nichtflüchtigen Speicherarray des Speicherelements 126 lesen und auf dieses schreiben. Bei einigen Beispielen kann das Speicherelement 126 eine magnetische Aufzeichnung (z.B. ein HHD) zum Speichern der Daten aufweisen, auf die die Host-Vorrichtung 102 möglicherweise unter Verwendung des Busses 108 zugreift. Zum Beispiel kann die Steuervorrichtung 122 als Reaktion auf ein Empfangen eines Befehls von der Host-Vorrichtung 102 über den Bus 108 von einer magnetischen Aufzeichnung mit überlappender magnetischer Aufzeichnung (SMR) des Speicherelements 126 lesen und auf diese schreiben. Bei einigen Beispielen kann das Speicherelement 126 eine Kombination von SSD-Elementen und HDD-Elementen aufweisen. Zum Beispiel kann das Speicherelement 126 eine magnetische Aufzeichnung mit überlappender magnetischer Aufzeichnung und ein flüchtiges Speicherarray aufweisen. Bei einigen Beispielen kann das Speicherelement 126 eine sehr große Speicherkapazität aufweisen, zum Beispiel 512 MB, 1 GB, 2 GB, 4 GB, 8 GB, 16 GB, 32 GB, 64 GB, 128 GB, 256 GB, 512 GB, 1 TB, 3 TB oder dergleichen.
-
Bei einigen Beispielen können zu der Steuervorrichtung 122 ein Schreibmodul 142, ein Lesemodul 140, ein Arbitrierungsmodul 111 und eine Bus-Datenübertragungseinheit 150 zählen. Bei anderen Beispielen kann die Steuervorrichtung 122 weitere Module oder Hardware-Einheiten aufweisen oder kann weniger Module oder Hardware-Einheiten aufweisen. Die Steuervorrichtung 122 kann einen Mikroprozessor, einen digitalen Signalprozessor (DSP), eine anwendungsspezifische integrierte Schaltung (ASIC), ein feldprogrammierbares Gate-Array (FPGA) oder eine andere digitale logische Schaltungsanordnung aufweisen.
-
Das Lesemodul 140 und das Schreibmodul 142 der Steuervorrichtung 122 können Lesen und Schreiben von dem und auf das Speicherelement 126 verwalten. Zum Beispiel kann, als Reaktion darauf, dass das Schreibmodul 142 einen Befehl von der Host-Vorrichtung 102 empfängt, die die Slave-Speichervorrichtung 107 anweist, Daten in dem Speicherelement 126 zu speichern, das Schreibmodul 142 eine physische Adresse und/oder Spur des Speicherelements 126 feststellen, um die Daten zu speichern.
-
Nachdem das Schreibmodul 142 die Daten in das Speicherelement 126 geschrieben hat, kann das Lesemodul 140 die Daten von der physischen Adresse und/oder Spur des Speicherelements 126 abrufen. Zum Beispiel kann, als Reaktion darauf, dass die Slave-Speichervorrichtung 107 einen Befehl von der Host-Vorrichtung 102 empfängt, die die Slave-Speichervorrichtung 107 anweist, in dem Speicherelement 126 gespeicherte Daten zu senden, das Lesemodul 140 die physische Adresse und/oder Spur des Speicherelements 126 feststellen, das die zu sendenden Daten enthält.
-
Nachdem das Lesemodul 140 die Daten von dem Speicherelement 126 abgerufen hat, können die Daten auf den Bus 108 an die Host-Vorrichtung 102 gesendet werden. Zum Beispiel kann das Arbitrierungsmodul 111 dem Schreibmodul 142 gestatten, die Daten in ein Sendehalteregister des Zwischenspeichers 124 auszugeben, und das Arbitrierungsmodul 111 kann aufhören, dem Schreibmodul 142 zu gestatten, die Daten in das Sendehalteregister des Zwischenspeichers 124 auszugeben, wenn ein Leitungspegel des Busses 108 nicht mit einem erwarteten Leitungspegel für die Daten übereinstimmt.
-
Die Bus-Datenübertragungseinheit 150 kann feststellen, wann die Daten auf einer Datenleitung des Busses 108 zu senden sind. Zum Beispiel kann die Bus-Datenübertragungseinheit 150 in einem Sendehalteregister des Zwischenspeichers 124 gespeicherte Daten lesen und die in dem Sendehalteregister des Zwischenspeichers 124 gespeicherten Daten seriell auf einer Datenleitung des Busses 108 während einer Anstiegsflanke einer Taktleitung des Busses 108 senden. Die Bus-Datenübertragungseinheit 150 kann einen Mikroprozessor, einen digitalen Signalprozessor (DSP), eine anwendungsspezifische integrierte Schaltung (ASIC), ein feldprogrammierbares Gate-Array (FPGA) oder eine andere digitale logische Schaltungsanordnung aufweisen.
-
Die Bus-Datenübertragungseinheit 150 kann Daten auf dem Bus 108 lesen. Zum Beispiel kann die Bus-Datenübertragungseinheit 150 über den Bus 108 eine Anforderung von Daten von der Host-Vorrichtung 102 lesen. Bei einigen Beispielen kann die Bus-Datenübertragungseinheit 150 eine Taktleitung des Busses 108 unter Verwendung der Schnittstelle 120 überwachen, um festzustellen, wann Daten zu lesen sind. Zum Beispiel kann die Bus-Datenübertragungseinheit 150 über die Schnittstelle 120 eine Anstiegsflanke eines Taktsignals auf einer Taktleitung des Busses 108 erkennen und eine Datenleitung des Busses 108 während Anstiegsflanken des Taktsignals lesen.
-
Die Bus-Datenübertragungseinheit 150 kann feststellen, ob ein Sendehalteregister über auf dem Bus 108 zu sendende Daten verfügt. Zum Beispiel kann die Bus-Datenübertragungseinheit 150 einen Status eines Sende-Flag erkennen und feststellen, dass das Sendehalteregister über Daten verfügt, wenn das Sende-Flag gelöscht ist. Bei einigen Beispielen kann das Sende-Flag von dem Arbitrierungsmodul 111, dem Schreibmodul 142 oder dergleichen gelöscht werden.
-
In Fällen, in denen das Sendehalteregister leer ist, kann die Bus-Datenübertragungseinheit 150 dem Arbitrierungsmodul 111 signalisieren, dass das Sendehalteregister leer ist. Bei einigen Beispielen kann die Bus-Datenübertragungseinheit 150 unter Verwendung eines Interrupt signalisieren, dass das Sendehalteregister leer ist. Zum Beispiel kann als Reaktion darauf, dass die Bus-Datenübertragungseinheit 150 feststellt, dass der Sendepuffer des Zwischenspeichers 124 leer ist, die Bus-Datenübertragungseinheit 150 an das Arbitrierungsmodul 111 einen Sendepuffer-leer-Ereignis-Interrupt ausgeben.
-
Als Reaktion auf ein Empfangen eines Signals, dass das Sendehalteregister des Zwischenspeichers 124 leer ist, kann das Schreibmodul 142 Daten in das Sendehalteregister des Zwischenspeichers 124 ausgeben. Zum Beispiel kann als Reaktion darauf, dass das Schreibmodul 142 von der Bus-Datenübertragungseinheit 150 eine Anzeige eines Sendepuffer-leer-Ereignisses empfängt, das Schreibmodul 142 ein nächstes Byte Daten in das Sendehalteregister des Zwischenspeichers 124 schreiben.
-
Sobald das Schreibmodul 142 die Daten in das Sendehalteregister des Zwischenspeichers 124 ausgibt, kann das Arbitrierungsmodul 111 den Bus 108 im Hinblick auf eine Bestätigung überwachen, um sich mit dem Bus 108 zu synchronisieren. Zum Beispiel kann das Arbitrierungsmodul 110 feststellen, ob während einer Anstiegsflanke des nächsten Taktzyklus einer Taktleitung des Busses 108 eine Datenleitung des Busses 108 für einen Leitungspegel eine logische ‚1‘ anzeigt. Wenn der Leitungspegel während des nächsten Taktzyklus der Taktleitung des Busses 108 eine logische ‚1‘ anzeigt, kann das Arbitrierungsmodul 110 feststellen, dass die Bestätigung auf dem Bus 108 eingetreten ist.
-
Nach einem Senden des Signals, dass das Sendehalteregister des Zwischenspeichers 124 leer ist, kann die Bus-Datenübertragungseinheit 150 feststellen, ob erfolgreich Daten auf dem Bus 108 empfangen wurden. Bei einigen Beispielen kann die Bus-Datenübertragungseinheit 150 auf Grundlage einer Anzahl empfangener Bits feststellen, ob erfolgreich Daten empfangen wurden. Zum Beispiel kann die Bus-Datenübertragungseinheit 150 feststellen, dass erfolgreich Daten auf dem Bus 108 empfangen wurden, wenn genau ein Byte Daten übertragen wurde. Bei einigen Beispielen kann die Bus-Datenübertragungseinheit 150 auf Grundlage von Packet Error Checking feststellen, ob erfolgreich Daten empfangen wurden. Zum Beispiel kann die Bus-Datenübertragungseinheit 150 feststellen, dass erfolgreich Daten auf dem Bus 108 empfangen wurden, wenn die Bus-Datenübertragungseinheit 150 auf Grundlage der empfangenen Daten eine Prüfsumme berechnet, die gleich einer mit den Daten auf dem Bus 108 gesendeten Prüfsumme ist.
-
Als Reaktion darauf, dass die Bus-Datenübertragungseinheit 150 feststellt, dass erfolgreich Daten auf dem Bus 108 empfangen wurden, kann die Bus-Datenübertragungseinheit 150 eine Bestätigung senden, die anzeigt, dass erfolgreich Daten empfangen wurden. Zum Beispiel kann die Bus-Datenübertragungseinheit 150 über die Schnittstelle 120 eine Anstiegsflanke eines Taktsignals auf einer Taktleitung des Busses 108 erkennen und ein letztes Bit eines Byte einer Datenleitung des Busses 108 während der Anstiegsflanke des Taktsignals der Taktleitung des Busses 108 lesen. Anschließend, nachdem die Bus-Datenübertragungseinheit 150 festgestellt hat, dass die Daten erfolgreich empfangen wurden, kann die Bus-Datenübertragungseinheit 150 über den Bus 108 während einer Anstiegsflanke eines Taktzyklus eine Bestätigung senden. Zum Beispiel kann die Bus-Datenübertragungseinheit 150 eine Datenleitung des Busses 108 während einer Anstiegsflanke des nächsten Taktzyklus einer Taktleitung des Busses 108 derart treiben, dass sie einen Leitungspegel aufweist, der eine logische ‚1‘ anzeigt.
-
Nach einem Senden der Bestätigung kann die Bus-Datenübertragungseinheit 150 Daten aus einem Sendehalteregister laden, um diese auf dem Bus 108 zu senden, und kann die geladenen Daten auf den Bus 108 senden. Zum Beispiel kann die Bus-Datenübertragungseinheit 150 ein nächstes Byte in einem Sendepuffer des Zwischenspeichers 124 lesen und kann das nächste Byte auf einer Datenleitung des Busses 108 während einer Anstiegsflanke des Taktsignals einer Taktleitung des Busses 108 senden.
-
Als Reaktion darauf, dass das Arbitrierungsmodul 111 die auf den Bus 108 gesendete Bestätigung erkennt und die Bus-Datenübertragungseinheit 150 die Daten auf den Bus 108 sendet, kann das Arbitrierungsmodul 111 einen Leitungspegel erkennen, der mit einem Bit in das Sendehalteregister des Zwischenspeichers 124 ausgegebener Daten übereinstimmt. Zum Beispiel kann das Arbitrierungsmodul 111 unter Verwendung der Schnittstelle 120 und/oder der Bus-Datenübertragungseinheit 150 einen Taktzyklus (z.B. Anstiegsflanke, Abfallflanke oder ein Gebiet, dass sich zwischen der Anstiegsflanke und der Abfallflanke erstreckt) auf einer Taktleitung des Busses 108 erkennen, der mit der Bestätigung übereinstimmt, und kann unter Verwendung der Schnittstelle 120 und/oder der Bus-Datenübertragungseinheit 150 einen Leitungspegel einer Datenleitung des Busses 108 lesen, der mit einem Taktzyklus (z.B. Anstiegsflanke, Abfallflanke oder ein Gebiet, dass sich zwischen der Anstiegsflanke und der Abfallflanke erstreckt) des Taktzyklus unmittelbar nach der Taktflanke auf einer Taktleitung des Busses 108 übereinstimmt, die mit der Bestätigung übereinstimmt.
-
Als Reaktion auf ein Feststellen des Leitungspegels, der mit dem in das Sendehalteregister des Zwischenspeichers 124 ausgegebenen Bit Daten übereinstimmt, kann das Arbitrierungsmodul 111 den Leitungspegel mit einem erwarteten Leitungspegel vergleichen, um eine Kollision auf dem Bus 108 zu erkennen. Zum Beispiel kann das Arbitrierungsmodul 111 einen Logikpegel (z.B. eine logische ‚1‘ oder ‚0‘) eines in das Sendehalteregister des Zwischenspeichers 124 ausgegebenen Bit mit dem Leitungspegel vergleichen, der auf einer Datenleitung des Busses 108 während des Taktzyklus erkannt wird, der mit dem Bit übereinstimmt.
-
Wenn der Leitungspegel mit dem erwarteten Leitungspegel übereinstimmt, kann das Arbitrierungsmodul 111 feststellen, dass keine Kollision auf dem Bus 108 eingetreten ist. Wenn zum Beispiel das Schreibmodul 142 eine logische ‚1‘ in das Sendehalteregister des Zwischenspeichers 124 ausgegeben hat und die Schnittstelle 120 und/oder die Bus-Datenübertragungseinheit 150 einen Leitungspegel mit einer logischen ‚1‘ auf einer Datenleitung des Busses 108 erkannt haben, kann das Arbitrierungsmodul 111 feststellen, dass keine Kollision auf dem Bus 108 eingetreten ist.
-
Wenn andererseits ein Leitungspegel nicht mit einem erwarteten Leitungspegel übereinstimmt, kann das Arbitrierungsmodul 111 feststellen, dass eine Kollision auf dem Bus 108 eingetreten ist. Wenn zum Beispiel das Schreibmodul 142 eine logische ‚0‘ in das Sendehalteregister des Zwischenspeichers 124 ausgegeben hat und die Schnittstelle 120 und/oder die Bus-Datenübertragungseinheit 150 einen Leitungspegel mit einer logischen ‚1‘ auf einer Datenleitung des Busses 108 erkannt haben, kann das Arbitrierungsmodul 111 feststellen, dass eine Kollision auf dem Bus 108 eingetreten ist.
-
In Fällen, in denen das Arbitrierungsmodul 111 feststellt, dass eine Kollision auf dem Bus 108 eingetreten ist, kann die Slave-Speichervorrichtung 107 ein Senden auf einer Datenleitung des Busses 108 beenden, bis eine nächste Startbedingung eingetreten ist. Zum Beispiel kann das Arbitrierungsmodul 111 das Schreibmodul 142 veranlassen, ein Ausgeben von Daten in das Sendehalteregister des Zwischenspeichers 124 zu beenden, bis eine nächste Startbedingung eingetreten ist, wenn der Leitungspegel und der erwartete Leitungspegel nicht übereinstimmen.
-
Die Bus-Datenübertragungseinheit 150 kann feststellen, ob eine Startbedingung auf dem Bus 108 eingetreten ist. Zum Beispiel kann die Bus-Datenübertragungseinheit 150 feststellen, dass eine Datenleitung des Busses 108 zurückgesetzt wurde, wenn die Host-Vorrichtung 102 während eines ersten Taktzyklus (z.B. einer Anstiegsflanke) einer Taktleitung und der Host-Vorrichtung 102 einen Stopp-Befehl sendet (z.B. eine Datenleitung zu einer logischen ‚1‘ treibt), und als Reaktion auf ein Feststellen, dass die Datenleitung zurückgesetzt wurde, kann die Bus-Datenübertragungseinheit 150 feststellen, dass eine Startbedingung auf dem Bus 108 eingetreten ist, wenn die Host-Vorrichtung 102 während eines zweiten Taktzyklus der Taktleitung einen Startbefehl sendet (z.B. eine Datenleitung zu einer logischen ‚0‘ treibt). In einigen Fällen kann die Bus-Datenübertragungseinheit 150 feststellen, dass eine Datenleitung des Busses 108 zurückgesetzt wurde, wenn die Slave-Speichervorrichtung 107 während eines ersten Taktzyklus (z.B. einer Anstiegsflanke) einer Taktleitung einen „Negative-Bestätigung-Befehl“ (negative acknowledgement command, NACK- oder NAK-Befehl) sendet, und als Reaktion auf ein Feststellen, dass die Datenleitung zurückgesetzt wurde, kann die Bus-Datenübertragungseinheit 150 feststellen, dass eine Startbedingung auf dem Bus 108 eingetreten ist, wenn die Host-Vorrichtung 102 während eines zweiten Taktzyklus der Taktleitung einen Startbefehl sendet (z.B. eine Datenleitung zu einer logischen ‚0‘ treibt).
-
Als Reaktion auf ein Feststellen, dass eine Startbedingung auf dem Bus 108 eingetreten ist, kann das Arbitrierungsmodul 111 die Bus-Datenübertragungseinheit 150 veranlassen, erneut zu versuchen, das erste Bit über den Bus 108 an die Host-Vorrichtung 102 zu senden. Zum Beispiel kann das Arbitrierungsmodul 111 dem Schreibmodul 142 gestatten, Daten in das Sendehalteregister des Zwischenspeichers 124 auszugeben, um die Bus-Datenübertragungseinheit 150 zu veranlassen, erneut zu versuchen, das erste Bit zu senden, nachdem die Bus-Datenübertragungseinheit 150 festgestellt hat, dass die Datenleitung des Busses 108 zurückgesetzt wurde, und/oder nachdem eine Startbedingung eingetreten ist (und nachdem das Arbitrierungsmodul 111 eine weitere Anzeige eines Sendepuffer-leer-Ereignisses empfangen hat).
-
In Fällen, in denen das Arbitrierungsmodul 111 feststellt, dass keine Kollision auf dem Bus 108 eingetreten ist, kann das Arbitrierungsmodul 111 fortfahren, dem Schreibmodul 142 zu gestatten, Daten (z.B. zweites Bit, drittes Bit usw.) in das Sendehalteregister des Zwischenspeichers 124 auszugeben. Zum Beispiel kann das Arbitrierungsmodul 111 einen Logikpegel (z.B. eine logische ‚1‘ oder ‚0‘) eines in das Sendehalteregister des Zwischenspeichers 124 ausgegebenen zweiten Bit mit einem Leitungspegel vergleichen, der auf einer Datenleitung des Busses 108 während eines Taktzyklus erkannt wird, der mit dem zweiten Bit übereinstimmt (z.B. ein Taktzyklus nach dem Taktzyklus, der mit dem ersten Bit übereinstimmt). Als Reaktion darauf, dass das Schreibmodul 142 Daten in das Sendehalteregister des Zwischenspeichers 124 ausgibt, kann die Bus-Datenübertragungseinheit 150 fortfahren, Daten auf den Bus 108 zu senden, bis die Daten (z.B. das Byte) an die Host-Vorrichtung 102 gesendet wurden.
-
In Fällen, in denen die Bus-Datenübertragungseinheit 150 auf dem Bus 108 sendet, kann die Bus-Datenübertragungseinheit 150 erkennen, ob ein Stopp-Befehl auf dem Bus 108 erfolgt. Zum Beispiel kann die Bus-Datenübertragungseinheit 150 über die Schnittstelle 120 einen Low-zu-High-Übergang eines Datensignals auf der Datenleitung des Busses 108 erkennen, während ein Taktsignal auf einer Taktleitung des Busses 108 High ist. Bei einigen Beispielen kann der Stopp-Befehl von einer Master-Speichervorrichtung (z.B. der Master-Speichervorrichtung 104 aus 1) gesendet werden. Als Reaktion auf ein Empfangen des Stopp-Befehls kann die Bus-Datenübertragungseinheit 150 ein Senden auf dem Bus 108 beenden, bis der Bus 108 zurückgesetzt wurde und/oder eine Startbedingung eingetreten ist.
-
3 ist ein konzeptionelles Diagramm, das eine beispielhafte Technik veranschaulicht, die mindestens ein Prozessor gemäß einer oder mehreren Techniken dieser Offenbarung zur Kollisionserkennung umsetzen kann. Die Technik aus 3 wird der Einfachheit der Beschreibung halber unter gleichzeitiger Bezugnahme auf die Speicherumgebung 10 aus 1 und die Steuervorrichtung 122 aus 2 beschrieben. Obwohl in 3 eine serielle Taktleitung als eine Taktleitung veranschaulicht wird, können jedes geeignete Taktsignal und Protokoll verwendet werden. Des Weiteren können, obwohl in 3 eine serielle Datenleitung als eine Datenleitung veranschaulicht wird, jede geeignete Datenleitung und jedes geeignete Protokoll verwendet werden. Es versteht sich, dass ein Host-Datenleitungssignal 204 und ein Vorrichtungs-Datenleitungssignal 206 bei einigen Beispielen ein gleiches Datenleitungssignal sein können, und dass die Trennung des Datenleitungssignals nur dazu dient, weiter zu veranschaulichen, wie das Datenleitungssignal von der Host-Vorrichtung 102 und der Slave-Speichervorrichtung 106A getrieben werden kann.
-
Die Host-Vorrichtung 102 kann eine Startbedingung 210 durch Treiben des Host-Datenleitungssignals 204 von logisch ‚1‘ zu logisch ‚0‘ anzeigen, und die Host-Vorrichtung 102 kann anschließend Daten an die Slave-Speichervorrichtung 106A mithilfe des Host-Datenleitungssignals 204 senden. Bei Sendebedingung 214 kann die Slave-Speichervorrichtung 106A das Vorrichtungs-Datenleitungssignal 206 derart treiben, dass es eine Bestätigung 220 anzeigt, die einen erfolgreichen Empfang der von der Host-Vorrichtung 102 gesendeten Daten anzeigt. Bei einigen Beispielen kann die Bestätigung 220 während eines Zustands (z.B. ein Sendepuffer-leer-Ereignis) erfolgen, der möglicherweise von einem Arbitrierungsmodul (z.B. 111 aus 2) verwendet wird, um sich mit dem Vorrichtungs-Datenleitungssignal 206 zu synchronisieren. Als Nächstes kann während der Sendebedingung 214 und nach der Bestätigung 220 die Slave-Speichervorrichtung 106A das Vorrichtungs-Datenleitungssignal 206 treiben, um Byte 222 zu senden. Bei einigen Beispielen kann ein Arbitrierungsmodul (z.B. 111 aus 2) das Vorrichtungs-Datenleitungssignal 206 mit einem erwarteten Leitungspegel vergleichen, um festzustellen, ob eine Kollision eingetreten ist. Wie in 3 gezeigt kann, wenn keine Kollision eingetreten ist, die Slave-Speichervorrichtung 106A das Vorrichtungs-Datenleitungssignal 206 derart treiben, dass es fortfährt, Daten zu übertragen, bis die Host-Vorrichtung 102 das Host-Datenleitungssignal 204 derart treibt, dass es eine Stopp-Bedingung 216 anzeigt.
-
4 ist ein Ablaufplan, der eine beispielhafte Technik veranschaulicht, die mindestens ein Prozessor gemäß einer oder mehreren Techniken dieser Offenbarung zur Kollisionserkennung umsetzen kann. Die Technik aus 4 wird der Einfachheit der Beschreibung halber unter gleichzeitiger Bezugnahme auf die Speicherumgebung 10 aus 1 und die Steuervorrichtung 122 aus 2 beschrieben.
-
Das Arbitrierungsmodul 111 kann eine Anzeige eines Sendepuffer-leer-Ereignisses empfangen (302). Zum Beispiel kann die Bus-Datenübertragungseinheit 150 an das Arbitrierungsmodul 111 einen Interrupt senden, der einem Sendepuffer-leer-Ereignis entspricht. Als Reaktion auf die Anzeige des Sendepuffer-leer-Ereignisses kann das Schreibmodul 142 Daten in das Sendehalteregister ausgeben (304). Zum Beispiel kann, nachdem das Arbitrierungsmodul 111 den Interrupt empfangen hat, der dem Sendepuffer-leer-Ereignis entspricht, das Arbitrierungsmodul 111 dem Schreibmodul 142 gestatten, Daten in das Sendehalteregister des Zwischenspeichers 124 auszugeben. Als Nächstes kann das Arbitrierungsmodul 111 feststellen, wann eine Bestätigung von der Bus-Datenübertragungseinheit 150 auf dem Bus 108 gesendet wird (306). Zum Beispiel kann, nachdem das Arbitrierungsmodul 111 den Interrupt empfangen hat, der dem Sendepuffer-leer-Ereignis entspricht, und Daten in das Sendehalteregister des Zwischenspeichers 124 geschrieben hat, das Arbitrierungsmodul 111 eine Datenleitung des Busses 108 während Anstiegsflanken einer Taktleitung des Busses 108 im Hinblick auf eine Bestätigung überwachen. In einigen Fällen kann die Bestätigung von der Bus-Datenübertragungseinheit 150 als Reaktion auf ein Erkennen eines erfolgreichen Empfangs von Daten gesendet werden, die auf dem Bus 108 an die Slave-Speichervorrichtung 107 gesendet wurden. Anschließend kann die Slave-Speichervorrichtung 107 ein erstes Bit auf der Datenleitung des Busses 108 an die Host-Vorrichtung 102 senden (308). Zum Beispiel kann die Bus-Datenübertragungseinheit 150 ein erstes Bit auf der Datenleitung des Busses 108 an die Host-Vorrichtung 102 senden, das mit dem aus dem Sendehalteregister des Zwischenspeichers 124 gelesenen ersten Bit übereinstimmt. Als Nächstes kann das Arbitrierungsmodul 111 einen Leitungspegel der Datenleitung des Busses 108 auf Grundlage davon feststellen, wann die Bestätigung auf der Datenleitung des Busses 108 gesendet wurde (310). Zum Beispiel kann das Arbitrierungsmodul 111 unter Verwendung der Schnittstelle 120 und/oder der Bus-Datenübertragungseinheit 150 eine Taktflanke (z.B. Anstiegsflanke) einer Taktleitung des Busses 108 erkennen, die mit der Bestätigung übereinstimmt, und kann einen Leitungspegel der Datenleitung des Busses 108 lesen, der mit einer Taktflanke (z.B. ansteigend) des Taktzyklus unmittelbar nach der Taktflanke einer Taktleitung des Busses 108 übereinstimmt, die mit der Bestätigung übereinstimmt.
-
Wenn der Leitungspegel dem ersten Bit entspricht („JA“-Zweig von 316), kann die Slave-Speichervorrichtung 107 feststellen, dass keine Kollision eingetreten ist (322). Zum Beispiel kann das Arbitrierungsmodul 111 feststellen, dass keine Kollision eingetreten ist, als Reaktion darauf, dass das Schreibmodul 142 das erste Bit als eine logische ‚0‘ an das Sendehalteregister des Zwischenspeichers 124 ausgibt und feststellt, dass der dem ersten Bit entsprechende Leitungspegel eine logische ‚0‘ anzeigt. Als Nächstes kann die Slave-Speichervorrichtung 107 ein zweites Bit auf der Datenleitung des Busses 108 senden (324). Zum Beispiel kann das Schreibmodul 142 einen Wert für ein zweites Bit an das Sendehalteregister des Zwischenspeichers 124 ausgeben, und die Bus-Datenübertragungseinheit 150 kann das zweite Bit auf der Datenleitung des Busses 108 an die Host-Vorrichtung 102 senden.
-
Wenn andererseits der Leitungspegel nicht dem ersten Bit entspricht („NEIN“-Zweig von 316), kann das Arbitrierungsmodul 111 feststellen, dass eine Kollision eingetreten ist (318). Zum Beispiel kann das Arbitrierungsmodul 111 feststellen, dass eine Kollision eingetreten ist, als Reaktion darauf, dass das Schreibmodul 142 das erste Bit als eine logische ‚1‘ an das Sendehalteregister des Zwischenspeichers 124 ausgibt, und feststellt, dass der dem ersten Bit entsprechende Leitungspegel eine logische ‚0‘ anzeigt. Als Reaktion auf ein Feststellen, dass eine Kollision eingetreten ist, kann die Slave-Speichervorrichtung 107 ein weiteres Senden auf dem Bus 108 beenden. Zum Beispiel kann das Arbitrierungsmodul 111 damit aufhören, dem Schreibmodul 142 zu gestatten, Daten (z.B. ein zweites Bit eines Byte) an das Sendehalteregister des Zwischenspeichers 124 auszugeben, bis eine Startbedingung eingetreten ist (320), bevor es erneut versucht, die Daten zu senden (z.B. erneuter Start zu 302).
-
Die in dieser Offenbarung beschriebenen Techniken können mindestens zum Teil in Hardware, Software, Firmware oder einer beliebigen Kombination davon umgesetzt werden. Zum Beispiel können verschiedene Aspekte der beschriebenen Techniken in einem oder mehreren Prozessoren, unter Einschluss eines oder mehrerer Mikroprozessoren, digitaler Signalprozessoren (DSPs), anwendungsspezifischer integrierter Schaltungen (ASICs), feldprogrammierbarer Gate-Arrays (FPGAs) oder jeder anderen gleichwertigen integrierten oder diskreten logischen Schaltungsanordnung und auch jeglicher Kombinationen derartiger Komponenten umgesetzt werden. Der Begriff „Prozessor“ oder „Verarbeitungsschaltungsanordnung“ kann sich allgemein auf jede der vorstehenden logischen Schaltungsanordnungen beziehen, allein oder in Kombination mit anderen logischen Schaltungsanordnungen, oder auf beliebige andere gleichwertige Schaltungsanordnungen. Eine Steuereinheit unter Einschluss von Hardware kann ebenfalls eine oder mehrere Techniken dieser Offenbarung durchführen.
-
Derartige Hardware, Software und Firmware kann in derselben Vorrichtung oder in separaten Vorrichtungen umgesetzt werden, um die in dieser Offenbarung beschriebenen verschiedenen Techniken zu unterstützen. Des Weiteren können alle der beschriebenen Einheiten, Module oder Komponenten zusammen umgesetzt werden, oder separat als diskrete, aber interoperable Logikvorrichtungen. Eine Darstellung unterschiedlicher Merkmale als Module oder Einheiten soll unterschiedliche funktionale Aspekte hervorheben, und deutet nicht notwendigerweise an, dass derartige Module oder Einheiten durch separate Hardware-, Firmware- oder Softwarekomponenten realisiert werden müssen. Vielmehr kann mit einem oder mehreren Modulen oder einer oder mehreren Einheiten in Zusammenhang stehende Funktionalität durch separate Hardware-, Firmware- oder Softwarekomponenten ausgeführt werden oder in gemeinsame oder separate Hardware-, Firmware- oder Softwarekomponenten integriert sein.
-
Die in dieser Offenbarung beschriebenen Techniken können auch in einem Erzeugnis verkörpert oder codiert sein, einschließlich eines mit Anweisungen codierten computerlesbaren Speichermediums. Anweisungen, die in einem Erzeugnis, darunter ein codiertes computerlesbares Speichermedium, eingebettet oder codiert sind, können einen oder mehrere programmierbare Prozessoren oder andere Prozessoren veranlassen, eine oder mehrere der hier beschriebenen Techniken umzusetzen, beispielsweise, wenn in dem computerlesbaren Speichermedium enthaltene oder codierte Anweisungen von dem einen oder mehreren Prozessoren ausgeführt werden. Zu computerlesbaren Speichermedien können zählen: Direktzugriffsspeicher (RAM), Nur-Lese-Speiche (ROM), programmierbarer Nur-Lese-Speicher (PROM), löschbarer programmierbarer Nur-Lese-Speicher (EPROM), elektronisch löschbarer Nur-Lese-Speicher (EEPROM), Flashspeicher, eine Festplatte, ein Compact-Disc-ROM (CD-ROM), eine Floppy-Disk, eine Kassette, magnetische Medien, optische Medien oder andere computerlesbare Medien. Bei einigen Beispielen kann es sich bei dem Erzeugnis um ein oder mehrere computerlesbare Speichermedien handeln.
-
Bei einigen Beispielen kann es sich bei einem computerlesbaren Speichermedium um ein nichtflüchtiges Medium handeln. Der Begriff nichtflüchtig kann darauf hinweisen, dass das Speichermedium nicht in einer Trägerwelle oder in einem verbreiteten Signal verkörpert ist. Bei einigen Beispielen speichert ein nichtflüchtiges Speichermedium möglicherweise Daten, die sich im Lauf der Zeit verändern können (z.B. im RAM oder Zwischenspeicher).
-
Es wurden verschiedene Beispiele beschrieben. Diese und andere Beispiele liegen innerhalb des Schutzbereichs der folgenden Ansprüche.
-
ZITATE ENTHALTEN IN DER BESCHREIBUNG
-
Diese Liste der vom Anmelder aufgeführten Dokumente wurde automatisiert erzeugt und ist ausschließlich zur besseren Information des Lesers aufgenommen. Die Liste ist nicht Bestandteil der deutschen Patent- bzw. Gebrauchsmusteranmeldung. Das DPMA übernimmt keinerlei Haftung für etwaige Fehler oder Auslassungen.
-
Zitierte Nicht-Patentliteratur
-
- NVM Express Management Interface Revision 1.0 vom 17. November 2015 [0012]
- „System Management Bus (SMBus) Specification Version 3.0“ des System Management Interface Forum, Inc. vom 20. Dezember 2014 [0015]
- „I2C-Bus Specification and User Manual“ Rev. 6, vom 4. April 2014 [0017]
- „NVMe Revision 1.2a“ vom 23. Oktober 2015 [0023]