DE102017104160A1 - Kollisionserkennung für Slave-Speichervorrichtungen - Google Patents

Kollisionserkennung für Slave-Speichervorrichtungen Download PDF

Info

Publication number
DE102017104160A1
DE102017104160A1 DE102017104160.5A DE102017104160A DE102017104160A1 DE 102017104160 A1 DE102017104160 A1 DE 102017104160A1 DE 102017104160 A DE102017104160 A DE 102017104160A DE 102017104160 A1 DE102017104160 A1 DE 102017104160A1
Authority
DE
Germany
Prior art keywords
data line
bit
line
response
determining
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.)
Pending
Application number
DE102017104160.5A
Other languages
English (en)
Inventor
Mark Robert Hicks
George Christopher Sneed
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.)
Western Digital Technologies Inc
Original Assignee
Western Digital Technologies Inc
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 Western Digital Technologies Inc filed Critical Western Digital Technologies Inc
Publication of DE102017104160A1 publication Critical patent/DE102017104160A1/de
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/3003Monitoring arrangements specially adapted to the computing system or computing system component being monitored
    • G06F11/3034Monitoring arrangements specially adapted to the computing system or computing system component being monitored where the computing system component is a storage system, e.g. DASD based or network based
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1004Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's to protect a block of data words, e.g. CRC or checksum
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/079Root cause analysis, i.e. error or fault diagnosis
    • 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/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1605Handling requests for interconnection or transfer for access to memory bus based on arbitration
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0706Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment
    • G06F11/0727Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment in a storage system, e.g. in a DASD or network based storage system
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0751Error or fault detection not based on redundancy
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0793Remedial or corrective actions
    • 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/38Information transfer, e.g. on bus
    • G06F13/40Bus structure
    • 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/38Information transfer, e.g. on bus
    • G06F13/42Bus transfer protocol, e.g. handshake; Synchronisation
    • G06F13/4282Bus transfer protocol, e.g. handshake; Synchronisation on a serial bus, e.g. I2C bus, SPI bus
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F5/00Methods or arrangements for data conversion without changing the order or content of the data handled
    • G06F5/06Methods or arrangements for data conversion without changing the order or content of the data handled for changing the speed of data flow, i.e. speed regularising or timing, e.g. delay lines, FIFO buffers; over- or underrun control therefor
    • G06F5/10Methods or arrangements for data conversion without changing the order or content of the data handled for changing the speed of data flow, i.e. speed regularising or timing, e.g. delay lines, FIFO buffers; over- or underrun control therefor having a sequence of storage locations each being individually accessible for both enqueue and dequeue operations, e.g. using random access memory
    • G06F5/12Means for monitoring the fill level; Means for resolving contention, i.e. conflicts between simultaneous enqueue and dequeue operations
    • G06F5/14Means for monitoring the fill level; Means for resolving contention, i.e. conflicts between simultaneous enqueue and dequeue operations for overflow or underflow handling, e.g. full or empty flags
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2205/00Indexing scheme relating to group G06F5/00; Methods or arrangements for data conversion without changing the order or content of the data handled
    • G06F2205/12Indexing scheme relating to groups G06F5/12 - G06F5/14
    • G06F2205/126Monitoring of intermediate fill level, i.e. with additional means for monitoring the fill level, e.g. half full flag, almost empty flag

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Quality & Reliability (AREA)
  • Computing Systems (AREA)
  • Computer Security & Cryptography (AREA)
  • Biomedical Technology (AREA)
  • Health & Medical Sciences (AREA)
  • Computer Hardware Design (AREA)
  • Mathematical Physics (AREA)
  • Debugging And Monitoring (AREA)
  • Information Transfer Systems (AREA)

Abstract

Ein Verfahren beinhaltet 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.

Description

  • 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]

