-
GEBIET DER ERFINDUNG
-
Die Erfindung bezieht sich auf ein dynamisches Zuweisen von Ports an Host-Controller.
-
HINTERGRUND DER ERFINDUNG
-
Host-Controller sind in Computersystemen gebräuchlich. Viele Host-Controller steuern ein angeschlossenes Subsystem (z. B. einen Bus), der unter Verwendung eines bestimmten Protokolls betrieben wird. So benötigt beispielsweise ein Computersystem, welches ein Universal Serial Bus (USB) Input/Output (I/O) Subsystem verwendet, zumindest einen USB-Host-Controller. Andere Protokolle verwenden ihre eigenen Host-Controller, wie es u. a. bei Serial Advanced Technology Attachment (SATA) der Fall ist. Der Host-Controller kommuniziert mit kompatiblen Geräten, die am Host-Controller angeschlossen sind. Sehr häufig werden diese Geräte über Ports angeschlossen, wie dies bei USB der Fall ist. Diese Ports können externe Ports aufweisen, die eine physikalisch Plug-In-Schnittstelle am externen Gehäuse des Computersystems besitzen, sowie auch interne Ports für ständige Geräte, wie beispielsweise eine in einem Laptop-Computer integrierte Webcam.
-
Für viele Protokolle der Subsysteme, wie beispielsweise bei USB, ist die maximale Anzahl an Ports, die ein Host-Controller ansteuern kann, eingeschränkt. Verschiedene Versionen der USB-Implementation erlauben unterschiedliche Anzahlen von anzusteuernden Ports. Aufgrund der eingeschränkten Anzahl an Ports für einen einzelnen Host-Controller verfügen heutzutage viele moderne Computersysteme über mehrere Host-Controller für ein einziges Protokoll. Im Falle von USB 1.1 kann beispielsweise ein einzelner Host-Controller nur zwei Ports ansteuern. Im Falle von USB 2.0 kann ein einzelner Host-Controller bis zu acht Ports ansteuern. Benötigt ein Computersystem mehr als acht USB 2.0 Ports, benötigt das Computersystem mindestens zwei USB 2.0 Host-Controller, um den Anforderungen gerecht zu werden und eine gute Übertragungsbandbreite zu ermöglichen. Jeder Host-Controller, der im Computersystem betriebsfähig ist, benötigt Energie. Viele der heutigen modernen Computersysteme sind in der Lage, die Energiezufuhr für eine Komponente innerhalb des Computersystems zu steuern, indem die Komponente in einen Zustand mit einem geringeren Energiebedarf versetzt wird.
-
Aus der
US 6,728,801 B2 ist eine Vorrichtung mit einem Host-Controller bekannt, welche einer Rahmenliste eine Anzahl von Warteschlangenköpfen hinzufügt. Die Anzahl von Warteschlangenköpfen wird der Rahmenliste vor den Transaktionsdeskriptoren hinzugefügt. Dabei wird bestimmt, ob ein Warteschlangenkopf kleiner oder gleich einer vorbestimmten Paketgröße ist, und ob eine Periode größer oder gleich einem vorbestimmten Schedule-Fenster ist.
-
Ferner ist aus der
US 6,460,143 B1 eine Vorrichtung zum Aufwecken einer Busschaltung aus einem inaktiven Zustand bekannt. Die Busschaltung ist Teil eines Computersystems und wird zum Einsparen von Energie in einen inaktiven Zustand gefahren. Die Busschaltung ist mit einem Bus verknüpft und kann aus dem inaktiven Zustand aufweckt werden, wenn bestimmte Busereignisse auftreten.
-
Darüber hinaus ist aus der
JP 2000 010 907 A ein Prozessor mit einem USB-Port und einem USB-Host-Controller bekannt. Der USB-Host-Controller wird dabei abgeschaltet, wenn keine USB-Vorrichtung an den USB-Port angeschlossen ist.
-
KURZER ABRISS DER ERFINDUNG
-
Es ist die Aufgabe der Erfindung, einen energieeffizienteren Betrieb von Host-Controllern eines Computersystems zu ermöglichen. Diese Aufgabe wird durch das Verfahren gemäß Anspruch 1, das Gerät gemäß Anspruch 7 und das Computersystem gemäß Anspruch 13 gelöst. Bevorzugte Ausführungsformen sind in den abhängigen Ansprüchen beschrieben.
-
KURZE BESCHREIBUNG DER ZEICHNUNGEN
-
Die vorliegende Erfindung ist exemplarisch und in keiner Weise einschränkend durch die Zeichnungen dargestellt, in denen gleiche Bezugsnummern ähnliche Elemente bezeichnen und in denen Folgendes dargestellt ist:
-
1 zeigt die Ausführungsform eines aktuellen Computersystems mit zwei identischen Host-Controllern, die insgesamt 12 Ports steuern.
-
2 zeigt die Ausführungsform eines Computersystems mit dem Schema der dynamischen Portzuweisung.
-
3 zeigt die Ausführungsform eines Computersystems, welches mithilfe des Schemas der dynamischen Portzuweisung einen aktiven Port hinzufügt.
-
4 zeigt die Ausführungsform eines Computersystems, welches mithilfe des Schemas der dynamischen Portzuweisung aktive Ports bis zur maximal zulässigen Anzahl von Ports hinzufügt.
-
5 zeigt die Ausführungsform eines Computersystems, welches mithilfe des Schemas der dynamischen Portzuweisung alle aktiven Ports entfernt.
-
6 zeigt eine Ausführungsform des Kopplungsstrukturschaltplans der dynamischen Portzuweisung innerhalb eines Computersystems.
-
7 zeigt eine alternative Ausführungsform des Kopplungsstrukturschaltplans der dynamischen Portzuweisung innerhalb eines Computersystems.
-
8 ist ein Ablaufdiagramm einer Ausführungsform eines Prozesses zum dynamischen Zuweisen eines neuen aktiven Ports an einen Host-Controller für die Energieeffizienz eines Computersystems.
-
9 ist ein Ablaufdiagramm einer Ausführungsform eines Prozesses zum Deaktivieren eines Ports und zum Neuordnen der restlichen Portzuweisungen an den Host-Controller für die Energieeffizienz eines Computersystems.
-
DETAILBESCHREIBUNG DER ERFINDUNG
-
Ausführungsformen eines Verfahrens, eines Geräts, eines Systems und eines computerlesbaren Mediums für eine energieoptimierte dynamische Portzuweisung werden offenbart. Die Verweise in der folgenden Beschreibung und in den Schutzansprüchen auf „eine Ausführungsform” oder „die Ausführungsform” der offenbarten Technologien bedeuten, dass eine bestimmte in Verbindung mit der Ausführungsform beschriebene Funktion. Struktur oder Eigenschaft zumindest in einer Ausführungsform der offenbarten Technologien enthalten ist. Aus diesem Grund verweisen verschiedene Vorkommen des in dieser Spezifikation häufig verwendeten Ausdrucks „in einer Ausführungsform” nicht immer zwingend auf dieselbe Ausführungsform.
-
In der folgenden Beschreibung und in den Schutzansprüchen sind die verwendeten Begriffe „enthält” und „umfassend” sowie deren möglicherweise verwendeten Ableitungen als Synonyme zu verstehen. Zusätzlich können in der folgenden Beschreibung und in den Schutzansprüchen die Begriffe „gekoppelt” und „verbunden” und deren Ableitungen verwendet werden. Diese Begriffe sind jedoch nicht als Synonyme füreinander zu verstehen. Stattdessen kann in bestimmten Ausführungsbeispielen „verbunden” verwendet werden, um anzuzeigen, dass zwei oder mehr Elemente in direktem physischen oder elektrischen Kontakt miteinander stehen. „Gekoppelt” kann bedeuten, dass zwei oder mehr Elemente in direkten physischen oder elektrischen Kontakt sind. Jedoch kann „gekoppelt” auch bedeuten, dass zwei oder mehr Elemente nicht in direktem Kontakt miteinander sind, trotzdem aber miteinander arbeiten oder interagieren.
-
1 zeigt die Ausführungsform eines Computersystems mit zwei identischen Host-Controllern (Host-Controller 0, Element 100 und Host-Controller 1, Element 102), die insgesamt 12 Ports steuern. Die Ports 0–5 (P0–P5, Elemente 104, 106, 108, 110, 112 bzw. 114) werden vom Host-Controller 0 gesteuert, während die Ports 6–11 (P6–P11, Elemente 116, 118, 120, 122, 124 und 126) vom Host-Controller 1 gesteuert werden. Des Weiteren ist auch eine ältere Version eines Host-Controllers 2 (Element 128) abgebildet, die sich die Ports P0 und P1 mit dem Host-Controller 0 teilt.
-
In anderen, nicht abgebildeten Ausführungsformen kann eine Vielzahl von Host-Controllern vorhanden sein, wovon jeder eine bestimmte Anzahl Ports steuert. Das in 1 abgebildete aktuelle Computersystem enthält Verbindungsleitungen, die zwischen jedem Host-Controller fest verdrahtet sind, wodurch die Ports permanent dem jeweiligen Host-Controller zugeordnet sind. In vielen Ausführungsformen beschreibt einen Port, der einem Host-Controller „dauerhaft zugeordnet” ist, einen Port, der direkt mit einem bestimmten Host-Controller verdrahtet ist. Mit anderen Worten kann der Port aufgrund der direkten Controller-zu-Port-Drahtverbindungsstruktur nicht durch einen anderen Host-Controller des gleichen Protokolls im gleichen Computersystem gesteuert werden. Obwohl jede Vergbindung aus mehrere elektrische und/oder optische Leitungen zur Daten-, Adress-, Steuersignal- und Taktsignalübertragung umfassen kann, die zwischen dem Host-Controller und dem Port in beiden Richtungen stattfindet, wird die gesamte Verbindung einer Controller-Port-Paarung durch eine einzelne Leitung in 1 dargestellt.
-
In einem aktuellen Computersystem, bei dem mindestens ein Port, der dauerhaft einem Host-Controller zugeordnet ist, an einer Vorrichtung angeschlossen ist (beispielsweise ein USB-Drucker im Falle eines USB-Host-Controllers), muss der Host-Controller vollständig hochgefahren und betriebsbereit sein. Sind alternativ dazu keine mit irgendeinem der Ports angeschlossen und somit die Ports im Leerlauf, kann ein Computersystem mit einer modernen Energiesparfunktionen Teile des oder den gesamten untätigen Host-Controller herunterfahren. Zu diesen Energiesparfunktionen können das Clock-Gating oder das Power-Gating von Teilen oder des gesamten Host-Controllers gehören. Zu diesen jeweils spezifischen Energiesparfunktionen können alternativ auch andere Energiesparprozesse gehören, über die Computersysteme heutzutage verfügen. Der Begriff „Herunterfahren” bezieht sich auf eine oder mehrere dieser Energiesparfunktionen, die für einen Host-Controller im Leerlauf implementiert sind. Wird der Host-Controller heruntergefahren, benötigt das Computersystem weniger Gesamtenergie, was die Energiekosten senkt, die Lebensdauer der Batterie in einem mobilen Computersystem erhöht und die Anforderungen für thermische Lösungen in jedem Computersystem senkt. Demgegenüber bezieht sich der Begriff „Hochfahren” auf den gegenteiligen Effekt des Aussetzers bzw. Deaktivierens der einen bzw. mehrerer Energiesparfunktionen, welche den Energieverbrauch des Host-Controllers begrenzt.
-
Aufgrund einer dauerhaften Zuweisung von Ports an einen Host-Controller kann ein modernes Computersystem lediglich zwei Ports aktiv geschaltet haben, muss aber dennoch zwei Host-Controller im vollständigen Betrieb halten. Wird beispielsweise, wie in 1 dargestellt, ein erstes Gerät an P0 und ein zweites Gerät an P6 angeschlossen, müssen sowohl der Host-Controller 0 als auch der Host-Controller 1 hochgefahren bleiben, um den Betrieb beider Geräte zu ermöglichen. Speziell in dem in 1 dargestellten Beispiel sind die aktiven Ports mit weißem Hintergrund und die inaktiven Ports gestrichelt dargestellt. Des Weiteren sind alle Verbindungsleitungen, die vom Host-Controller zu jedem inaktiven Port verlaufen, gepunktet dargestellt, wodurch gezeigt wird, dass sie aktuell nicht verwendet werden. P0, P2 und P5 sind aktiv und somit ist der Host-Controller 0 hochgefahren, und P6, P9 und P11 sind aktiv und daher ist Host-Controller 1 hochgefahren.
-
Der Begriff „zugewiesen” und dessen Ableitungen beziehen sich im Kontext einer Portzuweisung an einen Host-Controller auf eine Kommunikationsverbindung zwischen einem Port und einem Host-Controller, sodass diese während des Betriebs miteinander kommunizieren/sprechen können. Dieser Vorgang kann mittels einer Aufzählung der Geräte erfolgen oder über andere vorhandene Vorgehensweisen, wenn Geräte mit den Ports eingesteckt sind. Wenn ein Gerät hingegen von einem Port ausgesteckt oder in einem Port deaktiviert ist, wird der Port inaktiv, da das Gerät nicht mehr mit dem Host-Controller kommuniziert. Aus diesem Grund benötigt der Host-Controller keine Verbindung mit dem jeweiligen Port und die Zuordnung des Ports an den Host-Controller kann im Wesentlichen „aufgehoben” werden.
-
Im Hinblick auf den Energieverbrauch ist der Zustand des in 1 abgebildete Computersystem ineffizient, da nur sechs Ports aktiv sind, wodurch es möglich wäre einen der beiden Host-Controller herunterzufahren, wenn alle aktiven Ports nur einem einzigen Host-Controller zugeordnet wären. Damit dies erreicht werden kann, müssten die aktiven Ports P6, P9 und P11 ihre Zuordnung von dem Host-Controller 1 zu dem Host-Controller 0 ändern oder die aktiven Ports P0, P2 und P5 müssten ihre Zuordnung von dem Host-Controller 0 zu dem Host-Controller 1 ändern. Dies ist aufgrund des dauerhaften Zuordnungsschemas in modernen Computersystemen, wie in 1 dargestellt, nicht möglich.
-
2 zeigt die Ausführungsform eines Computersystems mit einem Schema der dynamischen Portzuweisung. Die in 1 dargestellten aktiven Ports sind auch in 2 als aktive Ports dargestellt. Allerdings kann der Host-Controller 0 jetzt jedem der zwölf Ports (P0–P11) im Computersystem dynamisch zugeordnet werden. Somit kann der Host-Controller 0 die sechs aktiven Ports (P0, P2, P5, P6, P9 und P11) steuern und infolgedessen kann der Host-Controller 1 heruntergefahren werden (der Host Controller 1 ist im heruntergefahrenen Zustand gestrichelt dargestellt.)
-
Die Portzuweisungslogik 200 ist in 2 als Zwischenglied zwischen dem Host-Controller 0 und den zugewiesenen Ports dargestellt. Die Portzuweisungslogik 200 kann einen Port jedem beliebigen Host-Controller dynamisch zuweisen (d. h. verbinden). Alle Verbindungen, die zwischen jedem Host-Controller und den Portsverlaufen, führen durch die Portzuweisungslogik, die wie eine Art Multiplexer/Demultiplexer funktioniert, wodurch jedem Host-Controller ein Verbindungsport zu jedem Port in den Computersystemen ermöglicht wird. Die Ausführungsformen der spezifischen Implementation der Schaltung zwischen den Host-Controllern, der Portzuweisungslogik und den Ports selbst sind in den 6 und 7 dargestellt.
-
Die Portzuweisungslogik 200 kann in verschiedenen Ausführungsformen, beispielsweise ein diskreter Chip innerhalb des Computersystems sein, sie kann in einen I/O-Komplex eingebunden sein, der die integrierten Host-Controller enthält, oder sie kann in Software oder Mikrocode implementiert sein, die von einem Mikrocontroller für die Portzuweisung verwendet werden. Die Software oder den Mikrocode kann in einem Gerät des Computersystems abgespeichert werden.
-
In einigen Ausführungsformen sind die Verbindungen 202 und 204 vorhanden. welche es der Portzuweisungslogik 200 ermöglichen, Informationen an den jeweiligen Host-Controller zu senden, wann es hochfahren muss und wann er herunterfahren darf.
-
3 zeigt die Ausführungsform eines Computersystems, welches mithilfe des Schemas der dynamischen Portzuweisung einen aktiven Port hinzufügt. Wie bereits oben erwähnt, stellen die Ausführungsformen in 1 und 2 den Host-Controller 0 und den Host-Controller 1 mit einer maximalen Steuermöglichkeit von jeweils sechs Ports dar. In 2 steuert Host-Controller 0 insgesamt sechs Ports. 3 beschreibt den Fall, der bereits mit der Situation in 2 beginnt, und worauf ein neu aktivierter Port zur Liste der aktiven Ports hinzugefügt wird. Der Begriff „neu aktiviert” bezieht sich auf einen Port, der zuvor im Ruhezustand war und durch ein Ereignis aus dem Ruhezustand genommen wurde und aktiv ist. Dies ist beispielsweise der Fall, wenn eine Person ein Gerät an einen externen Port anschließt, was dazu führt, dass der Port neu aktiviert wird.
-
In anderen, nicht in 3 abgebildeten Fällen kann die Portzuweisungslogik 200 den neuen aktiven Port dem gleichen Host-Controller zuordnen, der bereits aktiviert und in Betrieb ist, wenn aktuell weniger als sechs Ports aktiv sind und ein neuer aktiver Port hinzukommt. Im speziellen Fall, der in 3 abgebildet ist, wird der Host-Controller 0 bereits mit der maximal möglichen Anzahl von sechs aktiven Ports betrieben und ein siebenter Port wird hinzugefügt. In diesem Fall wird der Host-Controller 1 von der Portzuweisungslogik 200 informiert, aufzuwachen und in einen voll betriebsfähigen Zustand einzutreten, da der Port P4 neu aktiviert wurde. Dadurch wacht der Host-Controller 1 auf und anschließend ordnet die Portzuweisungslogik 200 Port P4 dynamisch dem Host-Controller 1 zu.
-
Der Prozess innerhalb des Betriebssystems zur Bestimmung, warm ein Gerät bei laufendem Computer in einen Port eingesteckt wurde (sog. „Hot-Plugging”), nimmt normalerweise die Größenordnung von Sekunden in Anspruch, bevor das Gerät betriebsbereit ist. Intern benötigt das Verfahren, das den Host-Controller aus dem heruntergefahrenen Zustand bringt (egal ob mit Clock-Gate, Power-Gate usw.) in der Größenordnung von Mikrosekunden oder im schlimmsten Fall Millisekunden. Aus diesem Grund wird in vielen Ausführungsformen die Verzögerungszeit zum Hochfahren eines Host-Controllers, der heruntergefahren war, aus dem Ruhezustand durch die höhere Verzögerungszeit des Betriebssystems überlagert, die für eine Inbetriebnahme eines Hot-Plugged-Geräts erforderlich ist.
-
4 beschreibt die Ausführungsform eines Computersystems, welches mithilfe eines Schemas der dynamischen Portzuweisung aktive Ports bis zur maximal zulässige Anzahl an Ports hinzufügt. In 4 werden die in 3 dargestellten restlichen inaktiven Ports aktiv und werden dem Host-Controller 1 zugewiesen. Hier werden dem Host-Controller 1 speziell die Ports P1, P3, P4, P7, P8 und P10 zugewiesen.
-
Obwohl das in 4 dargestellte Szenario durch die ersten sechs aktiv gewordenen Ports vorgegeben wurde, bedeutet das nicht, dass die Ports P0, P2, P5, P6, P9 und P11 immer dem Host-Controller 0 oder die Ports P1, P3, P4, P7, P8 und P10 immer dem Host-Controller 1 zugewiesen werden. Kehren wir beispielsweise zu 3 zurück, in der sieben Ports aktiv sind. Wird nun Port P6 inaktiv, würde die Portzuweisungslogik 200 erkennen, dass nur noch sechs Ports aktiv sind. Als Resultat würde dann in vielen Ausführungsformen die Portzuweisungslogik 200 die Zuordnung von P4 vom Host-Controller 1 auf den Host-Controller 0 übertragen. Nachdem der Zuweisungstransfer stattgefunden hat, wäre die Portzuweisungslogik 200 wieder in der Lage, den Host-Controller 1 herunterzufahren.
-
5 zeigt die Ausführungsform eines Computersystems, welches mithilfe eines Schemas der dynamischen Portzuweisung alle aktiven Ports entfernt. Im Gegensatz dazu zeigt 5 das andere Ende des Spektrums, bei dem keinerlei Ports aktuell aktiv sind. In diesem Szenario kann sowohl der Host-Controller 0 als auch der Host-Controller 1 heruntergefahren werden.
-
6 zeigt die Ausführungsform der dynamischen Portzuweisung und das Verbindungsschaltungsstruktur innerhalb eines Computersystems. In dieser Ausführungsform sind zwölf Ports (P0–P11) im Computersystem vorhanden. Jeder der zwölf Ports verfügt über eine Verbindung (604–626), die den Port mit der Portzuweisungslogik 200 koppelt. P0 ist durch die Verbindung 604 gekoppelt, P1 ist durch die Verbindung 606 gekoppelt usw. Darüber hinaus besitzt jeder Host-Controller in dieser Ausführungsform 12 Verbindungen (Element 600 für den Host-Controller 0 und Element 602 für den Host-Controller 1) zu sich selbst und zur Portzuweisungslogik 200. Somit kann die Portzuweisungslogik 200 jeden Port (und jede zugewiesene Verbindungen, die von einem Port kommt) dynamisch mit einem Host-Controller paaren unter Verwendung einer der 12 speziellen Verbindungen, die den Host-Controller mit der Portzuweisungslogik 200 koppeln.
-
7 zeigt eine alternative Ausführungsform der Verbindungsschaltstrukturen der dynamischen Portzuweisung innerhalb eines Computersystems. In dieser Ausführungsform sind wieder zwölf Ports (P0–P11) im Computersystem vorhanden. Jeder der zwölf Ports verfügt über eine Verbindung (604–626), die den Port mit der Portzuweisungslogik 200 koppelt. Zusätzlich besitzt jeder Host-Controller in dieser Ausführungsform sechs Verbindungen (Element 700 für den Host-Controller 0 und Element 702 für den Host-Controller 1) zu sich selbst und zur Portzuweisungslogik 200. Somit kann die Portzuweisungslogik 200 einen Port (und die zugewiesene Verbindung, die von einem Port kommt) dynamisch mit einem Host-Controller paaren unter Verwendung einer der sechs speziellen Verbindungen, die den Host-Controller mit der Portzuweisungslogik 200 koppeln. Die Anzahl der Verbindungen, die jeden Host-Controller mit der Portzuweisungslogik 200 koppeln, ist auf sechs beschränkt, da jeder Host-Controller nur sechs Ports steuern kann. Somit sind zu jeder Zeit nur sechs Verbindungen erforderlich, und jede von diesen kann zu einem speziellen der zwölf Ports geleitet (d. h. diesem zugewisesen) werden.
-
8 ist ein Ablaufdiagramm der Ausführungsform eines Prozesses, der einen neuen aktiven Port dynamisch einem Host-Controller zur Energieeffizienz eines Computersystems zuweist. Dieser Prozess erfolgt durch eine Verarbeitungslogik, die eine Hardware, eine Software oder einer Kombination aus beidem sein kann. Weiterführend in 8 beginnt der Prozess durch die Verarbeitungslogik, die bestimmt, ob ein neuer aktiver Port im Computersystem vorhanden ist (Verarbeitungsblock 800). Wurde kein neuer aktiver Port gefunden, kehrt die Verarbeitungslogik zurück und versucht weiterhin zu bestimmen, ob ein neuer aktiver Port in dem Computersystem aktiviert wurde.
-
Erkennt die Verarbeitungslogik, dass ein neuer aktiver Port vorhanden ist, wird zunächst die Gesamtzahl der derzeit aktiven Ports im Computersystem (Verarbeitungsblock 802) ermittelt. Dies bestimmt insbesondere die Gesamtzahl der aktuell aktiven Ports, bevor der neue aktive Port aktiviert wurde. Die Verarbeitungslogik nutzt dieses Ergebnis, um zu prüfen, ob aktuell aktive Ports (CAP [currently active ports]) im Computersystem vorhanden sind (Verarbeitungsblock 804).
-
Sind keine aktuell aktiven Ports vorhanden, fährt die Verarbeitungslogik den Host-Controller 0 hoch (d. h. den ersten Host-Controller des Systems) (Verarbeitungsblock 806). Nachdem der Host-Controller 0 hochgefahren wurde, weist die Verarbeitungslogik den neuen aktiven Port mit Host-Controller 0 zu (Verarbeitungsblock 808) und der Vorgang ist abgeschlossen.
-
Zurück zu Block 804: Befinden sich aktuell aktive Ports bereits in Betrieb, bestimmt die Verarbeitungslogik, ob die Gesamtzahl der aktuell aktiven Ports kleiner als die maximale Anzahl zugewiesener Ports vom Host-Controller 0 ist (Verarbeitungsblock 810). Ist die Anzahl kleiner als die maximale Kapazität des Host-Controllers 0, verbindet die Verarbeitungslogik den neuen aktiven Port mit Host-Controller 0 (Verarbeitungsblock 808) und der Vorgang ist abgeschlossen.
-
Zurück zu Block 810: Liegt die Anzahl der aktuell aktiven Ports nicht unter der maximalen Kapazität des Host-Controllers 0, dann ermittelt die Verarbeitungslogik, ob die Anzahl der aktuell aktiven Ports gleich der maximal möglichen Anzahl an zugewiesenen Ports des Host-Controllers 0 ist (Verarbeitungsblock 812). Ist diese Anzahl gleich der maximalen Kapazität des Host-Controllers 0, fährt die Verarbeitungslogik den Host-Controller 1 hoch (d. h. den zweiten Host-Controller des Systems) (Verarbeitungsblock 814). Sobald der Host-Controller 1 hochgefahren wurde, weist die Verarbeitungslogik den neuen aktiven Port dem Host-Controller 1 zu (Verarbeitungsblock 816) und der Vorgang ist abgeschlossen.
-
Zurück zu Block 812: Ist die Anzahl der aktuell aktiven Ports ungleich der maximalen Kapazität des Host-Controllers 0, kann davon ausgegangen werden, dass die Anzahl der aktuell aktiven Ports größer als die maximal Kapazität des Host-Controllers 1 ist. Dies bedeutet, dass der Host-Controller 1 bereits in Betrieb sein muss. Folglich weist die Verarbeitungslogik den neuen aktiven Port dem Host-Controller 1 zu (Verarbeitungsblock 816) und der Vorgang ist abgeschlossen.
-
Obwohl dieser Vorgang speziell mit Bezug auf zwei Host-Controller dargestellt wurde, kann er erweitert werden, um eine beliebige Anzahl von mehr als zwei Host-Controller aufzunehmen, mit verschiedenen nahe liegenden Modifikationen in der Verarbeitungslogik des Prozessors.
-
9 ist ein Ablaufdiagramm einer Ausführungsform eines Verfahrens, das einen Port deaktiviert und die restlichen Portzuweisungen an den Host-Controller dynamisch neu ordnet für die Energieeffizienz in dem Computersystem. Dieser Prozess erfolgt durch eine Verarbeitungslogik, die aus Hardware. Software oder einer Kombination aus beidem sein kann. Weiterführend in 9 beginnt der Prozess durch die Verarbeitungslogik, die bestimmt, ob ein Port im Computersystem deaktiviert wurde (Verarbeitungsblock 900). Ein Port kann aus vielerlei Gründen deaktiviert werden, beispielsweise wenn eine Person das Gerät aus dem Port aussteckt. Wurde kein Port deaktiviert, kehrt die Verarbeitungslogik zurück und versucht weiterhin zu ermitteln, ob ein Port in dem Computersystem deaktiviert wurde.
-
Erkennt die Verarbeitungslogik, dass ein Port deaktiviert wurde, wird zunächst die Gesamtzahl der derzeit aktiven Ports im Computersystemermittelt, nachdem die Deaktivierung des Ports stattgefunden hat (Verarbeitungsblock 902). Die Verarbeitungslogik nutzt dieses Ergebnis, um zu prüfen, ob weitere aktuell aktive Ports (CAP) im Computersystem vorhanden sind (Verarbeitungsblock 904).
-
Sind keine aktuell aktiven Ports vorhanden, fährt die Verarbeitungslogik den Host-Controller 0 herunter (d. h. den ersten Host-Controller des Systems) (Verarbeitungsblock 906). Nachdem sich Host-Controller 0 heruntergefahren ist, ist der Vorgang abgeschlossen.
-
Zurück zu Block 904: Befinden sich aktuell aktive Ports in Betrieb, bestimmt die Verarbeitungslogik, ob die Gesamtzahl der aktuell aktiven Ports gleich der maximalen Anzahl der möglichen zugewiesener Ports des Host-Controllers 0 ist (Verarbeitungsblock 908). Ist die Anzahl der ermittelten aktuell aktiven Ports ungleich der maximalen Kapazität des Host-Controllers 0, dann geht die Verarbeitungslogik davon aus, dass es mehr oder weniger als die maximale mögliche Anzahl an zugewiesenen Ports des Host-Controllers 0 gibt. In diesem Fall müssen die Betriebszustände der Host-Controller nicht verändert werden, da der/die hochgefahrenen Host-Controller weiterhin hochgefahren bleiben müssen, um die aktuell verwendeten Ports des Computersystems betreiben zu können. Ist somit die Anzahl der aktuell aktiven Ports ungleich der maximalen Kapazität des Host-Controllers 0, ist der Vorgang abgeschlossen.
-
Ist hingegen die Anzahl der ermittelten aktuell aktiven Ports gleich der maximalen Kapazität des Host-Controllers 0, dann wird durch die Verarbeitungslogik ermittelt, ob dem Host-Controller 1 bereits aktuell aktive Ports zugewiesen wurden (Verarbeitungsblock 910). Sind der Host-Controller 1 keine aktuell aktiven Ports zugewiesen, deaktiviert die Verarbeitungslogik den Host-Controller 1 (Verarbeitungsblock 914) und der Vorgang ist abgeschlossen.
-
Zurück zu Block 910: Ist dem Host-Controller 1 nur noch ein Port zugewiesen, überträgt die Verarbeitungslogik die Zuweisung aller aktuell aktiven Ports vom Host-Controller 1 auf den Host-Controller 0 (Verarbeitungsblock 912). Kehren wir beispielsweise zu 3 zurück, in der sieben Ports aktiv sind. Wird nun Port P6 inaktiv, würde die Verarbeitungslogik 200 dies erkennen und feststellen, dass nur noch sechs Ports aktiv sind. Als Resultat würde dann in vielen Ausführungsformen die Verarbeitungslogik 200 die Zuweisung von Port 4 vom Host-Controller 1 auf den Host-Controller 0 übertragen.
-
Nachdem alle Zuweisungen auf den Host-Controller 0 übertragen wurden, sind dem Host-Controller 1 keine aktiven Ports mehr zugewiesen. Somit kann die Verarbeitungslogik den Host-Controller 1 herunterfahren (Verarbeitungsblock 914) und der Vorgang ist abgeschlossen.
-
Obwohl dieser Vorgang wiederum mit Bezug auf zwei spezielle Host-Controllern dargestellt wurde kann er erweitert werden, um eine beliebige Anzahl von mehr als zwei Host-Controllern aufzunehmen, mit verschiedenen naheliegenden Modifikationen in der Verarbeitungslogik.
-
Somit wurden Ausführungsformen eines Verfahrens, eines Geräts, eines Systems und eines computerlesbaren Mediums für eine energieoptimierte dynamische Portzuweisung offenbart. Die hier beschriebenen Ausführungsformen werden mit Bezug auf bestimmte beispielhafte Ausführungsformen erläutert. Es ist für Personen, die Einsicht in diese Offenbarung haben, offensichtlich, dass verschiedene Anpassungen und Veränderungen an diesen Ausführungsformen vorgenommen werden müssen, ohne dabei im weiteren Sinne und dem Umfang der hierin beschriebenen Ausführungsformen abzuweichen. Die Beschreibung und die Zeichnungen sind demgemäß als exemplarische Darstellung, jedoch nicht in einem einschränkenden Sinne, anzusehen.