[go: up one dir, main page]

DE60036465T2 - Rechneradapterkarte für die kombinierung von eingang-/ausgangfertigstellungsberichten und verwendung derselben - Google Patents

Rechneradapterkarte für die kombinierung von eingang-/ausgangfertigstellungsberichten und verwendung derselben Download PDF

Info

Publication number
DE60036465T2
DE60036465T2 DE60036465T DE60036465T DE60036465T2 DE 60036465 T2 DE60036465 T2 DE 60036465T2 DE 60036465 T DE60036465 T DE 60036465T DE 60036465 T DE60036465 T DE 60036465T DE 60036465 T2 DE60036465 T2 DE 60036465T2
Authority
DE
Germany
Prior art keywords
requests
host
host microprocessor
devices
microprocessor
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.)
Expired - Lifetime
Application number
DE60036465T
Other languages
English (en)
Other versions
DE60036465D1 (de
Inventor
Charles Jr. San Juan Capistrano MICALIZZI
Thanh X. Cerritos NGHIEM
Richard L. Fountain Valley ROMANIEC
Toan B. Orange NGUYEN
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.)
QLogic LLC
Original Assignee
QLogic LLC
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 QLogic LLC filed Critical QLogic LLC
Publication of DE60036465D1 publication Critical patent/DE60036465D1/de
Application granted granted Critical
Publication of DE60036465T2 publication Critical patent/DE60036465T2/de
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/20Handling requests for interconnection or transfer for access to input/output bus
    • G06F13/24Handling requests for interconnection or transfer for access to input/output bus using interrupt
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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/382Information transfer, e.g. on bus using universal interface adapter
    • G06F13/385Information transfer, e.g. on bus using universal interface adapter for adaptation of a particular data processing system to different peripheral devices

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Bus Control (AREA)
  • Debugging And Monitoring (AREA)
  • Input From Keyboards Or The Like (AREA)
  • Multi Processors (AREA)
  • Information Transfer Systems (AREA)