Claims (20)

  1. Verfahren, das umfasst: Senden, mithilfe einer Steuervorrichtung einer Speichervorrichtung, eines ersten Bit auf einer Datenleitung; als Reaktion auf ein Senden eines ersten Bit auf der Datenleitung, Feststellen eines Leitungspegels der Datenleitung mithilfe der Steuervorrichtung; als Reaktion auf ein Feststellen des Leitungspegels der Datenleitung, Feststellen, mithilfe der Steuervorrichtung, ob der Leitungspegel der Datenleitung dem ersten Bit entspricht, und als Reaktion auf ein Feststellen, dass der Leitungspegel der Datenleitung dem ersten Bit nicht entspricht, Feststellen, mithilfe der Steuervorrichtung, dass eine Kollision auf der Datenleitung eingetreten ist.
  2. Verfahren nach Anspruch 1, das umfasst: als Reaktion auf ein Feststellen, dass die Kollision auf der Datenleitung eingetreten ist: Feststellen, mithilfe der Steuervorrichtung, ob eine Startbedingung auf der Datenleitung eingetreten ist, und Beenden eines Sendens von Daten auf der Datenleitung mithilfe der Steuervorrichtung, und als Reaktion auf ein Feststellen, dass die Startbedingung auf der Datenleitung eingetreten ist, Senden des ersten Bit auf der Datenleitung mithilfe der Steuervorrichtung.
  3. Verfahren nach Anspruch 1, das umfasst: Als Reaktion auf ein Feststellen, dass der Leitungspegel der Datenleitung dem ersten Bit entspricht, Feststellen, mithilfe der Steuervorrichtung, dass keine Kollision auf der Datenleitung eingetreten ist, und als Reaktion auf ein Feststellen, dass keine Kollision auf der Datenleitung eingetreten ist, Senden eines zweiten Bit auf der Datenleitung mithilfe der Steuervorrichtung.
  4. Verfahren nach Anspruch 1, das umfasst: Feststellen einer Anstiegsflanke eines Taktsignals auf einer Taktleitung mithilfe der Steuervorrichtung, wobei ein Senden des ersten Bit auf der Datenleitung ein Senden des ersten Bit auf der Datenleitung während der Anstiegsflanke umfasst.
  5. Verfahren nach Anspruch 4, wobei: ein Feststellen, dass der Leitungspegel dem ersten Bit entspricht, vor einer Abfallflanke des Taktsignals auf der Taktleitung erfolgt und die Anstiegsflanke und die Abfallflanke innerhalb eines einzigen Taktzyklus des Taktsignals auf der Taktleitung liegen.
  6. Verfahren nach Anspruch 1, das umfasst: Empfangen einer Anzeige eines Sendepuffer-leer-Ereignisses mithilfe von auf einem Prozessor der Steuervorrichtung ausgeführter Firmware und von einer Bus-Datenübertragungseinheit der Steuervorrichtung, und als Reaktion auf ein Empfangen der Anzeige des Sendepuffer-leer-Ereignisses, Ausgeben des ersten Bit in ein Sendehalteregister der Steuervorrichtung mithilfe der Firmware, wobei ein Senden des ersten Bit auf der Datenleitung als Reaktion auf ein Ausgeben des ersten Bit in das Sendehalteregister erfolgt.
  7. Verfahren nach Anspruch 6, wobei: ein Feststellen, ob der Leitungspegel dem ersten Bit entspricht, ein Feststellen mithilfe der Firmware umfasst, ob der Leitungspegel dem in das Sendehalteregister ausgegebenen ersten Bit entspricht, und ein Feststellen, dass keine Kollision auf der Datenleitung eingetreten ist, ein Feststellen mithilfe der Firmware umfasst, dass die Kollision auf der Datenleitung nicht eingetreten ist, als Reaktion auf ein Feststellen der Firmware, dass der Leitungspegel dem in das Sendehalteregister ausgegebenen ersten Bit entspricht.
  8. Verfahren nach Anspruch 1, wobei: ein Senden des ersten Bit auf der Datenleitung den Leitungspegel der Datenleitung derart treibt, dass er einen ersten Logikpegel anzeigt, und ein Feststellen, dass der Leitungspegel nicht dem ersten Bit entspricht, ein Feststellen mithilfe der Steuervorrichtung und nach einem Senden des ersten Bit auf der Datenleitung umfasst, dass der Leitungspegel der Datenleitung einen zweiten Logikpegel anzeigt, der sich von dem ersten Logikpegel unterscheidet.
  9. Speichervorrichtung, die umfasst: ein Speicherelement; eine mit einem Bus gekoppelte Schnittstelle und eine Steuervorrichtung, die für Folgendes konfiguriert ist: Senden eines ersten Bit auf einer Datenleitung des Busses; als Reaktion auf ein Senden des ersten Bit auf der Datenleitung, Feststellen eines Leitungspegels der Datenleitung, als Reaktion auf ein Feststellen des Leitungspegels der Datenleitung, Feststellen, ob der Leitungspegel der Datenleitung dem ersten Bit entspricht, und als Reaktion auf ein Feststellen, dass der Leitungspegel der Datenleitung dem ersten Bit nicht entspricht, Feststellen, dass eine Kollision auf der Datenleitung eingetreten ist.
  10. Speichervorrichtung nach Anspruch 9, wobei die Steuervorrichtung ferner für Folgendes konfiguriert ist: Als Reaktion auf ein Feststellen, dass die Kollision auf der Datenleitung eingetreten ist: Feststellen, ob eine Startbedingung auf der Datenleitung eingetreten ist, und Beenden eines Sendens von Daten auf der Datenleitung, und als Reaktion auf ein Feststellen, dass die Startbedingung auf der Datenleitung eingetreten ist, Senden des ersten Bit auf der Datenleitung.
  11. Speichervorrichtung nach Anspruch 9, wobei die Steuervorrichtung ferner für Folgendes konfiguriert ist: Als Reaktion auf ein Feststellen, dass der Leitungspegel der Datenleitung dem ersten Bit entspricht, Feststellen, dass keine Kollision auf der Datenleitung eingetreten ist, und als Reaktion auf ein Feststellen, dass keine Kollision auf der Datenleitung eingetreten ist, Senden eines zweiten Bit auf der Datenleitung.
  12. Speichervorrichtung nach Anspruch 9, wobei die Steuervorrichtung ferner für Folgendes konfiguriert ist: Feststellen einer Anstiegsflanke eines Taktsignals auf einer Taktleitung des Busses, wobei ein Senden des ersten Bit auf der Datenleitung ein Senden des ersten Bit auf der Datenleitung während der Anstiegsflanke umfasst.
  13. Speichervorrichtung nach Anspruch 12, wobei: die Steuervorrichtung ferner derart konfiguriert ist, dass sie vor einer Abfallflanke des Taktsignals auf der Taktleitung feststellt, dass der Leitungspegel dem ersten Bit entspricht, und die Anstiegsflanke und die Abfallflanke innerhalb eines einzigen Taktzyklus des Taktsignals auf der Taktleitung liegen.
  14. Speichervorrichtung nach Anspruch 9, wobei die Steuervorrichtung auf einem Prozessor der Steuervorrichtung ausgeführte Firmware und eine Bus-Datenübertragungseinheit umfasst, wobei die Firmware für Folgendes konfiguriert ist: Empfangen einer Anzeige eines Sendepuffer-Leer-Ereignisses und als Reaktion auf ein Empfangen der Anzeige des Sendepuffer-leer-Ereignisses Ausgeben des ersten Bit in ein Sendehalteregister der Steuervorrichtung, wobei ein Senden des ersten Bit auf der Datenleitung als Reaktion auf ein Ausgeben des ersten Bit in das Sendehalteregister erfolgt.
  15. Speichervorrichtung nach Anspruch 14, wobei die Firmware ferner für Folgendes konfiguriert ist: Feststellen, ob der Leitungspegel dem in das Sendehalteregister ausgegebenen ersten Bit entspricht, und Feststellen, dass keine Kollision auf der Datenleitung eingetreten ist, als Reaktion auf ein Feststellen der Firmware, dass der Leitungspegel dem in das Sendehalteregister ausgegebenen ersten Bit entspricht.
  16. Nichtflüchtiges computerlesbares Speichermedium, das mit Anweisungen codiert ist, die, wenn sie ausgeführt werden, den einen oder mehrere Prozessoren einer Speichervorrichtung zu Folgendem veranlassen: Senden eines ersten Bit auf einer Datenleitung; als Reaktion auf ein Senden des ersten Bit auf der Datenleitung, Feststellen eines Leitungspegels der Datenleitung; als Reaktion auf ein Feststellen des Leitungspegels der Datenleitung, Feststellen, ob der Leitungspegel der Datenleitung dem ersten Bit entspricht, und als Reaktion auf ein Feststellen, dass der Leitungspegel der Datenleitung dem ersten Bit nicht entspricht, Feststellen, dass eine Kollision auf der Datenleitung eingetreten ist.
  17. Nichtflüchtiges computerlesbares Speichermedium nach Anspruch 16, ferner mit Anweisungen codiert, die, wenn sie ausgeführt werden, den einen oder mehrere Prozessoren der Speichervorrichtung zu Folgendem veranlassen: als Reaktion auf ein Feststellen, dass die Kollision auf der Datenleitung eingetreten ist: Feststellen, ob eine Startbedingung auf der Datenleitung eingetreten ist, und Beenden eines Sendens von Daten auf der Datenleitung, und als Reaktion auf ein Feststellen, dass die Startbedingung auf der Datenleitung eingetreten ist, Senden des ersten Bit auf der Datenleitung.
  18. Nichtflüchtiges computerlesbares Speichermedium nach Anspruch 16, ferner mit Anweisungen codiert, die, wenn sie ausgeführt werden, den einen oder mehrere Prozessoren der Speichervorrichtung zu Folgendem veranlassen: als Reaktion auf ein Feststellen, dass der Leitungspegel der Datenleitung dem ersten Bit entspricht, Feststellen, dass keine Kollision auf der Datenleitung eingetreten ist, und als Reaktion auf ein Feststellen, dass keine Kollision auf der Datenleitung eingetreten ist, Senden eines zweiten Bit auf der Datenleitung.
  19. System, das umfasst: 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 ein Feststellen, dass der Leitungspegel der Datenleitung dem ersten Bit nicht entspricht.
  20. System nach Anspruch 19, das ferner umfasst: Mittel zum Feststellen, ob eine Startbedingung auf der Datenleitung eingetreten ist; Mittel zum Beenden eines Sendens von Daten auf der Datenleitung und Mittel zum Senden des ersten Bit auf der Datenleitung als Reaktion auf ein Feststellen, dass die Startbedingung auf der Datenleitung eingetreten ist.
