-
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.
-
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 direktem 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 Aussetzens 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 er folgen
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-Controller,
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 Portzu weisung 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, wann 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 eifern 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 aktive ports]) im Computersystem
vorhanden sind (Verarbeitungsblock 804).
-
Sind
keine aktuell aktiven Ports vorhanden, fahrt 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 Verarbei tungslogik 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
wurden 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.