Description

  • Hintergrund der Erfindung
  • Gebiet der Erfindung
  • Die vorliegende Erfindung bezieht sich allgemein auf ein Computersystem. Speziell bezieht die vorliegende Erfindung sich auf einen Host-Adapter, der die Anzahl von Interrupts für die Vervollständigung von Eingaben/Ausgaben (I/O) reduziert, die von dem Host-Adapter zu einem Host-Mikroprozessor erzeugt werden.
  • Kurze Beschreibung des verwandten Standes der Technik
  • In einem Computersystem holt sich ein Host-Mikroprozessor (Host-System) oder eine zentrale Verarbeitungseinheit (CPU) Informationen von einer Anzahl peripherer I/O-Geräte, wie z. B. Plattenlaufwerke, indem er bzw. sie eine I/O-Anforderung an eine I/O-Steuerung oder -adapter absendet. Die I/O-Steuerung verarbeitet die I/O-Anforderungen, die für die peripheren I/O-Einrichtungen vorgesehen sind. Die meisten I/O-Steuerungen können gleichzeitig mehrere I/O-Anforderungen von dem Host-Mikroprozessor handhaben. Die I/O-Steuerung verarbeitet mehrere Befehle auf niedriger Ebene, die zu jeder I/O-Anforderung gehören. Beispielsweise kann für I/O-Geräte, die an den Bus einer kleinen Computersystemschnittstelle (SCSI) angeschlossen sind, eine einzelne I/O-Anforderung Befehle für die Vermittlung des SCSI-Busses enthalten, Befehle, die I/O-Zieleinrichtung auszuwählen, Befehle um eine Datenübertragung anzufordern, Befehle, das I/O-Gerät von dem SCSI-Bus zu trennen und wieder mit diesem zu verbinden, sowie andere Befehle, um den SCSI-Bus-Zustand zu verändern.
  • In früheren Computersystemen hat die I/O-Steuerung sich über eine Hardwareunterbrechung an den Host-Mikroprozessor angepasst, nachdem ein I/O-Gerät eine I/O-Anforderung oder einen der Befehle auf niedriger Ebene abgeschlossen hatte. Der Interrupt bewirkt, dass der Host-Mikroprozessor feststellt, welche I/O-Anforderung abgeschlossen wurde und ob die I/O-Anforderung korrekt ausgeführt wurde. Der Host-Mikroprozessor muss andere Vorgänge aussetzen, um den Interrupt von der I/O-Steuerung zu bedienen. Außerdem erfährt der Host-Mikroprozessor, wenn er jeden Interrupt bedient, eine zusätzliche Belastung. Diese Zusatzlast wird bewirkt durch den Interrupt, während er in den Host-Prozessor ein- und wieder aus diesem austritt.
  • Wenn der Host-Mikroprozessor eine große Anzahl von I/O-Anforderungen absendet, d.h. wenn die I/O-Arbeitslast hoch ist, so empfängt der Host-Mikroprozessor eine entsprechend große Anzahl von Interrupts, was zu einer beträchtlichen Menge an Zusatzlast führt, die mit den Interrupts verknüpft ist. In einem Computersystem mit mehreren Benutzern oder paralleler Verarbeitung (Multitasking) senkt diese Zusatzlast die für die Verarbeitung anderer Anwendungen zur Verfügung stehende Host-Mikroprozessor-Zeit und die Ressourcen (z. B. die Leistung). Dies führt zu einer Verlangsamung bzw. einem Absenken der Leistungsfähigkeit des Systems. Da die existierenden Host-Mikroprozessoren so ausgelegt sind, dass sie schneller sind, wird das Verlang samen der Systemleistungsfähigkeit aufgrund der Bedienung von Interrupts durch den Host sogar noch deutlicher spürbar.
  • Im Verlaufe der Jahre hat sich zusätzlich zu den schnelleren Host-Mikroprozessoren auch die Geschwindigkeit der peripheren I/O-Geräte bei der Verarbeitung von I/O-Anforderungen verbessert. Diese höhere Geschwindigkeit hat die Frequenz von Interrupts des Host-Mikroprozessors für I/O-Abschlüsse noch gesteigert. Zusätzlich erfordern Programmanwendungen, die auf dem Host-Mikroprozessor laufen, mehr Verarbeitungsleistung. Es besteht also eine höhere Anforderung an die Verarbeitungsleistung, die gebraucht wird, um I/O-Anforderungen und -antworten zu erfüllen.
  • Zusammenfassung der Erfindung
  • Die vorliegende Erfindung bezieht sich auf einen Host-Adapter, der ein adaptives Verfahren zum Kombinieren von Abschlussberichten von I/O-Anforderungen verwendet und zum beträchtlichen Reduzieren der Anzahl von Interrupts eines Host-Mikroprozessors. Speziell erhöht der Adapter das Verhältnis von I/O-Abschlussberichten pro Sekunde (IOPS) zu Interrupts.
  • Durch Kombinieren erfolgreicher I/O-Abschlussberichte und Reduzieren der Anzahl von Interrupts reduziert der Hostadapter die Zusatzlast, die mit dem Bedienen von Interrupts für erfolgreich abgeschlossene I/O-Anforderungen auftritt. Dies reduziert die Menge an Verarbeitungszeit („I/O-gebundene" Zeit) und Leistungskapazität, die durch den Host-Mikroprozessor bei der Verarbeitung von Interrupts von dem Adapter aufgebracht wird, und erzeugt zusätzliche Zeit und Leistungskapazität für den Hostmikroprozessor für die Verarbeitung von Benutzeranwendungen. In einer Ausführungsform der vorliegenden Erfindung wird der Umfang an Zeit und/oder Ressourcen (z. B. Leistung), die durch den Host-Mikroprozessor für das Bedienen von Interrupts (CPU-Ausnutzung) verbraucht wird, um 20 % vermindert.
  • Ein Vorteil der vorliegenden Erfindung liegt darin, dass sie sich an die Belastung des Host-Mikroprozessors durch I/O-Anforderungen anpasst. Je stärker der Host-Mikroprozessor beschäftigt ist, desto mehr I/O-Abschlussberichte werden mit einem einzelnen Interrupt durch den Adapter geliefert. Insbesondere wird, je höher die Belastung durch I/O-Anforderungen ist, desto höher auch das Verhältnis der I/O-Abschlussberichte pro Sekunde (IOPS) zu Interrupts gemacht. z. B. können in einer Ausführungsform, wenn die Belastung relativ niedrig ist, beispielsweise nur etwa 5 bis 10 I/O-Anforderungen gleichzeitig erzeugt werden, 3 bis 5 I/O-Abschlussberichte mit einem einzigen Interrupt an den Host-Mikroprozessor berichtet werden. Wenn die Belastung relativ groß ist, z. B. 30 bis 60 I/O-Anforderungen gleichzeitig erzeugt werden, so können bis zu 30 I/O-Abschlussberichte mit einem einzigen Interrupt an den Host-Mikroprozessor berichtet werden. Dies stellt einen beträchtlichen Vorteil dar, da nämlich, je stärker der Mikroprozessor beschäftigt ist, desto weniger der Mikroprozessor sich die Zeit und Ressourcen für das Bedienen von Interrupts und die Zusatzbelastung, die mit Interrupts verbunden ist, leisten, kann.
  • Zusätzlich zu der Reduzierung der Anzahl von Interrupts für den Host liegt ein weiterer Vorteil des Adapters darin, dass er ausreichend Arbeit für die I/O-Geräte hält, indem er einen Zeitgeber startet, wenn ein I/O-Gerät keine weiteren I/O-Anforderungen für die Verarbeitung mehr hat, d.h. wenn ein I/O-Gerät in den Leerlauf gerät. Wenn der Zeitgeber abläuft, werden alle erfolgreich abgeschlossenen, jedoch noch nicht berichteten I/O-Anforderungen von allen I/O-Geräten dem Host-Mikroprozessor mit einem Interrupt gemeldet. Bei einigen Host-Anwendungen wartet der Host-Mikroprozessor darauf, dass I/O-Anforderungen abgeschlossen werden und darüber berichtet wird, bevor er weitere I/O-Anforderungen aussendet. Nach der Verarbeitung dieser abgeschlossenen I/O-Anforderungen kann der Host-Mikroprozessor neue I/O-Anforderungen an die I/O-Geräte schicken. Dies erhöht die Wahrscheinlichkeit, dass eine oder mehrere neue I/O-Anforderungen an das I/O-Gerät gesendet werden, welches sich im Leerlauf befindet. Im Ergebnis vermindert der Adapter die Latenzzeit und verbessert die Gesamtleistungsfähigkeit des Computersystems.
  • Aufgrund der adaptiven bzw. anpassungsfähigen Natur der vorliegenden Erfindung verbessert sie die Systemleistungsfähigkeit unabhängig von der I/O-Anforderungsbelastung (entweder hohe Belastung oder niedrige Belastung), der Art des Zugriffs (entweder der Reihe nach oder wahlfrei), der Art der Systemkonfiguration, der Anzahl von I/O-Geräten, der Art von I/O-Anforderungen und der Tatsache, ob die I/O-Anforderungen in einer Schlange angeordnet werden oder nicht.
  • Ein Aspekt der vorliegenden Erfindung bezieht sich auf ein Verfahren zum Verarbeiten abgefertigter I/O-Anforderungen in einem Computersystem, in welchem ein Host-Mikroprozessor eines Host-Computers I/O-Anforderungen an eine I/O-Steuerung absendet, um Übertragungen von Daten zwischen dem Host-Computer und einer Mehrzahl von peripheren I/O-Geräten auszulösen. Das Verfahren der Verarbeitung abgesandter I/O-Anforderungen weist auf: (a) das Verarbeiten der abgesandten I/O-Anforderungen durch Übertragen von Daten zwischen den peripheren I/O-Geräten und einem Speicher des Host-Computers, (b) gleichzeitig mit (a) das Feststellen, und zwar auf Basis zumindest einer Anzahl nicht berichteter, abgeschlossener I/O-Anforderungen und einer Anzahl von anhängigen I/O-Anforderungen, ob der Host-Mikroprozessor einen Interrupt erfahren soll, (c), wenn in dem Vorgang (b) festgestellt wird, dass der Host-Mikroprozessor einen Interrupt erfahren soll, unterbrechen (Interrupt) des Host-Mikroprozessors und Berichten der bis dahin noch nicht berichteten abgeschlossenen I/O-Anforderungen an den Host-Mikroprozessor und (d) das Variieren der Anzahl von nicht berichteten abgeschlossenen I/O-Anforderungen, die an den Host-Mikroprozessor in Vorgang (c) beichtet werden, entsprechend einer aktuellen Belastung der I/O-Steuerung.
  • In einer Ausführungsform weist der Vorgang (b) das Vergleichen der Anzahl nicht berichteter, abgeschlossener I/O-Anforderungen mit der Anzahl anhängiger I/O-Anforderungen auf. In einer Konfiguration weist das Verfahren das Unterbrechen (Interrupt) des Host-Mikroprozessors auf, wenn die Anzahl nicht berichteter, abgeschlossener I/O-Anforderungen größer oder gleich der Anzahl der anhängigen I/O-Anforderungen ist.
  • In einer Ausführungsform beruht der Vorgang (b) des Feststellens, ob der Host-Mikroprozessor einen Interrupt erfahren soll, weiterhin auf der Anzahl anhängiger I/O-Anforderungen, welche jedem peripheren I/O-Gerät entsprechen. In einer Konfiguration weist das Verfahren das Unterbrechen des Host-Mikroprozessors auf, wenn die Anzahl anhängiger I/O-Anforderungen für eines der peripheren I/O-Geräte null erreicht. In einer anderen Konfiguration weist das Verfahren das Unterbrechen des Host-Mikroprozessors auf, wenn die Anzahl anhängiger I/O-Anforderungen für eines der peripheren I/O-Geräte eine vorbestimmte, programmierbare Anzahl erreicht. In einer Konfiguration hat jedes periphere I/O-Geräte eine entsprechend programmierbare Anzahl anhängiger I/O-Anforderungen, welche ein Interrupt des Host-Mikroprozessors auslöst.
  • In einer Konfiguration weist der Vorgang des Unterbrechens des Host-Mikroprozessors, wenn die Anzahl anhängiger I/O-Anforderungen für ein peripheres I/O-Gerät null erreicht, das Warten für eine vorbestimmte Zeitdauer auf, bevor der Host-Mikroprozessor unterbrochen wird. Die vorbestimmte Zeitdauer wird so ausgewählt, dass sie die Wahrscheinlichkeit, dass eines oder mehrere andere periphere I/O-Geräte entsprechende anhängige I/O-Anforderungen abschließen, bevor der Host-Mikroprozessor unterbrochen wird, beträchtlich erhöht. In einer Konfiguration beträgt die vorbestimmte Zeitdauer zwischen etwa 5 Mikrosekunden und etwa 8 Millisekunden. In einer anderen Konfiguration beträgt die vorbestimmte Zeitdauer zwischen 25 Mikrosekunden und etwa 1.000 Mikrosekunden. In einer weiteren Konfiguration wird eine entsprechend vorbestimmte Zeitdauer für jedes periphere I/O-Gerät ausgewählt. In einer Konfiguration ist die vorbestimmte Zeitdauer programmierbar.
  • Ein weiterer Aspekt der vorliegenden Erfindung bezieht sich auf eine I/O-Steuerung in einem Computersystem, in welchem ein Host-Mikroprozessor eines Host-Computers Eingabe/Ausgabe (I/O)-Anforderungen an die I/O-Steuerung ausgibt, um Übertragungen von Daten zwischen dem Hostcomputer und einer Mehrzahl peripherer I/O-Geräte auszulösen, und in welchen die I/O-Steuerung den Host-Mikroprozessor unterbricht, um über abgeschlossene I/O-Anforderungen zu berichten. Die I/O-Steuerung weist auf: einen ersten Zähler, der so ausgestaltet ist, dass er eine Gesamtzahl verbleibender I/O-Anforderungen von dem Host-Mikroprozessor zählt, und einen zweiten Zähler, der so ausgelegt ist, dass er eine Gesamtzahl nicht berichteter I/O-Anforderungen zählt, die durch die I/O-Geräte abgeschlossen wurden. Die I/O-Steuerung vergleicht die Anzahl in dem ersten Zähler mit der Anzahl in dem zweiten Zähler. Die I/O-Steuerung unterbricht den Host-Mikroprozessor, wenn die Anzahl in dem zweiten Zähler größer ist als oder gleich ist wie die Anzahl in dem ersten Zähler und berichtet alle nicht berichteten I/O-Anforderungen, die durch die I/O-Geräte abgeschlossen worden sind.
  • In einer Ausführungsform weist die I/O-Steuerung weiterhin eine Mehrzahl von I/O-Gerätezählern auf, wobei jeder so ausgestaltet ist, dass er die Anzahl verbleibender I/O-Anforderungen für eines der I/O-Geräte zählt, und einen Zeitgeber mit einer vorbestimmten Zeitdauer. Der Zeitgeber wird so ausgelegt, dass er die Zeitmessung startet, wenn eines aus der Mehrzahl von I/O-Geräten ihre letzte I/O-Anforderung abgeschlossen hat, wenn der I/O-Gerätezähler einen Übergang von eins zu null macht. Wenn der Zeitgeber seine vorbestimmte Zeitdauer erreicht hat, unterbricht die I/O-Steuerung den Host-Mikroprozessor und berichtet alle nicht berichteten Anforderungen, die durch die I/O-Geräte abgeschlossen wurden. In einer Ausführungsform sind alle Zähler Variablen, die in einem Speicher mit wahlfreiem Zugriff (RAM), der zu der I/O-Steuerung gehört, gespeichert und aktualisiert werden.
  • In einer Ausführungsform weist der Vorgang des Bestimmens, ob der Host-Mikroprozessor unterbrochen werden soll, um die abgeschlossenen I/O-Anforderungen zu berichten, das Vergleichen der Anzahl nicht berichteter, abgeschlossener I/O-Anforderungen mit der Anzahl peripherer I/O-Geräte aus der Mehrzahl mit anhängigen I/O-Anforderungen auf. In einer Ausführungsform weist das Verfahren das Unterbrechen des Host-Mikroprozessors auf, wenn die Anzahl der nicht berichteten, abgeschlossenen I/O-Anforderungen größer ist als oder gleich ist wie die Anzahl der peripheren I/O-Geräte mit anhängigen I/O-Anforderungen.
  • Kurze Beschreibung der Figuren
  • 1 zeigt ein Computersystem, das ein Host-Rechnersystem, eine Anzahl peripherer I/O-Geräte und eine Host-Adapterplatine gemäß einer Ausführungsform der vorliegenden Erfindung aufweist.
  • 2A zeigt eine Konfiguration einer vollen Anforderungsschlange in dem Hostsystem nach 1.
  • 2B zeigt eine Konfiguration einer leeren Anforderungsschlange innerhalb des Hostsystems nach 1.
  • 3A veranschaulicht eine Konfiguration eines Befehlseingabetyps, der durch das Computersystem nach 1 verwendet wird.
  • 3B zeigt eine Konfiguration eines erweiterten Befehlseingabetyps, der durch das Computersystem nach 1 verwendet wird.
  • 3C veranschaulicht eine Konfiguration eines Eingabetyps für einen erfolgreichen/nicht erfolgreichen Zustand, der durch das Computersystem nach 1 verwendet wird.
  • 4 zeigt eine Konfiguration zweier Sätze von Mailbox-Registern und -Variablen, die in der Host-Adapterplatine nach 1 gespeichert werden.
  • 5 zeigt eine Ausführungsform eines Verfahrens, welches durch die Host-Adapterplatine nach 1 verwendet wird, um I/O-Anforderungsabschlussberichte zu kombinieren und die Anzahl von Interrupts des Host-Systems zu reduzieren.
  • 6A veranschaulicht eine Konfiguration eines Eingabetyps über einen erfolgreichen Zustand mit 16 Bit-Handhabungen, die durch das Computersystem nach 1 verwendet werden.
  • 6B zeigt eine Ausführungsform eines Eintragstyps für einen erfolgreichen Zustand mit 32 Bit-Handhabungen, die durch das Computersystem nach 1 verwendet werden.
  • 7 veranschaulicht eine weitere Ausführungsform eines Verfahrens, welches durch die Host-Adapterplatine nach 1 verwendet wird, um I/O-Anforderungsabschlussberichte zu kombinieren und die Anzahl von Interrupts des Host-Systems zu reduzieren.
  • 8 zeigt eine weitere Ausführungsform eines Verfahrens, welches durch die Host-Adapterplatine nach 1 verwendet wird, um I/O-Anforderungsabschlussberichte zu kombinieren und die Anzahl von Interrupts des Host-Systems zu reduzieren.
  • Genaue Beschreibung der bevorzugten Ausführungsform
  • Die vorliegende Erfindung bezieht sich auf einen Host-Adapter, der ein adaptives Verfahren verwendet, um Abschlussberichte von I/O-Anforderungen zu kombinieren und die Anzahl von Interrupts eines Host-Mikroprozessors beträchtlich zu reduzieren.
  • 1 zeigt ein Computersystem 10 gemäß einer Ausführungsform der vorliegenden Erfindung. Aufgrund der adaptiven Natur der vorliegenden Erfindung können alternative Ausführungsformen des Computersystems 10 Systemkonfigurationen haben, die sich von den in 1 dargestellten unterscheiden. Zusätzlich können alternative Ausführungsformen eine hohe oder niedrige Arbeitslast an I/O-Anforderungen, einen sequentiellen oder wahlfreien I/O-Zugriff, eine unterschiedliche Anzahl von I/O-Geräten und in Schlangen oder nicht in Schlangen angeordnete I/Os haben.
  • In 1 weist das Computersystem 10 ein Host-System 15, einen ersten Bus 35, eine Host-Adapterplatine 40, einen zweiten Bus 70 und eine Anzahl peripherer I/O-Geräte 80-86 auf. Fachleute auf diesem Gebiet erkennen, dass es verschiedene Namen und Konfigurationen für das Host-System 15, die Host-Adapterplatine 40, den ersten Bus 35 und den zweiten Bus 70 gibt. Beispielsweise kann das Host-System 15 auch eine zentrale Verarbeitungseinheit (CPU), ein Hauptmikroprozessor, ein Hauptprozessor, eine Hauptverarbeitungseinheit oder einfach ein Host genannt werden.
  • HOST-SYSTEM
  • In einer Ausführungsform weist das Host-System 15 nach 1 einen Host-Mikroprozessor 20 und einen Speicher 25 auf. Der Speicher 25 weist einen Softwaretreiber 30, einen Interrupt-Bearbeiter 32, eine Anforderungsschlange 26, eine Antwortschlange 27, eine in die Anforderungsschlange weisende Zeigervariable 50, eine aus der Anforderungsschlange weisende Zeigervariable 352, eine in die Antwortschlange weisende Zeigervariable 354 und eine aus der Antwortschlange weisende Zeigervariable 356 auf. Der Softwaretreiber und der Interrupt-Bearbeiter 32 werden durch den Host-Mikroprozessor 20 aus dem Speicher 25 ausgeführt. In einer Konfiguration weist der Softwaretreiber 30 eine Hauptanwendung, eine Dateisystemverwaltung, zumindest einen Gerätetreiber für die peripheren I/O-Geräte 80-86 und einen Host-Adaptertreiber (nicht dargestellt) auf.
  • Zumindest ein Teil des Speichers 25, wie z. B. die Anforderungsschlange 26 und die Antwortschlange 27 können in Form eines von dem Host-Mikroprozessor 20 und der Host-Adapterplatine 40 gemeinsam verwendeten Speichers vorliegen. Die Anforderungsschlange 26 und die Antwortschlange 27 speichern Befehls- und Zustandsinformationen, die sich auf I/O-Anforderungen und I/O-Antworten beziehen.
  • PCI-BUS UND SCSI-BUS
  • Die ersten und zweiten Busse 35, 70 können ein Systembus, ein I/O-Bus oder ein Netzwerkbus genannt werden. In einer Konfiguration ist der erste Bus 35 ein Verbindungsbus peripherer Komponenten (PCI-Bus). In einer Konfiguration ist der zweite Bus (70) ein Bus für eine Kleincomputerstandardschnittstelle (SCSI-Bus). Der zweite Bus 70 kann irgendeine Art von SCSI-Bus sein. Beispielsweise kann der SCSI-Bus in einer Konfiguration ein Bus mit einem einzelnen Anschluss sein, der bis zu 15 Ziele bzw. Bestimmungsorte unterstützt. Jedes Ziel kann eine bis 32 logische Einheiten (LUNs) unterstützen. Demnach kann ein SCSI-Bus mit einem einzelnen Anschluss von 15 bis 480 (15 × 32 = 480) periphere I/O-Geräte 80-86 unterstützen. In einer anderen Konfiguration kann der SCSI-Bus ein Bus mit zwei Anschlüssen sein, der bis zu 31 Zielobjekte unterstützt. In einer weiteren Konfiguration ist der zweite Bus 70 ein schneller, ultrabreiter SCSI-Bus. In einer weiteren Konfiguration ist der zweite Bus ein Faserkanal. In einer Konfiguration ist der Faserkanal so ausgestaltet, dass er ein SCSI-Befehlsformat oder ein SCSI-Paketformat verwendet oder diesem folgt. Der erste Bus 35 stellt die Kommunikation zwischen dem Host-System 15 und der Host-Adapterplatine 40 bereit. Der zweite Bus bietet eine Kombination zwischen der Host-Adapterplatine 40 und den I/O-Geräte 80-86.
  • HOST ADAPTER-PLATINE
  • Die Host-Adapterplatine 40 und/oder der Host-Adapter 45 können eine I/O-Steuerung, einen I/O-Steuerungsschaltkreis, ein I/O-Steuersystem, ein I/O-Prozessor, ein I/O-Unterprozessor, ein Kommunikationsadapter oder einfach ein Host-Adapter genannt werden. Die Host-Adapterplatine 40 kann so ausgestaltet sein, dass sie eine differentielle Adapterplatine, eine nur ein Ende aufweisende SCSI-Adapterplatine oder eine Faserkanaladapterplatine ist. In einer Ausführungsform weist die Host-Adapterplatine 40 einen Host-Adapter 45, einen Nur-Lese-Speicher ROM 60 und einen wahlfreien Speicher (RAM) 65 auf. In einer Konfiguration ist der ROM ein Flash-programmierbarer ROM (PROM), der einen startfähigen Code 61 speichert.
  • In einer Konfiguration weist der Host-Adapter 45 einen Mikroprozessor 50, Schnittstellenregister 52 und eine Maschine 55 zur Ausführung eines SCSI-Ausführungsprotokolls (SXP-Maschine) auf. In einer Konfiguration ist der Mikroprozessor 50 ein Computer mit einem reduzierten Befehlssatz (RISC).
  • Der RAM 65 speichert einen RISC-Code oder Firmware 62, die durch den Softwaretreiber 30 oder den startfähigen (Flash-)Code 61 beim Herauffahren in den RAM 65 heruntergeladen wird (d.h. initialisiert und geladen oder konfiguriert wird). Die Firmware 62 wird durch den Host-Adapter 45 ausgeführt, um I/O-Anforderungen und -Befehle von dem Host-Mikroprozessor 20 zu verarbeiten. Die SXP-Maschine 55 bearbeitet Befehle auf niedriger Ebene, die zu den I/O-Anforderungen gehören und ermöglicht es dem Mikroprozessor 50, andere Vorgänge auszuführen, wie z. B. die Verarbeitung anderer eingehender I/O-Anforderungen.
  • I/O-Geräte
  • Die peripheren I/O-Geräte 80-86 können Bandlaufwerke, Plattenlaufwerke, Videoplattenlaufwerke (VDD), digitale Videoplatten (DVD), redundante Arrays preiswerter/unabhängiger Platten (RAID), CD-ROMs, Scanner, Drucker etc. sein. Für Zwecke der Veranschaulichung sind sieben periphere I/O-Geräte 80-86 in 1 dargestellt. Das Computersystem 10 kann aber auch weniger oder mehr als sieben I/O-Geräte 80-86 aufweisen. Jede Anzahl und/oder Kombination von I/O-Geräten kann gemäß der vorliegenden Erfindung verwendet werden.
  • GENERELLE ARBEITSWEISE
  • Die generelle Verwendung und der Betrieb des Computersystems 10 werden unter Bezug auf 1 beschrieben. Der Host-Mikroprozessor 20 und/oder der Softwaretreiber 30 speichern I/O-Anforderungen, die für periphere I/O-Geräte 80-86 vorgesehen sind, in der Anforderungsschlange 26. Der Adapter 45 und/oder die Firmware 62 holen I/O-Anforderungen aus der Anforderungsschlange 26 über den PCI-Bus 35. In einer Konfiguration liest der Host-Adapter 45 die I/O-Anforderungen aus dem Host-Speicher 25 über einen direkten Speicherzugriff (DMA). Der Adapter 45 kann mehrfache I/O-Operationen und Datenübertragungen ohne Eingriff durch den Host-Mikroprozessor 20 verwalten.
  • Der Adapter 45 verarbeitet die I/O-Anforderungen und sendet Befehle über den SCSI-Bus 70 an die peripheren I/O-Geräte 80-86, um die angeforderten Daten zu holen oder zu speichern. Der Host-Adapter 45 sendet oder holt angeforderte Daten zu oder von dem Host-Speicher 25 über direkten Speicherzugriff (DMA). Gemäß einem unten beschriebenen adaptiven Verfahren erzeugt der Adapter 45 einen Interrupt für den Host-Mikroprozessor 20, wenn eine Anzahl oder ein Verhältnis von I/O-Anforderungen erreicht worden ist oder wenn eine gewisse Zeitdauer verstrichen ist, nachdem ein I/O-Gerät 80-86 keine weiteren Befehle zum Verarbeiten mehr hatte.
  • ANFORDERUNGS- UND ANTWORTSCHLANGEN
  • Die 2A-2B veranschaulichen Beispiele der Anforderungsschlange 26 innerhalb des Host-Speichers 25. Die Struktur der Antwortschlange 27 ist der Struktur der Anforderungsschlange 26, die in den 2A-2B dargestellt ist, im Wesentlichen ähnlich, mit Ausnahme der Tatsache, dass die Antwortschlange 27 dafür ausgelegt ist, die I/O-Statusblöcke (IOSBs) zu enthalten, während die Anforderungsschlange 26 dafür ausgelegt ist, I/O-Befehlsblöcke (IOCBs) zu enthalten. In einer Konfiguration sind die Anforderungsschlange 26 und die Antwortschlange 27 als umlaufende Listen fester Länge von 64 Byte in Form von First-In-First-Out (FIFO)-Einträgen organisiert. In einer Konfiguration gibt es 128 Einträge in jeder Schlange 26, 27. In anderen Ausführungsformen der vorliegenden Erfindung wird die Befehls- und Zustandsinformation in anderen Arten von Datenstrukturen (beispielsweise Stapeln) anstatt von kreisförmigen oder umlaufenden Schlangen gespeichert.
  • Jede Schlange 26, 27 hat einen hineinweisenden und einen hinausweisenden Zeiger, die als Indizes implementiert sind. Der Speicher 25 speichert einen Satz von einwärts und auswärts weisenden Zeigervariablen 350-356 (1), und die Firmware 62 der Host-Adapterplatine 40 verwendet einen Satz ihrer eigenen einwärts und auswärts weisenden Zeigervariablen 360-366 (4), die in dem RAM 65 gespeichert sind. Jede einwärts weisende und auswärts weisende Zeigervariable 350-356, die in dem Speicher 25 gespeichert ist (1), kann in eine Adresse umgewandelt werden, die zu der Adresse eines der 128 Einträge in einer der Schlangen 26, 27 gehört.
  • Der einwärts weisende Zeiger und der auswärts weisende Zeiger einer Schlange 26, 27 legen fest, ob die Schlange 26, 27 voll, leer oder teilweise gefüllt ist. Wenn der einwärts weisende Zeiger einer Schlange 26, 27 um eins (eine Position) geringer als der auswärts weisende Zeiger dieser Schlange 26, 27 ist (wobei ein Überrundungszustand einer umlaufenden Schlange zu berücksichtigen ist), so ist die Schlange 26, 27 voll. 2A veranschaulicht eine Konfiguration einer vollen Anforderungsschlange 26. Eine volle Schlange 26, 27 enthält einen Eintrag weniger als es der Gesamtlänge der Schlange 26, 27 entspricht. Wenn der einwärts weisende Zeiger 87 und der auswärts weisende Zeiger 88 gleich sind, so ist die Schlange 26, 27 leer. 2B veranschaulicht eine Konfiguration einer leeren Anforderungsschlange 26. Die Anzahl von leeren (verfügbaren) Schlangeneinträgen in einer bestimmten Schlange 26, 27 wird berechnet durch Subtrahieren des einwärts zeigenden Zeigers von dem auswärts zeigenden Zeiger (wobei ein Überrundungszustand zu berücksichtigen ist).
  • Die Anforderungsschlange 26 ist eine Schnittstelle zu dem Host-Adapter 45 (und/oder der Firmware 62), durch welchen der Host-Mikroprozessor 20 I/O-Anforderungen für den Transport von I/O-Befehlsblöcken (IOCBs), welche verschiedene Befehle und Daten aufweisen, weiterleitet. Die Einträge der Anforderungsschlange 26 werden nur durch den Host-Mikroprozessor 20 in einer Schlange angeordnet, der den einwärts weisenden Zeiger 87 der Anforderungsschlange steuert bzw. kontrolliert. Die Einträge der Anforderungsschlange 26 werden nur durch den Host-Adapter 45 (und/oder die Firmware 62) herausgenommen, welcher den auswärts weisenden Zeiger 88 der Anforderungsschlange steuert bzw. kontrolliert.
  • Die Antwortschlange 27 ist eine Schnittstelle zu dem Host-Mikroprozessor 20, durch welche der Host-Adapter 45 (und/oder die Firmware 62) I/O-Antworten für den Transport von I/O-Statusplatten (IOSB) weiterleitet, welche SCSI-Status- und sonstige Statusinformationen bezüglich der I/O-Anforderung aufweisen. Die Einträge der Antwortschlange 27 werden nur durch den Adapter 45 (und/oder die Firmware 62) aufgereiht, welcher den einwärts weisenden Zeiger der Antwortschlange (nicht dargestellt), steuert. Die Einträge der Antwortschlange 27 werden nur durch den Host-Mikroprozessor 20 aus der Schlange herausgenommen, welcher den auswärts weisenden Zeiger der Antwortschlange (nicht dargestellt), steuert.
  • EINTRAGSTYPEN-ANFORDERUNGSSCHLANGE
  • Jeder Eintrag in der Anforderungsschlange 26 kann einen IOCB halten. Ein IOCB enthält Befehle und Daten, die der Host-Adapterprozessor 50 aus dem Host-Speicher 25 holt und ausführt. Es kann verschiedene Typen von IOCBs geben. In einer Konfiguration hat die Anforderungsschlange 26 zumindest zwei IOCB-Eintragstypen: COMMAND und EXTENDED COMMAND (Befehl und erweiterter Befehl). 3A veranschaulicht eine Konfiguration eines Eintragstyps 100 COMMAND und 3B veranschaulicht eine Konfiguration eines Eintragstyps 120 EXTENDED COMMAND. Die Anforderungsschlange 26 kann auch andere Typen auweisen, wie z. B. CONTINUATION, MARKER und SCAM OPERATION (nicht dargestellt).
  • Der Eintragstyp 100 COMMAND (3A) fordert den Transport eines SCSI-Befehls an ein angegebenes I/O-Gerät 80-86 an. In 3A weist der Eintragstyp 100 COMMAND zumindest sieben Datenstrukturen auf: einen Eintragstyp 102, eine Handhabung 104, ein Ziel 106, Steuerflags 108, einen SCSI-Befehlsbeschreibungsblock (CDB) 118, eine oder mehrere Datensegmentadressen 110, 114 und eine oder mehrere Datensegmentlängen 112, 116.
  • In 3A identifiziert der Eintragstyp 102 den Eintrag als einen Eintragstyp 100 COMMAND, im Gegensatz zu irgendeinem anderen Eintragstyp, wie z. B. EXTENDED COMMAND. In einer Konfiguration ist die Nummer des Eintragstyps für einen COMMAND-Eintrag „01H". Die Handhabung 104 ist eine Kennung, die durch den Softwaretreiber 30 (1) als Teil eines Abschlussverarbeitungsvorgangs verwendet wird, um dem Mikroprozessor 20 zu melden, dass ein IOCB, der zu einer bestimmten Handhabung 104 gehört, abgeschlossen ist. In einer Konfiguration ist die Handhabe 16 Bit lang. In einer anderen Konfiguration ist die Handhabe 104 32 Bits lang. Das Ziel 106 kennzeichnet ein bestimmtes Ziel- oder I/O-Gerät 80-86, das den I/O-Befehl empfängt. In einer Konfiguration ist das Ziel 106 eine SCSI-ID einer Brückensteuerung (nicht dargestellt), oder ein I/O-Gerät 80-86.
  • Die Steuerflags 108 geben der Firmware 62 Weisung, wie der COMMAND-Eintrag 100 ausgeführt werden soll. Der SCSI-CDB 118 enthält CDB-Bytes, die während einer COMMAND-Phase an das Ziel- oder das I/O-Gerät 80-86 gesendet werden. Die Datensegmentadresse(n) 110, 114 ist eine Startadresse eines Datensegmentes, die in dem Speicher 25 gespeichert wird, der zu einer bestimmten Lese- oder Schreib-I/O-Adresse gehört. Das Datensegment 112, 116 gibt die Anzahl von Datenbytes an, die zu oder von der Datensegmentadresse übertragen werden sollen, die in dem Speicher 25 gespeichert sind und zu der betreffende Lese- oder Schreib-I/O-Anforderung gehört.
  • Der Eintragstyp 120 EXTENDED COMMAND gibt einen SCSI-Befehl an ein angegebenes I/O-Gerät 80-86 aus. In einer Konfiguration enthält der Eintragstyp 120 EXTENDED COMMAND einen Eintragstyp 122, eine Handhabe 124, ein Ziel 126, Steuerflags 128 und ein SCSI-CDB 130, ebenso wie der Eintragstyp 100. In einer Konfiguration ist die Nummer des Eintragstyps für einen Eintrag EXTENDED COMMAND „05H".
  • EINTRAGSTYPEN-ANTWORTSCHLANGE
  • Jeder Eintrag in der Antwortschlange 27 kann einen IOSB erhalten. Ein IOSB enthält Statusinformationen, welche den Host-Mikroprozessor 20 informiert, dass eine I/O-Anforderung abgeschlossen ist und ob die I/O-Anforderung erfolgreich war oder nicht. Es kann unterschiedliche Typen von IOSBs geben. In einer Konfiguration hat die Antwortschlange 27 zumindest 3 IOSB-Eintragstypen: STATUS, SUCCESSFUL STATUS mit 16 Bit Handhabung und SUCCESSFUL STATUS mit 32 Bit Handhabung. 3C veranschaulicht eine Konfiguration eines Eintragstyps 140 STATUS. 6A zeigt eine Konfiguration eines Eintragstyps 370 SUCCESSFUL STATUS mit 16 Bit-Handhabungen. 6B zeigt einen Eintragstyp 380 SUCCESSFUL STATUS mit 32 Bit-Handhabungen. Die Antwortschlange 27 kann andere Eintragstypen, wie z. B. EXTENDED STATUS („erweiterter Status") – (nicht dargestellt), haben.
  • Der Eintragstyp 140 STATUS (3C) meldet den Abschluss eines Eintrages 100 COMMAND oder eines Eintrages 120 EXTENDED COMMAND und meldet auch, ob die I/O-Anforderung erfolgreich war oder nicht. Die Eintragstypen 370, 380 SUCCESSFUL STATUS melden die Handhabungen von mehrfachen IOCBs, welche erfolgreich waren. Jeder Eintrag 100 COMMAND kann zu einem entsprechenden Status-Eintrag 140 oder einem Eintrag 370, 380 SUCCESSFUL STATUS in der Antwortschlange 27 führen, um den Host-Mikroprozessor 20 von dem Abschluss des Befehls zu unterrichten. Die Handhabung 104 eines Eintrags 100 COMMAND oder eines Eintrags 120 EXTENDED COMMAND wird in einem entsprechenden Eintrag 140 STATUS oder 370, 380 SUCCESSFUL STATUS in der Antwortschlange 27 unverändert zurückgeliefert.
  • In 3C enthält der Eintragstyp 140 STATUS einen Eintragstyp 142 und eine Handhabe 144, ebenso wie der Eintragstyp 100 COMMAND. In einer Konfiguration ist die Nummer des Eintragstyps für einen Statuseintrag 140 „03H". Der Status-Eintragstyp 140 enthält weiterhin zwei weitere Datenstrukturen: ein Abschlussstatusfeld 146 und ein Anforderungsdatenfeld 152. Das Abschlussstatusfeld 146 meldet, ob ein Transportfehler aufgetreten ist und gibt eine Beschreibung des Fehlers, falls einer aufgetreten ist. Das Anforderungsdatenfeld 152 enthält jegliche Daten, die durch den Host-Mikroprozessor von einem bestimmten I/O-Gerät 80-86 angefordert wurden.
  • In 6A enthält der Eintragstyp 370 SUCCESSFUL STATUS einen Eintragstyp 372 und eine Handhabungszahl 374 und eine Anzahl von 16 Bit-Handhabungen, welche bestimmten IOCBs entsprechen, die erfolgreich abgeschlossen wurden. In einer Konfiguration ist die Nummer des Eintragstyps für einen Eintrag 370 SUCCESSFUL STATUS mit 16 Bit-Handhabungen „22H". In 6B enthält der Eintragstyp von 80 SUCCESSFUL STATUS einen Eintragstyp 382, eine Handhabungszahl 384 und eine Anzahl von 32 Bit-Handhabungen, welche den betreffenden IOCBs entsprechen, die erfolgreich abgeschlossen wurden. In einer Konfiguration ist die Nummer des Eintragstyps für einen Eintrag 380 SUCCESSFUL STATUS mit 32 Bit-Handhabungen „21H". In einer Konfiguration ist die Reihenfolge der Handhabungen in den Eintragstypen 370, 380 SUCCESSFUL STATUS dieselbe wie dann, wenn jeder IOCB erfolgreich abgeschlossen wurde.
  • Die in den 3A-3C und 6A-6B dargestellten Eintragstypen werden gemäß einer Ausführungsform des Computersystems 10 verwendet. Andere Ausführungsformen des Computersystems 10 können unterschiedliche Eintragstypen als die hier beschriebenen (COMMAND 100, EXTENDED COMMAND 120, STATUS 140, SUCCESSFUL STATUS 370, 380) sein, oder sie können dieselben Eintragstypen mit anderen Datenstrukturen sein.
  • MAILBOXES
  • 4 veranschaulicht eine Konfiguration zweier Sätze (160, 165) interner Mailboxregister 180-187, 190-197 mit Schnittstellenregistern 52 nach 1. Der Adapter 45 weist weiterhin einen Zeitgeber 245 auf, wie er in 4 dargestellt ist. In einer Ausgestaltung weisen die Schnittstellenregister 250 weiterhin ein Host-Befehls- und Steuerregister 170 und ein PCI-Steuerregister 175 auf.
  • 4 veranschaulicht auch einen Satz von Variablen, die in dem RAM 65 der Hostadapterplatine 40 gespeichert und durch den RISC-Code oder Firmware 62 verwendet werden. Diese Variablen umfassen TOTAL_REMAIN 220, TOTAL_COMPLETE 225, DEV_1_COUNT 230, DEV_2_COUNT 231, DEV_3_COUNT 232 etc. Nur drei DEV_n_COUNT-Variablen 230, 231, 232 sind für Zwecke der Veranschaulichung in 4 dargestellt worden, jedoch gibt es in einer bevorzugten Konfiguration zumindest eine DEV_n_COUNT-Variable für jedes periphere I/O-Gerät 80-86. In einer anderen Ausführungsform sind die Variablen TOTAL_REMAIN, TOTAL_COMPLETE, DEV_1_COUNT, DEV_2_COUNT, DEV_3_COUNT etc. Register unter den Schnittstellenregistern 52 in dem Adapter 45.
  • In einer Konfiguration sind die Mailboxregister 180-187, 190-197 physikalische Hardwareregister, auf welche der Host-Mikroprozessor 20 und der Adapterprozessor 50 zugreifen können. In einer Konfiguration ist jedes Mailboxregister 180-187, 190-197 16 Bit lang. Der erste Satz 160 von Mailboxregistern 180-187 weist eingehende Mailboxregister auf, in welche der Host-Mikroprozessor 20 schreiben kann und welche durch die Adapter-Firmware 62 lesbar sind (1). Die eingehenden Mailboxregister 180-187 werden verwendet, um Informationen von dem Host-Mikroprozessor 20 zu dem Adapterprozessor 50 und/oder zu der Firmware 62 zu übertragen.
  • Der zweite Satz 165 von Mailboxregistern 190-197 besteht aus ausgehenden Mailboxregistern, in welche durch die Adapter-Firmware 62 geschrieben werden kann und welche durch den Host-Mikroprozessor 20 lesbar sind. Die Ausgangsmailboxregister 190-197 werden verwendet, um Status- bzw. Zustandsinformationen von dem Adapterprozessor 50 und/oder der Firmware 62 an den Hostmikroprozessor 20 zu übertragen.
  • In beiden Mailboxregistersätzen 160, 165 nach 4 enthält das Register 4 Zeiger, die zu der Anforderungsschlange 26 gehören und das Register 5 enthält Zeiger, die zu der Antwortschlange 27 gehören. Das Register 4 des Eingangsmailboxregistersatzes 160 enthält den Eingangszeiger 87 für die Anforderungsschlange 26 (1-2B), in welchen der Host-Mikroprozessor 20 schreiben kann, welcher durch den Adapterprozessor 50 (oder die Firmware 62) lesbar ist. Das Register 5 des Ausgangsmailboxregistersatzes 165 enthält den Ausgangszeiger 88 für die Anforderungsschlange 26, in welche der Adapterprozessor 50 (oder die Firmware 62) beschreiben kann, und welcher durch den Host-Mikroprozessor 20 gelesen werden kann.
  • Das Register 4 des Eingangsmailboxregistersatzes 160 enthält den Ausgangszeiger der Antwortschlange 27 (1), in welchem der Host-Mikroprozessor 20 schreiben kann und welcher durch den Adapterprozessor 50 (oder die Firmware 62) gelesen werden kann. Das Register 5 für den Ausgangsmailboxregistersatz 165 enthält den Eingangszeiger der Antwortschlange 27, in welchem der Adapterprozessor 50 (oder die Firmware 62) schreiben kann und welcher durch den Host-Mikroprozessor 20 lesbar ist.
  • In 4 können die Register 0-3, 6-7 des Eingangsmailboxregistersatzes 160 Befehlsinformationen von dem Host-Mikroprozessor an den Adapeterprozessor 50 (oder die Firmware 62) enthalten. Die Register 1-3, 6-7 des Ausgangsmailboxregistersatzes sind so ausgestaltet, dass sie I/O-Statusinformationen von der Adapterfirmware 62 an den Hostmikroprozessor 20 enthalten.
  • In einer Ausgestaltung können die Register 1-3, 6-7 des Ausgangsmailboxregistersatzes 165 eine oder mehrere Handhabungen von STATUS-Einträgen 140 (3C) in der Antwortschlange 27 (1) enthalten, oder Handhabungen von erfolgreich abgeschlossenen COMMAND-Einträgen 100 (3A) oder EXTENDED COMMAND-Einträgen 120 (3B) in der Anforderungsschlange 26 (2A-2B) des Host-Speichers 25. In einer Konfiguration wird die Reihenfolge der Handhabungen in den Registern 1-3, 6-7 des Ausgangsmailboxregistersatzes 165 durch den Zeitpunkt festgelegt, wann jeder IOCB erfolgreich abgeschlossen ist.
  • In einer bevorzugten Ausführungsform erhält das Register 0 des Ausgangsmailboxregistersatzes 165 einen eindeutigen Code, welcher den Host-Mikroprozessor 20 über ein Ereignis informiert, das zu einem Interrupt gehört, der durch die Adapter-Firmware 62 an den Host-Mikroprozessor 20 gesendet wurde. In einer Konfiguration ist das Mailboxregister 0 des Ausgangsmailboxregistersatzes 165 dafür reserviert, anzuzeigen, welcher Informationstyp sich in den fünf verfügbaren Mailboxausgangsregistern 1-3, 6-7 befindet. In einer bevorzugten Ausgestaltung informiert die Mailbox 0 des Ausgangsmailboxregistersatzes 165 den Host-Mikroprozessor 20 über die Anzahl von Ausgangsmailboxregistern 1-3, 6-7, welche aktuell Handhabungen von IOSBs in der Antwortschlange 27 enthalten (oder erfolgreich abgeschlossene IOCBs in der Anforderungsschlange 26) und die Größe der IOSB (oder IOCB-)Handhabungen, beispielsweise 16 Bit oder 32 Bit.
  • Beispielsweise kann die Mailbox 0 in einer Ausgestaltung eine Nummer „802x" oder „803x", enthalten, so dass „803x" bedeutet, dass eine Anzahl x von 16 Bit IOSBs oder erfolgreich abgeschlossenen IOCB-Handhabungen in den verfügbaren Ausgangsmailboxregistern 1-3, 6-7 vorhanden ist. „802x" bedeutet, dass es eine Anzahl x von 32 Bit IOSB oder erfolgreich abgeschlossenen IOCB-Handhabungen in den verfügbaren Ausgangsmailboxregistern 1-2, 6-7 gibt. Die Mailbox 0 des Ausgangsmailboxregistersatzes 165 kann also Informationen enthalten, welche bis zu fünf 16 Bit-Handhabungen oder bis zu zwei 32 Bit-Handhabungen in den fünf verfügbaren Ausgangsmailboxregistern 1-3 und 6-7 beschreibt.
  • BETRIEB DER MAILBOXES UND DER ANFORDERUNGS- UND ANTWORTSCHLANGE
  • Die Verwendung und die Arbeitsweise der Anforderungs- und Antwortschlangen 26, 27 und der Mailboxregister 180-187, 190-197 wird unter Bezug auf die 1-4 beschrieben. Der Host-Mikroprozessor 20 lädt einen oder mehrere IOCBs (Eintragstypen 100, 120 COMMAND oder EXTENDED COMMAND nach den 3A-3B) in die als nächste verfügbaren Einträge der Anforderungsschlange 26 (2A-2B), beginnend mit dem ersten verfügbaren Eintrag, der durch die Eingangszeigervariable 350 der Anforderungsschlange angegeben wird (1). Der Host-Mikroprozessor 20 setzt die Eingangszeigervariable 350 der Anforderungsschlange um die Anzahl der neuen Einträge, die in die Anforderungsschlange 26 geladen wurden, herauf. Die heraufgesetzte Eingangszeigervariable 350 der Anforderungsschlange wird zur Adresse des nächsten verfügbaren Eintrages in der Anforderungsschlange 26.
  • Der Host-Mikroprozessor 20 schreibt dann den neuen Wert der heraufgesetzten Eingangszeigervariable 350 der Anforderungsschlange in das Mailboxregister 4 184 des Eingangsmailboxregistersatzes 160 (4). Die Firmware 62 der Host-Adapterplatine 40 (1) fragt das Mailboxregister 4 des Eingangsmailboxregistersatzes 160 ab und vergleicht den Wert in dem Mailboxregister 4 mit der Zeigereingangsvariablen 360 der Anforderungsschlange, der in dem RAM 65 gespeichert ist. Wenn der Wert in dem Mailboxregister 4 des Eingangsmailboxregistersatzes 160 von dem der internen Eingangszeigervariablen 360 der Anforderungsschlange, welche in dem Speicher 65 gespeichert ist, verschieden ist, so bestätigt die Firmware 62, dass der Host-Mikroprozessor 20 einen oder mehrere neue Einträge der Anforderungsschlange 26 hinzugefügt hat. Die Firmware 62 verändert die Zeigereingangsvariable 360 der Anforderungsschlange, die in RAM 65 gespeichert ist, so dass sie gleich den neuen in dem Mailboxregister 4 des Eingangsmailboxregistersatzes 160 gespeicherten Wert ist.
  • Wenn die Host-Adapter-Firmware 62 bereit ist, in der Anforderungsschlange 26 einen oder mehrere IOCBs zu verarbeiten, holt die Host-Adapter-Firmware 62 die IOCBs aus der Anforderungsschlange 26 (und/oder speichert diese zeitweise), beginnen mit dem Eintrag, der durch die Ausgangszeigervariable 362 der Anforderungsschlange, welche in dem Speicher 65 gespeichert ist, bezeichnet wird (4). Die Firmware 62 setzt dann die Ausgangszeigervariable 362 der Anforderungsschlange um die Anzahl der geholten IOCBs herauf. Die Firmware 62 schreibt die heraufgesetzte Ausgangszeigervariable 362 der Anforderungsschlange in das Mailboxregister 4 194 des Ausgangsmailboxregistersatzes 165. Der Host-Mikroprozessor 20 kann das Mailboxregister 4 des Ausgangsmailboxregistersatzes 165 lesen, um die Position des Ausgangszeigers 88 der Anforderungsschlange 26 zu bestimmen.
  • Der Hostadapter 45 verarbeitet die IOCB(s) aus der Antwortschlange 26, indem er auf den zweiten Bus 70 zugreift und die angeforderte Information in die peripheren I/O-Geräte 80-86 schreibt oder aus diesen holt. In einer bevorzugten Ausführungsform beginnt der Host-Adapter 45 während einer I/O-Leseanforderung, die geholten Daten aus dem angegebenen I/O-Gerät 80-86 direkt an Speicherpositionen in dem Speicher 25 zu übertragen (1), welche durch die Datensequenzadressen 110, 114 eines COMMAND-Eintrags (3A, 3B) bezeichnet sind.
  • BERICHTEN VON I/O-ABSCHLÜSSEN
  • Wenn die Information über den Abschluss eines I/O-Befehls für die Verarbeitung bereit ist (innerhalb des Ausgangsmailboxregistersatzes 165 oder der Antwortschlange 27) und wenn die geholten Daten für die Verarbeitung bereit sind (in dem Speicher 25), so meldet der Host-Adapter 45 dies dem Host-Mikroprozessor 20. Es gibt drei Verfahren für den Adapter 45 über abgeschlossene I/O-Anforderungen zu berichten: (1) durch Anordnen der Handhabungen erfolgreich abgeschlossener IOCBs in den Ausgangsmailboxregistern 1-3, 6-7, 191-193, 196-197 (4), (2) durch Erzeugen von STATUS-Eintragstypen 140 (3C) und Übertragen derselben an die Antwortschlange 27 und/oder Anordnen der Handhabungen der STATUS-Einträge 140 in den Ausgangsmailboxregistern 1-3, 6-7, 191-193, 196-197 oder (3) durch Erzeugen von SUCCESSFUL STATUS-Eintragstypen 370, 380 und Übertragen derselben in die Antwortschlange 27 (1).
  • Jedes der drei Verfahren, welche im Folgenden beschrieben werden, ist in der Lage, mit einem einzelnen Interrupt für den Mikroprozessor 20 und das Interrupt-Handhabungsprogramm 32 (1) mehrere I/O-Abschlüsse an den Host-Mikroprozessor 20 zu melden. Das Verfahren zum Melden mehrerer abgeschlossener I/O-Anforderungen an den Hostmikroprozessor 20 mit einem einzelnen Interrupt wird „schnelle Bekanntmachung" genannt. Die schnelle Bekanntmachung oder Bekanntmachung kann sich auch auf das Anordnen einer oder mehrerer Handhabungen erfolgreich abgeschlossener IOCBs in den Ausgangsmeldungsregistern 1-3, 6-7, 191-193, 196-197 (4) beziehen, ohne Eintragstypen 140, 370, 380 STATUS oder SUCCESSFUL STATUS zu erzeugen und zu übertragen.
  • Ein erstes Verfahren zum Melden von I/O-Abschlüssen an den Host-Mikroprozessor 20 besteht für die Adapter-Firmware 62 darin, die Handhabungen erfolgreich abgeschlossener IOCBs in den Ausgangsmailboxregistern 1-3, 6-7, 191-193, 196-197 (4) anzuordnen. Wenn die abgeschlossenen I/O-Anforderungen irgendwelche Lesevorgänge enthalten haben, so kann der Host-Mikroprozessor 20 dann die Daten verarbeiten, die aus den I/O-Geräten 80-86 geholt und in dem Speicher 25 gespeichert wurden. Der Host-Mikroprozessor 20 kann die Mailbox 0 aus dem ausgehenden Mailboxregistersatz 165 lesen, um die Anzahl der Ausgangsmailboxregister 1-3, 6-7 festzustellen, welche Handhabungen von erfolgreich abgeschlossenen IOCBs die Größe der IOCB-Handhabungen, beispielsweise 16 Bit oder 32 Bit, enthalten.
  • Ein zweites Verfahren zum Melden von I/O-Abschlüssen an den Host-Mikroprozessor 20 besteht für die Adapter-Firmware 62 darin, Statuseintragstypen 140 (3C) in dem RAM 65 zu erzeugen und die STATUS-Eintragstypen 140 über einen direkten Speicherzugriff (DMA) an die Antwortschlange 27 zu übertragen. Insbesondere überträgt die Firmware 62 die STATUS-Eintragstypen 140 in einen oder mehrere verfügbare Einträge in der Antwortschlange 27 (1), beginnend mit einem Eintrag, der durch die Eingangszeigervariable 364 der Antwortschlange gekennzeichnet ist, welche in dem RAM 65 gespeichert ist. Die STATUS-Eintragstypen 140 ermöglichen es der Firmware 62, über erfolgreiche ebenso wie über nicht erfolgreiche, abgeschlossene I/O-Anforderungen zu berichten.
  • Nach dem Übertragen eines oder mehrerer Eintragstypen 140 STATUS, setzt die Firmware 62 die Eingangszeigervariable 364 der Antwortschlange um die Anzahl der Eintragstypen 140 STATUS herauf, welche an die Antwortschlange 27 übertragen wurden. Die Firmware 62 schreibt dann den Wert der heraufgesetzten Eingangszeigervariablen 364 der Antwortschlange in das Mailboxregister 5 195 des Ausgangsmailboxregistersatzes 165 für das Lesen durch den Host-Mikroprozessor 20. In einer Ausgestaltung ordnet die Firmware 62 auch die Handhabung 144 der STATUS-Eintragstypen 140 in den verfügbaren Ausgangsmailboxregistern 1-3, 6-7, 191-193, 196-197 (4) für das Lesen durch den Host-Mikroprozessor 20 an.
  • Eine dritte Methode zum Melden von I/O-Abschlüssen an den Host-Mikroprozessor 20 besteht für die Adapter-Firmware 62 darin, Eintragstypen 370, 380 SUCCESSFUL STATUS in dem RAM 65 zu erzeugen und diese (370, 380) an die Antwortschlange 27 (1) über einen DMA zu übertragen. Wie oben beschrieben, kann jeder Eintragstyp 370, 380 SUCCESSFUL STATUS (6A und 6B) Handhabungen für mehrere erfolgreich abgeschlossene I/O-Anforderungen enthalten. Die Firmware 62 setzt dann die Eingangszeigervariable 364 der Antwortschlange um die Anzahl der Eintragstypen 370, 380 SUCCESSFUL STATUS herauf, die an die Antwortschlange 27 übertragen wurden. Die Firmware 62 schreibt dann den Wert der heraufgesetzten Eingangszeigervariablen 364 der Antwortschlange in das Mailboxregister 5 195 des Ausgangsmailboxregistersatzes 165 für das Lesen durch den Host-Mikroprozessor 20.
  • In einer Konfiguration ist es schneller, die Handhabungen erfolgreich abgeschlossener IOCBs über den Ausgangsmailboxregistersatz 165 zu melden anstatt Eintragstypen 140, 370, 380 STATUS oder SUCCESSFUL zu erzeugen und diese Eintragstypen 140, 370, 380 an die Antwortschlange 27 zu übertragen. Anderseits kann die Anzahl von erfolgreichen I/O- Anforderungen, welche über die Ausgangsmailboxregister 1-3, 6-7 berichtet werden, auf die Anzahl der verfügbaren Register 1-3, 6-7 begrenzt sein, die in der in 4 dargestellten Konfiguration 5 beträgt.
  • Außerdem liefert das Berichten erfolgreicher IOCBs über die Ausgangsmailboxregister 1-3, 6-7 dem Host-Mikroprozessor 20 keine Informationen darüber, welche I/O-Anforderungen nicht erfolgreich waren. In einer bevorzugten Ausführungsform geht jedoch der Host-Mikroprozessor 20 und/oder der Softwaretreiber 30 davon aus, dass eine I/O-Anforderung nicht erfolgreich war, wenn der Host-Adapter 45 nicht innerhalb einer vorbestimmten Zeitdauer einen erfolgreichen I/O-Abschluss liefert. Der Softwaretreiber 30 kann dann mit einem Fehlerreparaturvorgang beginnen oder die I/O-Anforderung erneut senden.
  • In einer bevorzugten Ausführungsform kann der Host-Adapter 45 entweder die Antwortschlange 27 oder die Ausgangsmailboxregister 1-3, 6-7, 191-193, 196-197 verwenden, um abgeschlossene I/O-Anforderungen zu berichten, je nach der Anzahl (mehr als oder gleich 5) und dem Zustand (erfolgreich/nicht erfolgreich) der abgeschlossenen I/O-Anforderungen.
  • INTERRUPT
  • Es gibt zwei Verfahren bzw. Methoden, mit welchen der Host-Adapter 45 oder die Firmware 62 dem Host-Mikroprozessor 20 oder dem Interrupt-Handhabungsprogramm 32 melden können, dass I/O-Anforderungen abgeschlossen worden sind. In einer bevorzugten Ausführungsform macht der Host-Adapter 45 den Host-Mikroprozessor 20 aufmerksam durch Erzeugen eines Hardware-Interrupts und Berichten der abgeschlossenen I/O-Anforderungen. Alternativ kann der Host-Mikroprozessor 20 ein Bit in einem Statusregister (nicht dargestellt), welches zu dem ersten Bus 35 gehört, abfragen. Das Verfahren des Erzeugens eines Interrupts an dem Host-Mikroprozessor 20 wird nachstehend beschrieben.
  • In einer Konfiguration liest der Host-Mikroprozessor 20, wenn er einen Interrupt erhält, das Register 0 des Ausgangsmailboxregistersatzes 165, um festzustellen, welche der drei zuvor erwähnten Methoden der Meldung von I/O-Abschlüssen durch die Adapter-Firmware 62 verwendet wird. Ein eindeutiger Code oder eine Sequenz, welche in der Lage ist, in dem Mailboxregister 0 190 gespeichert zu werden, wird verwendet, um jeweils eine der drei zuvor erwähnten Methoden zu kennzeichnen.
  • Wenn die Firmware 62 die erste Methode verwendet, informiert das Register 0 des Ausgangsmailboxregistersatzes 165 (4) den Host-Mikroprozessor 20 darüber, wie viele erfolgreich abgeschlossene IOCB-Handhabungen sich in den Mailboxregistern 1-3, 6-7 des Ausgangsmailboxregistersatzes 165 befinden. Der Host-Mikroprozessor 20 liest dann die Mailboxregister 1-3, 6-7 des Ausgangsmailboxregistersatzes 165, um festzustellen, welche IOCBs erfolgreich abgeschlossen wurden.
  • Wenn die Firmware 62 die zweite oder dritte Methode verwenden, so liest der Host-Mikroprozessor 20 das Mailboxregister 5 des Ausgangsmailboxregistersatzes 165 (4), um den Eingangszeiger der Antwortschlange zu bestimmen. Der Host-Mikroprozessor 20 schreibt den in dem Ausgangsmailboxregister 5 gefundenen Wert in die Eingangszeigervariable 356 der Antwortschlange, welche in dem Speicher 25 gespeichert ist (1). Der Host-Mikroprozessor 20 liest dann die IOSB-Einträge in der Antwortschlange 27 (1), beginnend mit der Ausgangszeigervariablen 56 der Antwortschlange, die in dem Speicher 25 gespeichert ist, bis zu dem Eingangszeigerwert der Antwortschlange in dem Mailboxregister 5 des Ausgangsmailboxregistersatzes 165. Der Host-Mikroprozessor 20 verarbeitet die IOSB(s) in der Antwortschlange 27, setzt die Ausgangszeigervariable 356 der Ausgangsschlange um die Anzahl der verarbeiteten IOSBs herauf und schreibt den Wert der heraufgesetzten Ausgangszeigervariablen 356 der Antwortschlange in das Mailboxregister 5 185 des Eingangsmailboxregistersatzes 160 (4).
  • EINE AUSFÜHRUNGSFORM DES ADAPTIVEN ALGORITHMUS
  • In 4 werden die Variablen TOTAL_REMAIN 220, TOTAL_COMPLETE 225, DEV_1_COUNT 230, DEV_2_COUNT 231, DEV_3_COUNT 232 etc. bestimmt und durch die Firmware 62 aktualisiert. DEV_1_COUNT 230, DEV_2_COUNT 231 und DEV_3_COUNT 232 sind Zahlvariable für das I/O-Gerät 1 80 (1) bzw. das I/O-Gerät 2 81 bzw. I/O-Gerät 3 82. Es gibt zumindest eine Zahl- bzw. Zählervariable (nicht dargestellt) für jedes I/O-Gerät 80-86. Wenn es beispielsweise 15 I/O-Geräte gibt, so gibt es zumindest 15 Zählervariablen.
  • Die Variable 220 TOTAL_REMAIN zählt die Anzahl der gesamten I/O-Anforderungen, die durch die I/O-Geräte 80-86 noch nicht verarbeitet worden sind. Die Variable 225 TOTAL_COMPLETE zählt die Anzahl der gesamten I/O-Anforderungen, welche durch die I/O_Geräte 80-86 abgeschlossen worden sind, jedoch noch nicht an den Host-Mikroprozessor 20 gemeldet worden sind.
  • Die Variable 230 DEV_1_COUNT zählt die Anzahl der verbleibenden I/O-Anforderungen, welche empfangen, jedoch noch nicht durch das erste I/O-Gerät 80 abgeschlossen wurden. Die DEV_2_COUNT- und DEV_3_COUNT-Variablen 231, 232 geben die Anzahl der verbleibenden I/O-Anforderungen an, die durch die zweiten bzw. dritten I/O-Geräte 81 bzw. 82 empfangen, jedoch noch nicht abgeschlossen wurden. Entsprechende DEV_n_COUNT-Variablen geben die Anzahl der übrigen I/O-Anforderungen an, die jeweils durch die 4. bis 7. I/O-Geräte 83-86 empfangen, jedoch noch nicht abgeschlossen wurden.
  • 5 veranschaulicht eine Ausführungsform eines Verfahrens, welches durch die Host-Adapterplatine 40 verwendet wird, um die Abschlussberichte über I/O-Anforderungen zu kombinieren und die Anzahl von Interrupts für den Host-Mikroprozessor 20 zu reduzieren. In einer Ausgestaltung ist das Verfahren nach 5 Teil des RISC-Codes oder der Firmware 62.
  • Die Verwendung und die Arbeitsweise des Verfahrens nach 5 wird unter Bezug auf die 1 und 4 beschrieben. In 5 initialisiert in einem Start-/Fortsetzungsblock der Softwaretreiber 30 des Host-Systems 15 (1) den Adapterprozessor 50 und lädt den RISC- Code oder die Firmware 62. Nach der Initialisierung ist der Adapter 45 bereit für die Verarbeitung eingehender I/O-Anforderungen von dem Host-Mikroprozessor 20.
  • In einem Prozessblock 305 setzt die Firmware 62 (1) die Variable 220 TOTAL_REMAIN für jede neue I/O-Anforderung oder jeden Befehl (IOCB), der durch den Host-Mikroprozessor 20 in der Anforderungsschlange 26 platziert wird, um eins herauf. TOTAL_REMAIN behält bzw. speichert den Wert der Zahl der I/O-Befehle, die für die I/O-Geräte 80-86 für die Verarbeitung verblieben sind. Die Firmware 62 zählt außerdem die Variable 220 TOTAL_REMAIN um die Anzahl der I/O-Anforderungen herab, die durch den Adapter 45 und die I/O-Geräte 80-86 verarbeitet wurden.
  • In einem Verarbeitungsblock 310 setzt die Firmware die Variable 225 TOTAL_COMPLETE für jede I/O-Anforderung, die durch die I/O-Geräte 80-86 abgeschlossen, jedoch noch nicht an den Host-Mikroprozessor 20 berichtet wurde, um eins herauf. In einem Entscheidungsblock 315 stellt die Firmware 62 fest, ob die Anzahl nicht berechtigter I/O-Abschlüsse (TOTAL_COMPLETE 225) größer ist als oder gleich groß ist wie die Anzahl der verbleibenden I/O-Anforderungen TOTAL_REMAIN 220. Dies wird ein „erster Auslöser" genannt, da nämlich dann, wenn TOTAL_COMPLETE 225 größer ist als oder gleich groß ist wie TOTAL_REMAIN 220, die Firmware 62 einen Interrupt für den Host-Mikroprozessor 20 erzeugt und alle abgeschlossenen, jedoch bis dahin noch nicht berichteten I/O-Anforderungen in einem Prozessblock 340 meldet. Die Firmware 62 kehrt dann zu dem Prozessblock 300 zurück und fährt fort, TOTAL_REMAIN 220 und TOTAL_COMPLETE 225 entsprechend herauf- und herabzusetzen.
  • Wenn TOTAL_COMPLETE 225 geringer ist als TOTAL_REMAIN 220, so stellt die Firmware 62 in einem Entscheidungsblock fest, ob der Zeitgeber 245 (4) gestartet worden ist. Wenn der Zeitgeber 245 gestartet worden ist, so stellt die Firmware 62 in einem Entscheidungsblock 325 fest, ob der Zeitgeber 225 abgelaufen ist. Dies wird ein „zweiter Auslöser" genannt, da nämlich dann, wenn der Zeitgeber 245 abgelaufen ist, die Firmware 62 einen Interrupt für den Host-Mikroprozessor 20 erzeugt und in dem Prozessblock 340 alle abgeschlossenen, jedoch noch nicht berichteten I/O-Anforderungen für alle I/O-Geräte 80-86 berichtet. Die Firmware 62 löscht auch die Variable 225 TOTAL_COMPLETE auf null. Die Firmware 62 kehrt dann zu dem Prozessblock 300 zurück und fährt fort, TOTAL_REMAIN 220 und TOTAL_COMPLETE 225 entsprechend herauf- und herabzusetzen. Wenn der Zeitgeber 245 noch nicht abgelaufen ist, so kehrt die Firmware 62 zu dem Prozessblock 300 zurück und fährt fort, TOTAL_REMAIN und TOTAL_COMPLETE entsprechend herauf- und herabzusetzen.
  • In einem Entscheidungsblock 330 stellt die Firmware 62, wenn der Zeitgeber 245 noch nicht gestartet ist, fest, ob die Anzahl der verbleibenden (nicht abgeschlossenen) I/O-Anforderungen oder Befehle, die noch für die Verarbeitung durch irgendeines der einzelnen I/O-Geräte 80-86 verblieben sind, von eins auf null herabgesetzt worden ist. Insbesondere stellt die Firmware 62 fest, ob irgendeine der Variablen DEV_1_COUNT 230, DEV_2_COUNT 231 etc. einen Übergang von eins nach null durchgeführt hat. Wenn DEV_n_COUNT für irgendeines der I/O-Geräte 80-86 gleich null ist, so hat dieses I/O-Gerät 80-86 keine weiteren Befehle zu verarbeiten. Wenn eine der Variablen DEV_1_COUNT 230, DEV_2_COUNT 231 etc. einen Übergang von eins nach null durchgeführt hat, startet die Firmware 62 in einem Prozessblock 335 den Zeitgeber 245. Dann kehrt die Firmware 42 zu dem Prozessblock 300 zurück und fährt fort, TOTAL_REMAIN 220 und TOTAL_COMPLETE 225 entsprechend herauf- und herabzusetzen. Wenn keine der Variablen DEV_1_COUNT 230, DEV_2_COUNT 231 etc. einen Übergang von eins nach null durchgeführt hat, so kehrt die Firmware 62 zu dem Prozessblock 300 zurück und fährt fort, TOTAL_REMAIN 220 und TOTAL_COMPLETE 225 entsprechend herauf- und herabzusetzen.
  • In einer bevorzugten Ausführungsform startet der Zeitgeber 245 nicht, falls ein I/O-Gerät 80-86 untätig ist und für eine längere Zeitdauer keine I/O-Befehle zu verarbeiten hat (beispielsweise DEV_1_COUNT = 0). Der Zeitgeber 245 startet, wenn die Anzahl von für die Verarbeitung für ein I/O-Gerät 80-86 verbliebenen Befehle von eins auf null übergeht (wenn beispielsweise DEV_1_COUNT sich von eins auf null verändert).
  • ANDERE VERHÄLTNISSE, DIE VERWENDET WERDEN KÖNNEN
  • In dem oben unter Bezug auf 5 beschriebenen Verfahren berichten der Adapter 45 und die Firmware 62, wenn zumindest die Hälfte der verbleibenden I/O-Anforderungen abgeschlossen sind (TOTAL_COMPLETE 225 ist größer als oder gleich wie TOTAL_REMAIN 220), sämtliche abgeschlossenen, jedoch noch nicht berichteten I/O-Anforderungen und unterbricht den Host-Mikroprozessor 20. Dies stellt sicher, dass der Adapter 45 und die I/O-Geräte 80-86 noch immer eine beträchtliche Anzahl von I/O-Anforderungen (die Hälfte der gesamten I/O-Anforderungen) zu verarbeiten haben, während der Host-Mikroprozessor 20 die berichteten I/O-Abschlüsse (die Hälfte der gesamten I/O-Anforderungen) verarbeitet.
  • In anderen Ausführungsformen verwendet der Adapter 45 ein anderes Verhältnis der Anzahl nicht berichteter I/O-Abschlüsse (TOTAL_COMPLETE 225) und der Anzahl der verbleibenden I/O-Anforderungen (TOTAL_REMAIN 220), um einen Interrupt für den Host-Mikroprozessor 20 auszulösen und um alle abgeschlossenen, jedoch noch nicht berichteten I/O-Anforderungen zu berichten. Beispielsweise verwendet der Adapter 45 in einer Ausführungsform ein 3/2-Verhältnis von TOTAL_COMPLETE 225 zu TOTAL_REMAIN 220. Wenn TOTAL_COMPLETE 225 TOTAL_REMAIN 220 um ein Verhältnis von zumindest 3:2 übersteigt, so erzeugt der Adapter 45 einen Interrupt für den Host-Mikroprozessor 20 und berichtet alle abgeschlossenen, jedoch noch nicht berichteten I/O-Anforderungen an das Host-System 15. Andere Verhältnisse, wie z. B. 2:1, 3:1, 4:1, 4:3, 1:2, 1:3, 1:4, 2:3 und 3:4 können gemäß der vorliegenden Erfindung implementiert werden.
  • Das betreffende Verhältnis von TOTAL_COMPLETE 225 zu TOTAL_REMAIN 220 kann durch den Hersteller oder durch den Benutzer in Abhängigkeit von einer Vielfalt von Faktoren eingestellt werden, wie z. B. in Abhängigkeit von der Belastung des Host-Mikroprozessors 20 durch die I/O-Anforderungen (entweder hohe Belastung oder niedrige Belastung), der Art des Zugriffs (entweder sequentiell oder wahlfrei), der Art der Konfiguration oder der Komponenten des Systems 10, der Anzahl von I/O-Geräten 80-86 und der Art von I/O-Anforderungen.
  • I/O-GERÄT KANN WEITERHIN ANFORDERUNGEN EMPFANGEN; ZEITGEBER STARTET NICHT WIEDER
  • Nachdem der Zeitgeber 245 gestartet ist, können eine oder auch mehrere I/O-Anforderungen noch immer durch das betreffende I/O-Gerät 80-86 empfangen und verarbeitet werden, welches bewirkt hatte, dass der Zeitgeber 245 gestartet ist. Wenn beispielsweise die Anzahl der verbleibenden I/O-Anforderungen, die für das I/O-Gerät 1 80 zur Verarbeitung verblieben war, einen Übergang von eins nach null durchführt (DEV_1_COUNT 230 zählt von eins auf null herab), so bestätigt die Firmware 62 diesen Eins-zu-Null-Übergang und startet den Zeitgeber 245 (wenn das I/O-Gerät 1 80 das erste I/O-Gerät 80-86 ist, welches einen Eins-zu-Null-Übergang durchführt), wie es in dem Prozessblock 335 in 5 dargestellt ist. Wenn das I/O-Gerät 1 80 eine neue I/O-Anforderung empfängt, so verarbeitet es diese neue I/O-Anforderung. Wenn das I/O-Gerät 1 80 die I/O-Anforderung abgeschlossen hat, erfolgt ein weiterer Eins-zu-Null-Übergang durch DEV_1_COUNT 230, jedoch wird der Zeitgeber 245 nicht erneut gestartet. In ähnlicher Weise wird, wenn ein anderes I/O-Gerät 81-86 die Verarbeitung seiner sämtlichen I/O-Anforderungen beendet, beispielsweise DEV_2_COUNT 231 einen Übergang von eins nach null macht, der Zeitgeber 245 nicht erneut gestartet. Das erste I/O-Gerät 80-86, welches all seine I/O-Anordnungen beendet hat, wartet typischerweise am längsten von allen I/O-Geräten 80-86 darauf, dass seine abgeschlossenen I/O-Anforderungen an das Host-System 15 berichtet werden. Wenn der Zeitgeber 245 startet, wird er nicht zurückgesetzt (gelöscht), bis er abgelaufen ist, oder bis der erste Auslöser (TOTAL_COMPLETE 225 ist größer als oder gleich wie TOTAL_REMAIN 220) bewirkt, dass der Adapter 45 den Host-Mikroprozessor 20 unterbricht und alle abgeschlossenen, jedoch noch nicht berichteten I/O-Anforderungen berichtet bzw. meldet.
  • In einer Ausführungsform ist es, wenn die Anzahl von I/O-Anforderungen, die für alle I/O-Geräte 80-86 für die Verarbeitung verblieben sind, niemals einen Übergang von eins nach null durchführt und wenn der erste Auslöser (TOTAL_COMPLETE 225 ist größer als oder gleich wie TOTAL_REMAIN 220) weiterhin bewirkt, dass der Adapter 45 den Host-Mikroprozessor 20 unterbricht und I/O-Abschlüsse berichtet, möglich, dass der Zeitgeber 245 für eine längere Zeitdauer nicht gestartet wird. Mit anderen Worten, die Firmware 62 führt den Prozessblock 335 in 5 für eine längere Zeitdauer nicht aus. Die Situation tritt typischerweise auf, wenn die Arbeitsbelastung hoch ist (große Anzahl von I/O-Anforderungen) und jedes I/O-Gerät 80-86 durch den Host-Mikroprozessor 20 intensiv beansprucht wird.
  • LAUFZEIT DES ZEITGEBERS
  • Die Laufzeit oder Verzögerungsdauer des Zeitgebers 245 kann entsprechend der Konfiguration und den Komponenten des Computersystems 10, insbesondere den I/O-Geräten 80-86, variieren. Die Laufzeit des Zeitgebers 245 kann entsprechend einer Reaktionszeit von einem der I/O-Geräte 80-86, der längsten Reaktionszeit aller I/O-Geräte 80-86, der Reaktionszeit des I/O-Gerätes 80-86, welches am häufigsten verwendet wird, oder eines Durchschnittes aller Reaktionszeiten der I/O-Geräte 80-86 eingestellt werden. Andere Faktoren können beim Einstellen der Laufzeit des Zeitgebers 245 berücksichtigt werden.
  • In einer Ausführungsform wird die Laufzeit des Zeitgebers 245 auf einen Wert zwischen etwa 5 Mikrosekunden und etwa 8 Millisekunden eingestellt. In einer anderen Ausführungsform wird die Laufzeit des Zeitgebers auf einen Wert zwischen etwa 25 Mikrosekunden und etwa 1.000 Mikrosekunden festgesetzt. In einer weiteren Ausführungsform wird die Laufzeit des Zeitgebers 245 auf einen Wert zwischen etwa 600 Mikrosekunden und 1.000 Mikrosekunden festgesetzt.
  • In einer bevorzugten Ausführungsform wird die Laufzeit des Zeitgebers auf einen Wert von etwa 800 Mikrosekunden festgelegt. Dies deshalb, weil die typische Reaktionszeit für ein I/O-Gerät 80-86 etwa 50 Mikrosekunden beträgt. Wenn die Laufzeit des Zeitgebers 245 zu kurz ist, so setzt die Adapter-Firmware 62 den Zeitgeber 245 zurück und erzeugt einen Interrupt für den Mikroprozessor 20, kurz nachdem ein I/O-Gerät 80-86 eine Anzahl von null I/O-Anforderungen erreicht hat, woraufhin ein weiterer Interrupt folgt, kurz nachdem ein anderes I/O-Gerät 80-86 den Wert von null I/O-Anforderungen erreicht hat. Je kürzer die Laufzeit des Zeitgebers 245 ist, desto weniger I/O-Abschlüsse werden pro Interrupt an den Mikroprozessor 20 berichtet. Es ist ineffizient, wenn der Host-Adapter 45 den Host-Mikroprozessor 20 innerhalb einer kurzen Zeitdauer wiederholt unterbricht.
  • Insbesondere ist es durch Verzögern des Meldens von I/O-Abschlüssen für eine vorbestimmte Zeitdauer, nachdem ein erstes I/O-Gerät 80-86 seinen Satz von I/O-Anforderungen abgeschlossen hat, wahrscheinlich, dass eines oder mehrere zusätzliche I/O-Geräte 80-86 ebenfalls ihren Satz von I/O-Anforderungen während der vorbestimmten Zeitdauer abschließen. Es ist vorteilhaft, über die zwei oder mehr Sätze von I/O-Abschlüssen gemeinsam in einem einzelnen Interrupt zu berichten, anstatt die zwei oder mehr Sätze von Abschlüssen getrennt bei zwei oder mehr getrennten Interrupts zu berichten. Der Host-Mikroprozessor 20 muss dann nur einen Interrupt durch den Host-Adapter 45 anstelle von zwei oder mehr Interrupts bedienen.
  • Beispielsweise schließt das I/O-Gerät 1 80 alle seine I/O-Anforderungen in 50 Mikrosekunden ab. Die Firmware 62 startet den Zeitgeber 245. Dann schließt das I/O-Gerät 4 83 seine I/O-Anforderungen 50 Mikrosekunden später ab und dann schließt danach das I/O-Gerät 2 81 seine I/O-Anforderungen 50 Mikrosekunden danach ab. Wenn der Zeitgeber 245 eine Laufzeit von 75 Mikrosekunden hätte, würde der Adapter 45 einen Interrupt für den Host-Mikroprozessor 20 erzeugen und alle I/O-Abschlüsse der I/O-Geräte 1 80 und des I/O-Gerätes 4 83 berichten. Der Adapter 45 würde einen zweiten Interrupt zum Berichten der I/O-Abschlüsse des I/O-Gerätes 2 81 erzeugen. Wenn jedoch die Laufzeit des Zeitgebers 245 länger wäre, beispielsweise 125 Mikrosekunden, so würde der Adapter 50 für den Host-Mikroprozessor 20 einen einzigen Interrupt erzeugen und die I/O-Abschlüsse der I/O-Geräte 1 80, 4 83 und 2 81 berichten.
  • Wenn andererseits die Laufzeit des Zeitgebers 245 zu lang ist, so kann es sein, dass der Host-Mikroprozessor 20 auf I/O-Abschlüsse von den I/O-Geräten 80-86 wartet, bevor er neue I/O-Anforderungen aussendet, und eines oder mehrere I/O-Geräte 80-86 können im Leerlauf sein, während sie auf weitere I/O-Anforderungen von dem Host-Mikroprozessor warten. Demnach ist in einer bevorzugten Ausführungsform die Laufzeit des Zeitgebers 245 ausreichend lang, um mehrere Interrupts innerhalb eines kurzen Zeitabschnitts zu vermeiden, aber dennoch ausreichend kurz, um eine übermäßige Leerlaufzeit zu vermeiden.
  • In einer Ausführungsform kann die Laufzeit des Zeitgebers 245 in Abhängigkeit davon variieren, welches I/O-Gerät 80-86 den Zeitgeber 245 ausgelöst hat. Ein I/O-Gerät 80-86, welches häufig verwendet wird, kann eine relativ kurze Zeitgeberlaufzeit haben. Ein I/O-Gerät, welches weniger häufig verwendet wird, kann eine relativ längere Zeitgeberlaufzeit haben. In einer anderen Ausführungsform ist die Laufzeit des Zeitgebers 245 null für eines oder mehrere der I/O-Geräte 80-86. In dieser Ausführungsform erzeugt die Firmware 62, wenn ein I/O-Gerät 80-86, das eine auf null gesetzte Laufzeit hat, alle seine I/O-Anforderungen beendet hat, unmittelbar einen Interrupt für den Host-Mikroprozessor und berichtet alle abgeschlossenen, jedoch noch nicht berichteten Anforderungen.
  • In einer Weiteren Ausführungsform startet der Zeitgeber 245, wenn die Anzahl von I/O-Anforderungen für irgendeine I/O-Gerät 80-86 unter eine vorbestimmte Anzahl, wie z. B. drei anstelle von null fällt, wie es oben unter Bezug auf 5 beschrieben wurde.
  • Die Laufzeit des Zeitgebers 245 kann durch den Host-Mikroprozessor 20 eingestellt werden. In einer Ausführungsform kann der Endbenutzer die Laufzeit des Zeitgebers 245 einstellen. In einer weiteren Ausführungsform kann ein Systementwickler (Hersteller des Host-Computers oder des Adapters) oder ein Programmierer die Laufzeit des Zeitgebers 245 einstellen.
  • VORTEILE DES SCHWELLWERTAUSLÖSERS
  • Das oben beschriebene Verfahren ist adaptiv: Es passt die Belastung des Hostmikroprozessors 20 durch I/O-Anforderungen an. Je höher die Belastung durch I/O-Anforderungen ist, desto größer wird das Verhältnis oder die Anzahl von I/O-Abschlussberichten pro Sekunde (IOPS) pro Interrupt. Wenn beispielsweise die Belastung relativ niedrig ist, z. B. nur 5-10 I/O-Anforderungen gleichzeitig erzeugt werden, so werden mit einem Interrupt nur 3-6 abgeschlossene I/O-Anforderungen an den Host-Mikroprozessor 20 berichtet. Wenn die Belastung relativ hoch ist, beispielsweise 30 bis 60 I/O-Anforderungen gleichzeitig erzeugt werden, so werden mit einem Interrupt 15-30 abgeschlossene I/O-Anforderungen an den Host-Mikroprozessor berichtet.
  • Je stärker also der Host-Mikroprozessor 20 beschäftigt ist, desto mehr I/O-Abschlussberichte werden durch den Adapter 45 mit jedem Interrupt geliefert. Dies ist ein beträchtlicher Vorteil, da der Host-Mikroprozessor 20, je stärker er beansprucht wird, er umso weniger die Zeit und die Ressourcen zur Verfügung hat, um Interrupts und die mit den Interrupts verbundene Zusatzlast zu bedienen.
  • VORTEILE DES ZEITGEBERAUSLÖSERS
  • Der Zeitgeber 245 bietet ebenfalls einen beträchtlichen Vorteil. Der Zeitgeber 245 vermindert die Leerlaufzeit (Latenz) eines bestimmten I/O-Gerätes 80-86, das seine sämtlichen I/O-Anforderrungen abgeschlossen hat, während andere I/O-Geräte 80-86 immer noch beschäftigt sind.
  • Beispielsweise kann das I/O-Geräte 1 80 all seine I/O-Anforderungen beendet haben (DEV_1_COUNT = 0), während die anderen I/O-Geräte 81-86 immer noch einige I/O-Anforderungen abschließen müssen. Wenn TOTAL_REMAIN 220 beträchtlich größer ist als TOTAL_COMPLETE 225, berichtet der Adapter 245 nicht die abgeschlossenen, aber noch nicht gemeldeten I/O-Anforderungen für eine beträchtliche Zeit. Es gibt einige Softwareanwendungen oder Unterprogramme, die der Host-Mikroprozessor 20 laufen lässt, welche keine neue Anforderung an eines oder mehrere I/O-Geräte 80-86, wie z. B. das I/O-Gerät 1 80 senden, bis nicht eine oder mehrere vorherige I/O-Anforderungen abgeschlossen und berichtet worden sind. Dies bewirkt eine Verzögerung und begrenzt die Leistungsfähigkeit des Systems. Es wäre ineffizient, wenn das I/O-Gerät 1 80 für eine längere Zeitdauer im Leerlauf bliebe, während die anderen I/O-Geräte 81-86 mehrere I/O-Anforderungen zu verarbeiten haben und aktiv ihre I/O-Anforderungen verarbeiten.
  • Der Zeitgeber 245 versucht, die Leerlaufzeit des I/O-Gerätes 1 80 zu reduzieren, indem er bewirkt, dass die Firmware 62, nach Ablauf (der Laufzeit) des Zeitgebers 245 einen Interrupt für den Host-Mikroprozessor 20 erzeugt und alle abgeschlossenen, jedoch noch nicht gemeldeten I/O-Anforderungen an das Host-System meldet. Dies umgeht den ersten Auslöser (den Schwellwert des gesamten I/O-Abschlusses, der TOTAL_REMAIN und TOTAL_COMPLETE vergleicht). Nachdem der Host-Mikroprozessor 20 die abgeschlossenen I/O-Anforderungen verarbeitet hat, kann der Host-Mikroprozessor 20 einen oder mehrere neue I/O-Anforderungen für die Verarbeitung durch das leerlaufende I/O-Gerät 1 80 absenden. Der Zeitgeber 245 (zweiter Auslöser) ergänzt damit den Schwellwertzähler für den I/O-Abschluss, TOTAL_COMPLETE (erster Auslöser), indem er die Leerlaufzeit des ersten der I/O-Geräte 80-86 verkürzt, das zu irgendeinem gegebenen Zeitpunkt seine sämtlichen I/O-Anforderungen beendet hat.
  • JEDER AUSLÖSER ALLEIN ODER MIT ANDEREN AUSLÖSERN
  • In der in 5 dargestellten Ausführungsform gibt es zwei Auslöser (Block 315 und Blöcke 320-335) zum Erzeugen eines Interrupts für den Host-Mikroprozessor 20. Alternativ verwenden andere Ausführungsformen der vorliegenden Erfindung nur einen der beiden Auslöser.
  • Entweder die beiden Auslöser oder Variationen derselben können unabhängig von dem anderen verwendet werden, um festzulegen, wann der Host-Mikroprozessor 20 zu unterbrechen ist. Beispielsweise führt in einer Ausführungsform der Adapter 45 nur das in den Blöcken 300 bis 315 und 340 dargestellte Verfahren aus. In dieser Ausführungsform kehrt die Firmware 62, wenn in dem Entscheidungsblock 315 TOTAL_COMPLETE 225 nicht größer ist als oder gleich groß ist wie TOTAL_REMAIN 220, zu dem Start-/Fortsetzungsblock zurück.
  • Auch wenn andere Ausführungsformen der vorliegenden Erfindung nur einen der beiden Auslöser verwenden, erzielt man doch eine bessere Leistungsfähigkeit, wenn die beiden oben beschriebenen Auslöser in Kombination miteinander verwendet werden. Auch zusätzliche Auslöser könnten in Kombination mit einem oder beiden der oben beschriebenen Auslöser verwendet werden. Beispielsweise könnte ein alternativer Auslöser die Belastung des Host-Mikroprozessors 20 ohne Verwendung der Variablen TOTAL_REMAIN 220 bestimmen. Ein anderer Auslöser könnte einen Interrupt für den Host-Mikroprozessor 20 erzeugen, wenn die Anzahl von I/O-Anforderungen für zwei oder mehr I/O-Geräte 80-86 auf irgendeine vorbestimmte Zahl anstatt auf null abfällt.
  • EINE WEITERE AUSFÜHRUNGSFORM DES ADAPTIVEN ALGORITHMUS
  • 7 veranschaulicht eine weitere Ausführungsform eines Verfahrens, welches durch die Host-Adapterplatine 40 nach 1 verwendet wird, um Abschlussmeldungen über I/O-Anforderungen zu kombinieren und die Anzahl von Interrupts für den Host-Mikroprozessor 20 zu reduzieren. In einer Konfiguration ist das Verfahren nach 7 Teil des RISC-Codes oder der Firmware 62.
  • Die Verwendung und die Arbeitsweise des Verfahrens nach 7 wird unter Bezug auf die 1, 4 und 5 beschrieben. In 7 sind die Vorgänge, die in einem Start-/Fortsetzungsblock 400, einem Prozessblock 405 und einem Prozessblock 410 dargestellt sind, im Wesentlichen dieselben wie die Vorgänge, die oben unter Bezug auf den Start-/Fortsetzungsblock, den Prozessblock 305 und den Prozessblock 310 nach 5 beschrieben wurden. In 7 wird jedoch in dem Prozessblock 405 die Variable 220 TOTAL_REMAIN zuerst (für jede neue I/O-Anforderung, die in der Anforderungsschlange 26 empfangen wurde) heraufgesetzt. Nachdem die Variable 220 TOTAL_REMAIN heraufgesetzt worden ist, wird die Variable 220 TOTAL_REMAIN herabgesetzt (für jede I/O-Anforderung, die durch den Adapter 45 abgeschlossen wurde), und die Variable TOTAL_COMPLETE wird, wie es in dem Prozessblock 410 dargestellt ist, heraufgesetzt (für jede durch den Adapter 45 abgeschlossene, aber noch nicht berichtete I/O-Anforderung).
  • In einem Entscheidungsblock 415 legt die Firmware 62 fest, ob die Anzahl der verbleibenden I/O-Anforderungen für irgendein individuelles I/O-Gerät 80-86 von eins auf null abgesunken ist (d.h. irgendeine der DEV_n_COUNT-Variablen 220-232 einen Übergang von eins nach null durchgeführt hat). Wenn die Anzahl verbleibender I/O-Anforderungen für irgendein individuel les I/O-Gerät 80-86 von eins nach null abgenommen hat, so setzt die Firmware 62 ein Flag für den Start des Zeitgebers in dem Prozessor 50, wie es in einem Prozessblock 420 dargestellt ist. In Reaktion darauf startet der Prozessor 50 den Zeitgeber 245 (4). Dann vergleicht die Firmware 62 die Variable 225 TOTAL_COMPLETE mit der Variablen 220 TOTAL_REMAIN, wie es in einem Entscheidungsblock 425 dargestellt ist. In dem Entscheidungsblock 415 vergleicht die Firmware 62 dann, wenn die Anzahl der verbleibenden I/O-Anforderungen für irgendein einzelnes I/O-Gerät 80-86 nicht von eins auf null abgesunken ist, die Variable 225 TOTAL_COMPLETE mit der Variablen 220 TOTAL_REMAIN, wie es in dem Entscheidungsblock 425 dargestellt ist.
  • In dem Entscheidungsblock 425 erzeugt dann die Firmware 62, wenn die Variable 225 TOTAL_COMPLETE größer ist als oder gleich ist wie die Variable 220 TOTAL_REMAIN, einen Interrupt für den Host-Mikroprozessor 220 und berichtet alle abgeschlossenen, jedoch noch nicht gemeldeten I/O-Anforderungen, wie es in einem Prozessblock 430 dargestellt ist. In dem Prozessblock 430 löscht die Firmware 62 auch die Variable 225 TOTAL_COMPLETE auf null und löscht auch das Flag für den Start des Zeitgebers. In einem Entscheidungsblock 435 bestimmt die Firmware 62 dann, ob der Zeitgeber 245 gestartet worden ist. Wenn in dem Entscheidungsblock 425 die Variable 225 TOTAL_COMPLETE kleiner ist als die Variable 220 TOTAL_REMAIN, so geht die Firmware 62 direkt zu dem Entscheidungsblock 435, um zu bestimmen, ob der Zeitgeber 245 gestartet worden ist und umgeht damit den Prozessblock 430.
  • Wenn in dem Entscheidungsblock 435 der Zeitgeber 245 noch nicht gestartet worden ist, fährt die Firmware 62 entsprechend fort, die Variable 220 TOTAL_RENAIM herauf- und herabzusetzen und die Variable 225 TOTAL_COMPLETE heraufzusetzen, wie es in den Prozessblöcken 400-410 dargestellt ist. Wenn der Zeitgeber gestartet worden ist, so stellt die Firmware 62 in einem Entscheidungsblock 440 fest, ob der Zeitgeber 245 abgelaufen ist. Wenn der Zeitgeber 245 noch nicht abgelaufen ist, kehrt die Firmware 62 zu den Prozessblöcken 400-410 zurück und fährt entsprechend fort, die Variable 220 TOTAL_REMAIN herauf- und herabzuzählen und die Variable 225 TOTAL_COMPLETE heraufzuzählen. Wenn der Zeitgeber 245 abgelaufen ist, erzeugt die Firmware 62 einen Interrupt für den Host-Mikroprozessor 220 und meldet alle abgeschlossenen, aber noch nicht berichteten I/O-Anforderungen, wie es in einem Prozessblock 445 dargestellt ist. In dem Prozessblock 445 löscht die Firmware 62 auch die Variable 225 TOTAL_COMPLETE auf null und löscht auch das Flag für den Start des Zeitgebers. Die Firmware 62 kehrt dann zu den Prozessblöcken 400-410 zurück und fährt entsprechend fort, die Variable 220 TOTAL_REMAIN herauf- und herabzuzählen und die Variable 225 TOTAL_COMPLETE heraufzuzählen.
  • SCHWELLWERT DURCH GERÄT – 8
  • 8 veranschaulicht eine weitere Ausführungsform eines Verfahrens, welches durch die Host-Adapterplatine nach 1 verwendet wird, um Abschlussberichte von I/O- Anforderungen zu kombinieren und die Anzahl von Interrupts für den Host-Mikroprozessor 20 zu reduzieren. Die oben unter Bezug auf die 1 bis 7 beschriebenen Ausführungsformen können für Host-Rechnersysteme 15 ideal geeignet sein, welche aufeinanderfolgende (sequentielle) I/O-Zugriffe verwenden. Die nachstehend unter Bezug auf 8 beschriebene Ausführungsform kann für Host-Computersysteme 15 ideal geeignet sein, die einen wahlfreien I/O-Zugriff verwenden. Sequentielle I/O-Zugriffe und wahlfreie I/O-Zugriffe sind Fachleuten auf diesem Gebiet ein Begriff.
  • Das in 8 dargestellte Verfahren ist dem in 7 dargestellten im Wesentlichen ähnlich, abgesehen davon, dass ein Entscheidungsblock 485 in 8 sich von dem Entscheidungsblock 425 in 7 unterscheidet. Insbesondere stellt in dem Entscheidungsblock 485 in 8 die Firmware 62 (1) fest, ob die Anzahl nicht berichteter I/O-Abschlüsse (TOTAL_REMAIN 220) gleich der Anzahl aktuell aktiver I/O-Geräte 80-86 ist. Eine „aktive" I/O-Einrichtung 80-86 bzw. I/O-Gerät 80-86 ist ein I/O-Gerät 80-86, das zumindest eine anhängige (nicht abgeschlossene) I/O-Anforderung hat. Wenn ein I/O-Gerät 80-86 seine letzte I/O-Anforderung abgeschlossen hat, wird dieses I/O-Gerät 80-86 über die Zwecke dieser Ausführungsform nicht mehr als aktiv angesehen und die Anzahl aktiver I/O-Geräte 80-86 nimmt um eins ab. Wenn andererseits der Adapter 45 eine neue (anhängige) I/O-Anforderung empfängt, die für ein zuvor inaktives I/O-Gerät 80-86 vorgesehen ist, so nimmt die Zahl der aktiven I/O-Geräte 80-86 um eins zu. Die Anzahl der aktiven I/O-Geräte 80-86 ist also eine dynamische Variable, die zunehmen oder abnehmen kann, wenn eines oder mehrere I/O-Geräte 80-86 ihre letzten anhängigen I/O-Anforderungen abschließen oder eine erste (anhängige) I/O-Anforderung bzw. -Anforderungen empfangen.
  • Wenn beispielsweise die ersten drei I/O-Geräte 80-82 anhängige I/O-Anforderungen haben, d.h. DEV_1_COUNT 230, DEV_2_COUNT 231 und DEV_3_COUNT 232 sind nicht gleich null, so ist die Anzahl aktuell aktiver I/O-Geräte 80-82 drei. Die ersten drei I/O-Geräte 80-82 sind für die Zwecke dieses Beispiels aktiv, jedoch könnte irgendeine beliebige Anzahl oder Nummer der I/O-Geräte 80-86 zu irgendeinem gegebenen Zeitpunkt aktiv sein. In dem Entscheidungsblock 485 nach 8 ist der Schwellwert für die Auslösung eines Interrupts für den Host-Prozessor 20 (und den Bericht über alle abgeschlossenen I/O-Anforderungen) aktuell drei. Wenn TOTAL_COMPLETE 225 gleich eins ist, so ist TOTAL_COMPLETE 225 noch nicht gleich dem Schwellwert (Anzahl der aktuell aktiven I/O-Geräte 80-82), der drei ist.
  • Der Schwellwert für das Auslösen eines Interrupts steigt an oder nimmt ab je nach der Anzahl aktuell aktiver I/O-Geräte 80-86, wie es im Block 485 von 8 dargestellt ist. Wenn die aktiven I/O-Geräte 80-82 ihre zugewiesenen I/O-Anforderungen abgeschlossen haben, so nimmt TOTAL_COMPLETE 225 zu und der Schwellwert (Anzahl der aktuell aktiven I/O-Geräte 80-82) nimmt möglicherweise ab. Wenn zuvor inaktive I/O-Geräte 83-86 aktiv werden, können die Anzahl aktiver I/O-Geräte und der Schwellwert ansteigen. Wenn TOTAL_COMPLETE 225 gleich der Anzahl aktuell aktiver I/O-Geräte ist, wenn das Verfahren nach 8 zu dem Entscheidungsblock 485 kommt, so erzeugt die Firmware 62 einen Interrupt für den Host-Mikroprozessor 20 und berichtet alle abgeschlossenen, aber noch nicht berichteten I/O-Anforderungen in einem Prozessblock 490.
  • In dem Verfahren nach 8 ist der Zeitgeberbetrieb, d.h. der zweite Auslöser, dem Zeitgeberbetrieb des oben unter Bezug auf 7 beschriebenen Verfahrens weitgehend ähnlich.
  • Der variable Schwellwert bei dem Verfahren nach 8 ermöglicht es, dass der Host-Adapter 45 und die Firmware 62 sich an die Belastung des Host-Mikroprozessors 20 anpassen. Wenn der Host-Mikroprozessor 20 eine hohe I/O-Belastung hat und wenn mehrere I/O-Geräte 80-86 aktiv sind, so ist der Schwellwert zum Auslösen eines Interrupts ebenfalls hoch. Ein hoher Schwellwert produziert die Anzahl von Interrupts pro Sekunde (IPS) und erhöht die Anzahl berichteter I/O-Abschlüsse pro Interrupt. Wenn der Host eine niedrige I/O-Arbeitslast hat und eine geringe Anzahl von I/O-Geräten 80-86 aktiv ist, so ist der Schwellwert zum Auslösen eines Interrupts ebenfalls niedrig.
  • Die Verfahren nach den 5, 7 und 8 und ihre Schwellwerte für das Auslösen von Interrupts für den Host-Mikroprozessor 20 passen sich also an die Belastung des Host-Mikroprozessors 20 durch I/O-Anforderungen an. Je stärker der Host-Mikroprozessor belastet bzw. beschäftigt ist, desto mehr I/O-Abschlussberichte werden mit einem einzigen Interrupt durch den Adapter 45 geliefert. Speziell wird, je größer die Belastung durch I/O-Anforderungen ist, desto größer auch das Verhältnis der I/O-Abschlussberichte pro Sekunde (IOPS) und pro Interrupt.
  • Wenn beispielsweise in den Ausführungsformen, die oben unter Bezug auf die 5 bis 7 beschrieben wurden, die Belastung relativ niedrig ist, z. B. nur 5 bis 10 I/O-Anforderungen gleichzeitig erzeugt werden, so können 3 bis 5 I/O-Abschlussberichte mit einem einzigen Interrupt an den Host-Mikroprozessor 20 berichtet werden. Wenn die Belastung relativ hoch ist, beispielsweise 50 bis 100 I/O-Anforderungen gleichzeitig erzeugt werden, so können mit einem einzelnen Interrupt 25 bis 50 I/O-Abschlussberichte an den Host-Mikroprozessor 20 gemeldet werden. Dies bietet einen beträchtlichen Vorteil, da, je stärker der Host-Mikroprozessor 20 beschäftigt ist, desto weniger der Host-Mikroprozessor sich Zeit und Ressourcen leisten kann, um Interrupts und die mit Interrupts verbundene Zusatzlast zu bedienen.
  • Aufgrund ihrer adaptiven Natur kann also die vorliegende Erfindung unabhängig von der Belastung durch I/O-Anforderungen (entweder hohe Belastung oder niedrige Belastung), der Art des Zugriffs (sei er sequentiell oder wahlfrei), der Art der Systemkonfiguration, der Anzahl von I/O-Geräten und der Art der I/O-Anforderungen, seien sie in einer Schlange oder nicht in einer Schlange angeordnete I/O-Anforderungen, eingesetzt werden.
  • Während Ausführungsformen und Anwendungen der vorliegenden Erfindung dargestellt und beschrieben worden sind, liegt es für Fachleute auf der Hand, dass verschiedene Modifikati onen möglich sind, ohne vom Schutzumfang der Erfindung abzuweichen. Es versteht sich daher, dass die Erfindung innerhalb des Schutzumfangs der anhängenden Ansprüche die Erfindung auf andere Weise ausgeführt werden kann als speziell beschrieben.

Claims (15)

  1. Verfahren zum Verarbeiten abgesandter I/O-Anforderungen in einem Computersystem, in welchem ein Host-Microprozessor (20) eines Host-Computers Eingabe/Ausgabe(I/O)-Anforderungen an eine I/O-Steuerung (40) absendet, um Übertragungen von Daten zwischen dem Host-Computer und einer Mehrzahl von peripheren I/O-Geräten (80-86) auszulösen, wobei das Verfahren aufweist: (a) Verarbeiten der abgesandten I/O-Anforderungen durch Übertragen von Daten zwischen peripheren I/O-Geräten und einem Speicher (25) des Host-Computers, (b) gleichzeitig mit dem Vorgang (a) auf Basis zumindest einer Anzahl nicht gemeldeter abgeschlossener I/O-Anforderungen und einer Anzahl anhängiger I/O-Anforderungen Bestimmen, ob der Host-Microprozessor (315) zu unterbrechen ist, und (c) falls in dem Vorgang (b) festgestellt wird, daß der Microprozessor unterbrochen werden sollte, Unterbrechen des Host-Microprozessors (340) und Melden der Anzahl ungemeldeter abgeschlossener I/O-Anforderungen entsprechend einer aktuellen Auslastung der I/O-Steuerung an den Host-Microprozessor.
  2. Verfahren nach Anspruch 1, wobei der Vorgang (b) das Vergleichen der Anzahl ungemeldeter abgeschlossener I/O-Anforderungen mit der Anzahl anhängiger I/O-Anforderungen aufweist.
  3. Verfahren nach Anspruch 2, wobei das Verfahren das Unterbrechen des Host-Microprozessors aufweist, wenn die Anzahl ungemeldeter abgeschlossener I/O-Anforderungen größer als oder gleich der Anzahl anhängiger I/O-Anforderungen ist.
  4. Verfahren nach Anspruch 1, wobei der Vorgang (b) des Bestimmens, ob der Microprozessor unterbrochen werden soll, weiterhin auf der Anzahl anhängiger I/O-Anforderungen beruht, die jeweils einem peripheren I/O-Gerät entsprechen.
  5. Verfahren nach Anspruch 4, wobei das Verfahren das Unterbrechen des Host-Microprozessors aufweist, wenn die Anzahl anhängiger I/O-Anforderungen für eines der peripheren I/O-Geräte den Wert Null erreicht.
  6. Verfahren nach Anspruch 4, wobei das Verfahren das Unterbrechen des Host-Microprozessors aufweist, wenn die Anzahl anhängiger I/O-Anforderungen für eines der peripheren I/O-Geräte eine vorbestimmte, programmierbare Zahl erreicht.
  7. Verfahren nach Anspruch 6, wobei jedes periphere I/O-Gerät eine entsprechende, programmierbare Anzahl anhängiger I/O-Anforderungen hat, welche eine Unterbrechung (einen Interrupt) für den Host-Microprozessor auslöst.
  8. Verfahren nach Anspruch 5, wobei der Vorgang des Unterbrechens des Host-Microprozessors, falls die Anzahl anhängiger I/O-Anforderungen für ein peripheres I/O-Gerät den Wert Null erreicht, das Warten für eine vorbestimmte Zeitdauer aufweist, bevor der Host-Microprozessor unterbrochen wird, wobei die vorbestimmte Zeitdauer so ausgewählt ist, daß sie die Wahrscheinlichkeit, daß eines oder mehrere andere periphere I/O-Geräte entsprechende anhängige I/O-Anforderungen abschließen, bevor der Host-Microprozessor unterbrochen wird, beträchtlich erhöht.
  9. Verfahren nach Anspruch 8, wobei die vorbestimmte Zeitdauer zwischen etwa 5 Mikrosekunden und etwa 8 Millisekunden liegt.
  10. Verfahren nach Anspruch 8, wobei die vorbestimmte Zeitdauer zwischen 25 Mikrosekunden und etwa 1.000 Mikrosekunden liegt.
  11. Verfahren nach Anspruch 8, wobei eine entsprechende, vorbestimmte Zeitdauer für jedes periphere I/O-Gerät ausgewählt wird.
  12. Verfahren nach Anspruch 8, wobei die vorbestimmte Zeitdauer programmierbar ist.
  13. Eine I/O-Steuerung (40), welche so ausgelegt ist, daß sie einen Host-Microprozessor (20) dafür unterbricht, abgeschlossene I/O-Anforderungen zu melden, wobei die I/O-Steuerung aufweist: einen ersten Zähler (220), der so ausgelegt ist, daß er eine Gesamtzahl verbleibender I/O-Anforderungen von dem Host-Microprozessor zählt, und einen zweiter Zähler (225), der so ausgelegt ist, daß er eine Gesamtzahl nicht gemeldeter I/O-Anforderungen zählt, die durch die I/O-Geräte abgeschlossen worden sind, wobei die I/O-Steuerung die Anzahl in dem ersten Zähler mit der Anzahl in dem zweiten Zähler vergleicht, die I/O-Steuerung den Host-Microprozessor unterbricht, wenn die Anzahl in dem zweiten Zähler grö ßer ist als oder gleich ist wie die Anzahl in dem ersten Zähler, und alle ungemeldeten I/O-Anforderungen meldet, die durch die I/O-Geräte abgeschlossen worden sind.
  14. I/O-Steuerung nach Anspruch 13, welche weiterhin aufweist: eine Mehrzahl von I/O-Gerätezählern (230-232), wobei jeder Zähler so ausgelegt ist, daß er die Anzahl verbleibender I/O-Anforderungen für eines der I/O-Geräte zählt, und einen Zeitgeber (245) mit einer vorbestimmten Zeitdauer, welcher so ausgelegt ist, daß er eine Ablaufzeit startet, wenn einer aus der Mehrzahl von I/O-Gerätezählern einen Übergang von 1 nach 0 durchführt, wobei die I/O-Steuerung den Host-Microprozessor unterbricht, wenn die vorbestimmte Zeitdauer des Zeitgebers abläuft, und alle ungemeldeten I/O-Anforderungen, welche durch die I/O-Geräte abgeschlossen worden sind, meldet.
  15. I/O-Steuerung nach Anspruch 13, wobei alle Zähler Variablen sind, die in einem zu der I/O-Steuerung gehörigen Speicher (65) mit wahlfreiem Zugriff gespeichert und aktualisiert werden.
DE60036465T 1999-03-31 2000-03-29 Rechneradapterkarte für die kombinierung von eingang-/ausgangfertigstellungsberichten und verwendung derselben Expired - Lifetime DE60036465T2 (de)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US09/282,341 US6434630B1 (en) 1999-03-31 1999-03-31 Host adapter for combining I/O completion reports and method of using the same
US282341 1999-03-31
PCT/US2000/008443 WO2000058843A1 (en) 1999-03-31 2000-03-29 A host adapter for combining i/o completion reports and method of using the same

Publications (2)

Publication Number Publication Date
DE60036465D1 DE60036465D1 (de) 2007-10-31
DE60036465T2 true DE60036465T2 (de) 2008-06-12

Family

ID=23081068

Family Applications (1)

Application Number Title Priority Date Filing Date
DE60036465T Expired - Lifetime DE60036465T2 (de) 1999-03-31 2000-03-29 Rechneradapterkarte für die kombinierung von eingang-/ausgangfertigstellungsberichten und verwendung derselben

Country Status (9)

Country Link
US (1) US6434630B1 (de)
EP (1) EP1163595B1 (de)
JP (1) JP2002540526A (de)
KR (1) KR100677538B1 (de)
AT (1) ATE373844T1 (de)
AU (1) AU4327800A (de)
CA (1) CA2367890C (de)
DE (1) DE60036465T2 (de)
WO (1) WO2000058843A1 (de)

Families Citing this family (48)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6564271B2 (en) * 1999-06-09 2003-05-13 Qlogic Corporation Method and apparatus for automatically transferring I/O blocks between a host system and a host adapter
US6792477B1 (en) * 2000-05-18 2004-09-14 Microsoft Corporation Discovering printers and shares
US6779054B2 (en) * 2001-10-05 2004-08-17 Intel Corporation Method and apparatus for operating a network controller
US20030086485A1 (en) * 2001-11-08 2003-05-08 John Lin Master to multi-slave asynchronous transmit fifo
US6829660B2 (en) * 2001-12-12 2004-12-07 Emulex Design & Manufacturing Corporation Supercharge message exchanger
JP4212811B2 (ja) * 2002-01-10 2009-01-21 富士通株式会社 情報処理システム、インタフェース装置、情報処理装置、情報記憶装置
US20030189945A1 (en) * 2002-04-05 2003-10-09 Connor Patrick L. Selective completion indication of controller events
US7154886B2 (en) 2002-07-22 2006-12-26 Qlogic Corporation Method and system for primary blade selection in a multi-module fiber channel switch
US7397768B1 (en) 2002-09-11 2008-07-08 Qlogic, Corporation Zone management in a multi-module fibre channel switch
FI20021867A7 (fi) * 2002-10-18 2004-04-19 Nokia Corp Menetelmä kortin toimintatilan muuttamiseksi, järjestelmä, kortti ja laite
WO2004046926A1 (ja) * 2002-11-21 2004-06-03 Fujitsu Limited イベント通知方法、デバイス及びプロセッサシステム
US7319669B1 (en) 2002-11-22 2008-01-15 Qlogic, Corporation Method and system for controlling packet flow in networks
US7646767B2 (en) 2003-07-21 2010-01-12 Qlogic, Corporation Method and system for programmable data dependant network routing
US7234101B1 (en) 2003-08-27 2007-06-19 Qlogic, Corporation Method and system for providing data integrity in storage systems
US20050071688A1 (en) * 2003-09-25 2005-03-31 International Business Machines Corporation Hardware CPU utilization meter for a microprocessor
US7219263B1 (en) 2003-10-29 2007-05-15 Qlogic, Corporation Method and system for minimizing memory corruption
US7930377B2 (en) 2004-04-23 2011-04-19 Qlogic, Corporation Method and system for using boot servers in networks
US7669190B2 (en) 2004-05-18 2010-02-23 Qlogic, Corporation Method and system for efficiently recording processor events in host bus adapters
US7577772B2 (en) * 2004-09-08 2009-08-18 Qlogic, Corporation Method and system for optimizing DMA channel selection
US20060064531A1 (en) * 2004-09-23 2006-03-23 Alston Jerald K Method and system for optimizing data transfer in networks
US7676611B2 (en) 2004-10-01 2010-03-09 Qlogic, Corporation Method and system for processing out of orders frames
US7380030B2 (en) 2004-10-01 2008-05-27 Qlogic, Corp. Method and system for using an in-line credit extender with a host bus adapter
US7398335B2 (en) * 2004-11-22 2008-07-08 Qlogic, Corporation Method and system for DMA optimization in host bus adapters
US7164425B2 (en) * 2004-12-21 2007-01-16 Qlogic Corporation Method and system for high speed network application
US7392437B2 (en) 2005-01-20 2008-06-24 Qlogic, Corporation Method and system for testing host bus adapters
US7853960B1 (en) 2005-02-25 2010-12-14 Vmware, Inc. Efficient virtualization of input/output completions for a virtual device
US7281077B2 (en) * 2005-04-06 2007-10-09 Qlogic, Corporation Elastic buffer module for PCI express devices
US7231480B2 (en) * 2005-04-06 2007-06-12 Qlogic, Corporation Method and system for receiver detection in PCI-Express devices
JP2007012021A (ja) * 2005-06-01 2007-01-18 Sony Corp 情報処理装置および情報処理方法、並びにプログラム
US7461195B1 (en) 2006-03-17 2008-12-02 Qlogic, Corporation Method and system for dynamically adjusting data transfer rates in PCI-express devices
US7743195B2 (en) * 2006-12-27 2010-06-22 Intel Corporation Interrupt mailbox in host memory
US7716397B2 (en) * 2007-07-03 2010-05-11 Lsi Corporation Methods and systems for interprocessor message exchange between devices using only write bus transactions
JP5101195B2 (ja) * 2007-07-09 2012-12-19 株式会社東芝 インタフェースコントローラ
US8458730B2 (en) * 2008-02-05 2013-06-04 International Business Machines Corporation Multi-level driver configuration
CN102077181B (zh) * 2008-04-28 2014-07-02 惠普开发有限公司 用于在多核处理器中和在某些共享存储器多处理器系统中产生并输送处理器间中断的方法和系统
US20100005199A1 (en) * 2008-07-07 2010-01-07 Texas Instruments Incorporated Direct memory access (dma) data transfers with reduced overhead
WO2010021120A1 (ja) * 2008-08-20 2010-02-25 パナソニック株式会社 通信装置、及び通信制御方法
US7853726B2 (en) * 2008-10-06 2010-12-14 International Business Machines Corporation FCP command-data matching for write operations
FR2952937B1 (fr) 2009-11-20 2013-02-08 Chaire Europeenne De Chimie Now Pour Un Developpement Durable Nouvelles resines de type phenoplastes obtenues a partir de composes phenoliques et de durcisseurs macromoleculaire portant des fonctions aldehydes
US8719843B2 (en) * 2011-07-27 2014-05-06 Intel Corporation Virtualizable and forward-compatible hardware-software interface
US8856479B2 (en) * 2012-04-20 2014-10-07 International Business Machines Corporation Implementing storage adapter performance optimization with hardware operations completion coalescence
US9727494B1 (en) * 2012-10-11 2017-08-08 Qlogic, Corporation Method and system for communication between a computing device and a peripheral device
US9298652B2 (en) * 2013-03-15 2016-03-29 Microsoft Technology Licensing, Llc Moderated completion signaling
KR102649324B1 (ko) * 2016-05-19 2024-03-20 삼성전자주식회사 적응 인터럽트 제어를 수행하는 컴퓨터 시스템 및 그것의 인터럽트 제어 방법
US10776289B2 (en) 2018-09-21 2020-09-15 Microsoft Technology Licensing, Llc I/O completion polling for low latency storage device
US10740258B2 (en) * 2018-10-23 2020-08-11 Microsoft Technology Licensing, Llc Timer-based I/O completion polling for low latency storage device
US11194503B2 (en) 2020-03-11 2021-12-07 Samsung Electronics Co., Ltd. Storage device having a configurable command response trigger
US12175125B2 (en) * 2021-10-20 2024-12-24 SanDisk Technologies, Inc. Data storage devices, systems, and related methods for grouping commands of doorbell transactions from host devices

Family Cites Families (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4268906A (en) 1978-12-22 1981-05-19 International Business Machines Corporation Data processor input/output controller
US5129064A (en) 1988-02-01 1992-07-07 International Business Machines Corporation System and method for simulating the I/O of a processing system
JPH0315941A (ja) * 1989-06-14 1991-01-24 Hitachi Ltd 半導体集積回路
EP0551191B1 (de) 1992-01-09 2000-04-12 Cabletron Systems, Inc. Vorrichtung und Verfahren zur Datenübertragung zu und von einem Wirtrechnersystem
JP2901882B2 (ja) * 1994-07-26 1999-06-07 株式会社日立製作所 計算機システムおよび入出力命令の発行方法
US5761427A (en) 1994-12-28 1998-06-02 Digital Equipment Corporation Method and apparatus for updating host memory in an adapter to minimize host CPU overhead in servicing an interrupt
US5689713A (en) 1995-03-31 1997-11-18 Sun Microsystems, Inc. Method and apparatus for interrupt communication in a packet-switched computer system
US5671365A (en) * 1995-10-20 1997-09-23 Symbios Logic Inc. I/O system for reducing main processor overhead in initiating I/O requests and servicing I/O completion events
US5892969A (en) 1996-03-15 1999-04-06 Adaptec, Inc. Method for concurrently executing a configured string of concurrent I/O command blocks within a chain to perform a raid 5 I/O operation
JP3586522B2 (ja) * 1996-09-26 2004-11-10 日本電気株式会社 周辺機器制御装置
US5881296A (en) 1996-10-02 1999-03-09 Intel Corporation Method for improved interrupt processing in a computer system
US6055603A (en) * 1997-09-18 2000-04-25 Emc Corporation Method and apparatus for performing pre-request operations in a cached disk array storage system
US6085277A (en) * 1997-10-15 2000-07-04 International Business Machines Corporation Interrupt and message batching apparatus and method
US6138176A (en) * 1997-11-14 2000-10-24 3Ware Disk array controller with automated processor which routes I/O data according to addresses and commands received from disk drive controllers
US6006340A (en) * 1998-03-27 1999-12-21 Phoenix Technologies Ltd. Communication interface between two finite state machines operating at different clock domains

Also Published As

Publication number Publication date
JP2002540526A (ja) 2002-11-26
EP1163595B1 (de) 2007-09-19
ATE373844T1 (de) 2007-10-15
US6434630B1 (en) 2002-08-13
AU4327800A (en) 2000-10-16
KR20010104732A (ko) 2001-11-26
KR100677538B1 (ko) 2007-02-01
DE60036465D1 (de) 2007-10-31
CA2367890C (en) 2007-05-29
WO2000058843A1 (en) 2000-10-05
CA2367890A1 (en) 2000-10-05
EP1163595A1 (de) 2001-12-19

Similar Documents

Publication Publication Date Title
DE60036465T2 (de) Rechneradapterkarte für die kombinierung von eingang-/ausgangfertigstellungsberichten und verwendung derselben
DE69130620T2 (de) Datenübertragungsadapter und Verfahren zu dessen Betrieb
DE69429279T2 (de) Multiprozessor-programmierbares unterbrechungskontrollersystem mit prozessor-integrierten unterbrechungskontrollern
DE69032862T2 (de) Intelligenter Ein-/Ausgabeprozessor und Datenverarbeitungssystem
DE69419680T2 (de) Skalierbare Unterbrechungsstruktur für ein Simultanverarbeitungssystem
DE69024753T2 (de) Tragbarer, Ressourcen teilender Datei-Server, der gemeinsame Routines benutzt
DE60108911T2 (de) Prozessorschnittstelle mit geringem overhead
DE69227939T2 (de) Gerätetreibersystem mit einer Schnittstelle zu einem generischen Betriebsystem
DE69429204T2 (de) Ablaufssteuerungsverfahren und -gerät für ein Kommunikationsnetzwerk
DE3586352T2 (de) Busarbiter fuer datenverarbeitungssystem mit einem ein-/ausgabekanal.
DE69225463T2 (de) Verfahren und Gerät zur Verschachtelung von mehrkanaligen DMA-Operationen
DE69724846T2 (de) Mehrweg-Ein/Ausgabespeichersysteme mit Mehrweg-Ein/Ausgabeanforderungsmechanismus
DE68919975T2 (de) Verfahren für die simultane Ablaufverwaltung eines verteilten Anwenderprogramms in einem Hostrechner und in einer grossen Anzahl von intelligenten Benutzerstationen in einem SNA-Netzwerk.
DE69222469T2 (de) Verfahren zur Verminderung der Restbandbreite eines Busses in einem Rechnersystem
EP0333123B1 (de) Modular strukturiertes ISDN-Kommunikationssystem
DE3688763T2 (de) Mehrfachport-Übertragungsadaptiervorrichtung.
DE69527623T2 (de) Dateiübertragungsmechanismus
DE69229716T2 (de) Schaltungsarchitektur zum mehrkanaligen DMA-Betrieb
DE69114961T2 (de) Vorrichtung für Zusammenschaltungskanäle.
DE102012209016B4 (de) System und Verfahren zur Weiterleitung von Fibre-Channel-Eingangs- und Ausgangsdaten
DE69628798T2 (de) Verfahren zur Übertragung von Multimediadaten
DE3852378T2 (de) Mechanismus und Verfahren zur entgegengesetzten Flussteuerung.
DE69534616T2 (de) System und Verfahren zum Verarbeiten von E/A-Anfragen über einen Schnittstellenbus zu einer Speicherplattenanordnung
DE102012208803B4 (de) System und Verfahren zur Weiterleitung von Fibre-Channel-Eingangs- und Ausgangsdaten
DE69825915T2 (de) Verfahren und vorrichtung zur umschaltung zwischen quellen-synchron-takt/- und gemeinsam-takt-datenübertragungs-modi in einem mehragent-übertragungs-system

Legal Events

Date Code Title Description
8364 No opposition during term of opposition