DE102017104160.5A 2016-04-27 2017-02-28 Kollisionserkennung für Slave-Speichervorrichtungen Pending DE102017104160A1 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US15/139,988 US10019306B2 (en) 2016-04-27 2016-04-27 Collision detection for slave storage devices
US15/139,988 2016-04-27

Publications (1)

Publication Number Publication Date
DE102017104160A1 true DE102017104160A1 (de) 2017-11-02

Family

ID=60081465

Family Applications (1)

Application Number Title Priority Date Filing Date
DE102017104160.5A Pending DE102017104160A1 (de) 2016-04-27 2017-02-28 Kollisionserkennung für Slave-Speichervorrichtungen

Country Status (4)

Country Link
US (2) US10019306B2 (de)
KR (1) KR102075197B1 (de)
CN (1) CN107315698B (de)
DE (1) DE102017104160A1 (de)

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20190171611A1 (en) * 2017-12-05 2019-06-06 Qualcomm Incorporated Protocol-framed clock line driving for device communication over master-originated clock line
US10649909B2 (en) * 2018-06-14 2020-05-12 Western Digital Technologies, Inc. Logical block addressing range collision crawler
CN110990325A (zh) * 2019-10-31 2020-04-10 苏州浪潮智能科技有限公司 一种基于i2c总线的数据传输方法与装置
US11494329B2 (en) * 2020-02-27 2022-11-08 Advantest Corporation NVMe-MI over SMBus multi-master controller with other SMBus and I2C masters in a single FPGA chip
CN112765082B (zh) * 2021-01-27 2024-04-26 维沃移动通信有限公司 多主机仲裁方法、装置和可读存储介质
JP2022144019A (ja) * 2021-03-18 2022-10-03 ローム株式会社 電源システム
US20240111527A1 (en) * 2022-09-29 2024-04-04 Macronix International Co., Ltd. Managing status information of logic units

Family Cites Families (27)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1017285B (zh) * 1985-08-14 1992-07-01 苹果电脑公司 用于由一设备请求服务的方法
US5715407A (en) * 1992-03-06 1998-02-03 Rambus, Inc. Process and apparatus for collision detection on a parallel bus by monitoring a first line of the bus during even bus cycles for indications of overlapping packets
US5740174A (en) * 1995-11-02 1998-04-14 Cypress Semiconductor Corp. Method and apparatus for performing collision detection and arbitration within an expansion bus having multiple transmission repeater units
US6625163B1 (en) * 1999-04-21 2003-09-23 Nortel Networks Ltd. Collision detection on a differential bus
US20060294275A1 (en) 2005-06-23 2006-12-28 Emil Lambrache Fast two wire interface and protocol for transferring data
US20070058663A1 (en) * 2005-08-25 2007-03-15 Mcgee Phillip Flexible collision detection serial bus transceiver apparatus and method
CN101146121A (zh) * 2007-06-20 2008-03-19 中兴通讯股份有限公司 总线中继装置
US9035748B2 (en) * 2007-06-29 2015-05-19 Neology, Inc. Systems and methods for collision avoidance in a multiple RFID interrogator environment
JP5106219B2 (ja) * 2008-03-19 2012-12-26 株式会社東芝 メモリデバイス、ホストデバイス、メモリシステム、メモリデバイスの制御方法、ホストデバイスの制御方法、およびメモリシステムの制御方法
JP5039950B2 (ja) 2008-03-21 2012-10-03 インターナショナル・ビジネス・マシーンズ・コーポレーション オブジェクト移動制御システム、オブジェクト移動制御方法、サーバ及びコンピュータプログラム
TWI379200B (en) 2008-12-12 2012-12-11 Via Tech Inc Methods for preventing transaction collisions on a bus and computer system utilizing the same
CN101499043A (zh) 2009-03-12 2009-08-05 杭州士兰微电子股份有限公司 单线总线系统和通信方法
CN201435076Y (zh) * 2009-03-12 2010-03-31 杭州士兰微电子股份有限公司 单线总线系统
TWI407311B (zh) 2010-03-19 2013-09-01 Asustek Comp Inc 運用於系統管理匯流排系統的仲裁器及其仲裁方法
JP5434812B2 (ja) 2010-06-21 2014-03-05 富士通セミコンダクター株式会社 データ処理システム
CN102435076A (zh) 2010-09-29 2012-05-02 中国铝业股份有限公司 一种氧化铝生产中沸腾焙烧炉余热利用方法
KR101699781B1 (ko) 2010-10-19 2017-01-26 삼성전자주식회사 시스템 온 칩 및 그것의 데이터 중재 방법
US9286257B2 (en) * 2011-01-28 2016-03-15 Qualcomm Incorporated Bus clock frequency scaling for a bus interconnect and related devices, systems, and methods
KR101278269B1 (ko) * 2011-08-26 2013-06-24 에스케이하이닉스 주식회사 반도체 장치 및 이의 데이터 전송 방법
EP2672392A1 (de) 2012-06-05 2013-12-11 ABB Technology AG Kollisionsdetektion in EIA-485 Bus-Systemen
JP6362277B2 (ja) 2012-06-01 2018-07-25 ブラックベリー リミテッドBlackBerry Limited マルチフォーマットオーディオシステムにおけるロック保証のための確率的方法に基づく汎用同期エンジン
US9323664B2 (en) * 2013-07-23 2016-04-26 Intel Corporation Techniques for identifying read/write access collisions for a storage medium
US20150248373A1 (en) * 2014-02-28 2015-09-03 Qualcomm Incorporated Bit allocation over a shared bus to facilitate an error detection optimization
EP3001323B1 (de) * 2014-09-26 2017-07-12 Oberthur Technologies Serielle Peripherieschnittstelle
US9666269B2 (en) * 2015-02-13 2017-05-30 Qualcomm Incorporated Collision detection systems for detecting read-write collisions in memory systems after word line activation, and related systems and methods
US9798643B2 (en) * 2015-07-17 2017-10-24 Goodrich Corporation System and method of monitoring a serial bus
US20170091127A1 (en) * 2015-09-25 2017-03-30 Intel Corporation Techniques to Couple with a Storage Device via Multiple Communication Ports

Non-Patent Citations (4)

* Cited by examiner, † Cited by third party
Title
„I2C-Bus Specification and User Manual" Rev. 6, vom 4. April 2014
„NVMe Revision 1.2a" vom 23. Oktober 2015
„System Management Bus (SMBus) Specification Version 3.0" des System Management Interface Forum, Inc. vom 20. Dezember 2014
NVM Express Management Interface Revision 1.0 vom 17. November 2015

Also Published As

Publication number Publication date
US20180307552A1 (en) 2018-10-25
KR20170122648A (ko) 2017-11-06
US10761923B2 (en) 2020-09-01
CN107315698B (zh) 2020-12-08
KR102075197B1 (ko) 2020-02-07
CN107315698A (zh) 2017-11-03
US20170315851A1 (en) 2017-11-02
US10019306B2 (en) 2018-07-10

Similar Documents

Publication Publication Date Title
DE102017104160A1 (de) Kollisionserkennung für Slave-Speichervorrichtungen
DE102006002526B4 (de) Steuervorrichtung für eine Solid-State-Disk und Verfahren zum Betreiben derselben
DE102017113439B4 (de) Abbildungstabellen für Speichervorrichtungen
DE112018002951B4 (de) Verwenden eines spurformatcodes in einem cache-steuerblock für eine spur in einem cache, um lese- und schreibanforderungen in bezug auf die spur im cache zu verarbeiten
US10275356B2 (en) Component carrier with converter board
DE102012214324B4 (de) Verfahren und Vorrichtung zur Erleichterung der Datenüberprüfung mithilfe einer Prüfsumme in Verbindung mit einem Sidefile
US7444479B2 (en) Fully buffered DIMM read data substitution for write acknowledgement
DE102016009806A1 (de) Speichern von paritätsdaten getrennt von geschützten daten
US10776222B2 (en) Asymmetric memory transceiver
DE102013110085A1 (de) Host zum Steuern einer nicht-flüchtigen Speicherkarte, System mit demselben sowie Verfahren zum Betreiben des Hosts und des Systems
DE102014204076A1 (de) Serielle kommunikation-testeinrichtung, system, welches diese beinhaltet, und verfahren dafür
DE19900331A9 (de) Vorrichtung und Verfahren zur Implementierung eines USB-Endpunktkanals mit doppelter Pufferunterstützung
DE102017121465A1 (de) Datenprotokoll zum verwalten von peripheriegeräten
DE102018115199A1 (de) Verfahren zur maximierung der frequenz während einer datenintegritätsprüfung auf einem physischen schnittstellenbus
DE112020001219T5 (de) Aufgeschobene Fehlercodekorrektur mit verbesserter effektiver Datenbandbreitenleistung
DE102021114458A1 (de) Befehlsentleerung unter verwendung des host-speicherpuffers
DE102020211544A1 (de) Steuerung, betriebsverfahren der steuerung und speichergerät mit derselben
DE102012209958A1 (de) Verfahren zum Abrufen von Statusinformationen von einer fernen Einheit und entsprechendes Hostsystem
DE102021115360A1 (de) Parallele boot-ausführung von speichervorrichtungen
CN108628760B (zh) 原子写命令的方法与装置
DE112022000450T5 (de) Verbesserte d3-cold und schnellere wiederherstellung
DE102016201340B4 (de) Konfigurierung serieller Geräte
DE112019000158T5 (de) Bereichskollisions-crawler für logische blockadressierung
CN203260027U (zh) 一种备份装置及数据备份系统
CN108628761B (zh) 原子命令执行方法与装置

Legal Events

Date Code Title Description
R012 Request for examination validly filed
R082 Change of representative

Representative=s name: DEHNSGERMANY PARTNERSCHAFT VON PATENTANWAELTEN, DE

Representative=s name: DEHNS GERMANY PARTNERSCHAFT MBB, DE

R081 Change of applicant/patentee

Owner name: WESTERN DIGITAL TECHNOLOGIES, INC. (N.D.GES.D., US

Free format text: FORMER OWNER: WESTERN DIGITAL TECHNOLOGIES, INC., IRVINE, CALIF., US