PL180098B1 - Sposób sterowania systemem komputerowym PL PL PL PL PL PL PL PL - Google Patents
Sposób sterowania systemem komputerowym PL PL PL PL PL PL PL PLInfo
- Publication number
- PL180098B1 PL180098B1 PL95319043A PL31904395A PL180098B1 PL 180098 B1 PL180098 B1 PL 180098B1 PL 95319043 A PL95319043 A PL 95319043A PL 31904395 A PL31904395 A PL 31904395A PL 180098 B1 PL180098 B1 PL 180098B1
- Authority
- PL
- Poland
- Prior art keywords
- state
- cpu
- suspend
- power
- microcontroller
- Prior art date
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F1/00—Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
- G06F1/26—Power supply means, e.g. regulation thereof
- G06F1/30—Means for acting in the event of power-supply failure or interruption, e.g. power-supply fluctuations
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F1/00—Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
- G06F1/26—Power supply means, e.g. regulation thereof
- G06F1/32—Means for saving power
- G06F1/3203—Power management, i.e. event-based initiation of a power-saving mode
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F1/00—Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
- G06F1/26—Power supply means, e.g. regulation thereof
- G06F1/32—Means for saving power
- G06F1/3203—Power management, i.e. event-based initiation of a power-saving mode
- G06F1/3234—Power saving characterised by the action undertaken
- G06F1/325—Power saving in peripheral device
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Power Sources (AREA)
Abstract
1 . S p o s ó b sterow ania syste m e m komputerowym, zaw ierajacym jednostke centralna do wykonywania kodu i uruchamia- n i a co najmniej dwóch system ów operacyjnych, z których kazdy m a zwiazany z nim sterownik z a a w a n so w a n e g o za rza d za- nia zasilaniem , sterujacy wykonywaniem kodu w jednostce centralnej w danym cza sie , przy czym sy s te m zawiera ponadto zasilacz, jednostke zarzadzania zasilaniem , przelacznik i u rz a d z e n ie zew n e trzne , oraz dziala w dowolnym, wybranym jed- nym z czte rech sta n ó w za rzadzania zasilaniem, mianowicie w sta n ie norm alnym , w którym kod jest wykonywany normalnie p rze z s y s te m kom puterowy oraz zasilacz jest w pierwszym s ta n ie i urza d zen ie zew netrzne jest w sta n ie d u zego zuzycia e n e r- gii elektrycznej, w sta n ie gotowosci, w którym zasilacz jest w pierw szym sta n ie i urzadzenie zew netrzne jest w stanie m a lego zuzycia energii elektrycznej, w stanie zaw ieszenia, w którym zasilacz jest w drugim stanie i w stanie wylaczenia, przy czym p o d c z a s sterow ania zm ienia sie sta n y zarzadzania zasilaniem s y s te m u kom puterow ego przez jednostke zarzadzania zasila- nie m w odpow iedzi n a c o najmniej jedno z wielu w stepnie w ybranych zd a rze n , przerywa sie odwracalnie wykonywanie kodu w jednostce centralnej p rze d w prowadzeniem sta n u z a w ie sze n ia , tak z e wykonywanie kodu w jednostce centralnej podejmu- je s ie n a now o p o zm ianie s ta n u zasilacza n a pierwszy s ta n , steruje s ie jednostka zarzadzania zasilaniem i zmienia s ie s ta n s y - s te m u ko m p u te ro w eg o n a s ta n norm alny w odpowiedzi n a za m kn ie cie przelacznika, jezeli jednostka zarzadzania zasilaniem jest w sta n ie gotow osci lub stanie zaw ieszenia lub sta n ie w ylaczenia, po czym zmienia sie s ta n zuzycia energii w urzadzeniu zew netrznym pom iedzy sta n e m d u zeg o zuzycia energii elektrycznej i s ta n e m m alego zuzycia energii elektrycznej w odpo- wiedzi n a sygnal z jednostki zarzadzania zasilaniem, znamienny tym, z e koordynuje sie przejscia pomiedzy sta n a m i za rza d zan ia zasilaniem przez jednostke centralna (40) przy pom ocy sterownika z a a w a n so w a n e g o za rzadzania zasilaniem , sterujacego w ykonywaniem kodu w jednostce centralnej (40), realizuje sie zm iane pomiedzy sta n a m i zarzadzania zasilaniem syste m u kom puterow ego (10), p o d c z a s gdy co najm niej jeden sterownik za a w a n s o w a n e g o zarzadzania zasilaniem syste m u operacyjnego jest aktywny, opóznia sie zm iane pom iedzy s ta n a m i za rza d zan ia zasilaniem syste m u kom puterowego (10) p rze z jednostke z a rza d zan ia zasilaniem (174), p o d c z a s gdy z a d e n z e sterowników z a a w a n so w a n e g o zarzadzania zasilaniem s yste m u op eracyjn e go nie jest aktywny p o dcza s okresu c z a s u , gdy sterow anie wykonywaniem jest p rze n oszo n e pom iedzy system am i operacyjnym i, a z co najm niej jeden sterownik z a a w a n s o w a n e g o za rzadzania zasilaniem system u operacyjnego sta n ie s ie aktywny, o ra z zmienia s ie s ta n pomiedzy pierw szym i drugim s ta n e m zasilacza (17) w odpowiedzi n a sygnal z jed nostki z a rza d zan ia zasilaniem (174), p o czym przerywa s ie odw racalnie wykonywanie kodu w jednostce centralnej (40) prze d w prow adzeniem s ta n u wylaczenia, z a s zasilacz (17) w prow adza sie w drugi s ta n , jezeli s y s te m komputerowy (10) dziala w sta n ie w ylaczenia. PL PL PL PL PL PL PL PL
Description
Przedmiotem wynalazku jest sposób sterowania systemem komputerowym, zwłaszcza systemem komputerowym mającym kilka stanów gospodarowania zasilaniem oraz jednostkę sterowania przejściami między różnymi stanami.
Systemy komputerów osobistych PC znalazły szerokie zastosowanie, zapewniając moc obliczeniową dla wielu dziedzin życia dzisiejszego, nowoczesnego społeczeństwa. Zwykle komputery PC mogą być określane, jako mikrokomputer stołowy (biurkowy), mikrokomputer wolnostojący lub przenośny, składający się z pojedynczej jednostki centralnej CPU (Central Processing Unit) ze stowarzyszoną pamięcią nietrwałą albo trwałą, włączając w to wszystkie pamięci typu RAM i BIOS RAM, a także składający się z monitora systemowego, klawiatury, jednego lub więcej napędów dyskietek, napędu pamięci dysku stałego (znanego również pod nazwą napędu dysku stałego), urządzenia wskazującego zwanego „myszką” oraz z opcjonalnej drukarki. Jedną z cech wyróżniających te systemy jest zastosowanie płyty głównej lub planaru systemowego do elektrycznego połączenia tych elementów składowych ze sobą. Systemy te są zaprojektowane przede wszystkim w celu zapewnienia pojedynczemu użytkownikowi niezależnej mocy obliczeniowej, przy czym są one stosunkowo niedrogie, dla umożliwienia ich nabywania przez osoby fizyczne lub małe firmy.
Zwykłe systemy komputerów osobistych są używane do uruchamiania oprogramowania, realizującego takie różnorodne działania jak przetwarzanie tekstu, manipulowanie danymi poprzez arkusze kalkulacyjne, gromadzenie danych i ustalanie relacji między nimi w bazach danych, wyświetlanie grafiki, projektowanie systemów elektrycznych i mechanicznych przy użyciu oprogramowania do projektowania systemów itd.
Z europejskich opisów patentowych nr nr 0635778, 0636964 i 0636978 znany jest system komputerowy mający cztery stany gospodarowania zasilaniem: normalny stan operacyjny, stan gotowości (oczekiwania), stan zawieszenia, stan wyłączenia. Do przełączania między stanami wyłączenia, normalnego stanu operacyjnego i zawieszenia używa się jednego przełącznika.
W opisie patentowym EP nr 0565914 ujawniony jest system komputerowy mający pewną liczbę niezależnie sterowanych płaszczyzn zasilania, które są zasilane selektywnie tak, że system komputerowy zużywa minimum mocy, koniecznej do wykonania określonej funkcji.
Z kolei w publikacji nr WO 92/21081 zgłoszenia międzynarodowego jest ujawniony system, w którym w odpowiedzi na określone wcześniej warunki takie jak, żądanie wejścia do trybu zawieszania, jednostka centralna CPU steruje zasilaczem i odbiera z niego zasilanie pomocnicze.
Pewnym krytycznym aspektem zawieszania/wznawiania działania systemu jest akceptacja użytkownika. Jeśli użytkownik stwierdzi, że interfejs użytkownika używany do przechodzenia między różnymi stanami jest nieporęczny lub dezorientujący, to może nawet nie skorzystać z dodatkowych właściwości oszczędzania poboru mocy przez system. Znany system, ujawniony w europejskim opisie patentowym nr 0635778 zatytułowanym „Komputer biurkowy wyposażony w fimkcję zawieszania/wznawiania opartą o pojedynczy przełącznik”, dokonał znacznego postępu w zmniejszeniu dezorientacji użytkowników, towarzyszącej przechodzeniu między stanami gospodarowania zasilaniem. Jednakże w tamtym systemie w odpowiedzi na naciśnięcie przycisku mocy, system mógł zużyć dziesiątki sekund, aby zawiesić swe działanie. To co jest potrzebne, to metoda natychmiastowego zawieszenia systemu po naciśnięciu przycisku mocy wyłącznika.
Pewnym problemem przy natychmiastowym zawieszaniu jest to, ze sterowniki udoskonalonego gospodarowania zasilaniem (APM), na których opiera się działanie systemu, mają
180 098 okresy czasu, w których żaden sterownik APM nie jest aktywny. W szczególności, w środowisku DOS/Windows są sytuacje, gdy jeden sterownik urządzenia APM odłączył się, a następny sterownik APM jeszcze się nie dołączył, np. kiedy system komputerowy dokonuje zmiany systemu operacyjnego z DOS-a na Windows lub z powrotem albo gdy system komputerowy zmienia system operacyjny z Windows Standard Modę (Tryb Standardowy Windows) na pełnoekranową sesję DOS-a, przy czym każde z tych przejść jest bardzo popularne, wtedy w pokryciu APM powstaje przerwa między chwilą odłączenia się jednego sterownika APM, a chwilą ponownego dołączenia się innego sterownika APM.
Inny problem z interfejsem użytkownika powstaje czasami w trakcie stanu gotowości, gdy ekran monitora jest wygaszony. Użytkownik, zbliżający się do systemu może zauważyć, że ekran monitora jest wygaszony i myśląc, że system jest w stanie zawieszenia lub wyłączenia, może nacisnąć przycisk mocy zasilania, aby spróbować wprowadzić system do normalnego stanu operacyjnego. Jeśli naciśnięcie przycisku mocy spowoduje wejście systemu do stanu zawieszenia albo do stanu wyłączenia, to powyższy użytkownik wyłączy lub zawiesi komputer, co jest akurat odwrotne do jego intencji. Inny problem z interfejsem użytkownika powstaje, gdy system jest albo w stanie zawieszenia, albo w stanie wyłączenia po tym, jak został odebrany faks lub jakaś poczta głosowa (zakładając, że używa się oprogramowania i modemu poczty głosowej), przy czym jeśli komputer od tamtej chwili sam się wyłączył lub zawiesił, to użytkownik nie ma aktualnie sposobu, aby dowiedzieć się, że jakaś pozycja została odebrana i czeka na przetwarzanie.
Istotą sposobu sterowania systemem komputerowym, według wynalazku, zawierającym jednostkę centralną do wykonywania kodu i uruchamiania co najmniej dwóch systemów operacyjnych, z których każdy ma związany z nim sterownik zaawansowanego zarządzania zasilaniem, sterujący wykonywaniem kodu w jednostce centralnej w danym czasie, przy czym system zawiera ponadto zasilacz, jednostkę zarządzania zasilaniem, przełącznik i urządzenie zewnętrzne, oraz działa w dowolnym, wybranym jednym z czterech stanów zarządzania zasilaniem, mianowicie w stanie normalnym, w którym kod jest wykonywany normalnie przez system komputerowy oraz zasilacz jest w pierwszym stanie i urządzenie zewnętrzne jest w stanie dużego zużycia energii elektrycznej, w stanie gotowości, w którym zasilacz jest w pierwszym stanie i urządzenie zewnętrzne jest w stanie małego zużycia energii elektrycznej, w stanie zawieszenia, w którym zasilacz jest w drugim stanie i w stanie wyłączenia, przy czym podczas sterowania zmienia się stany zarządzania zasilaniem systemu komputerowego przez jednostkę zarządzania zasilaniem w odpowiedzi na co najmniej jedno z wielu wstępnie wybranych zdarzeń, przerywa się odwracalnie wykonywanie kodu w jednostce centralnej przed wprowadzeniem stanu zawieszenia, tak że wykonywanie kodu w jednostce centralnej podejmuje się na nowo po zmianie stanu zasilacza na pierwszy stan, steruje się jednostką zarządzania zasilaniem i zmienia się stan systemu komputerowego na stan normalny w odpowiedzi na zamknięcie przełącznika, jeżeli jednostka zarządzania zasilaniem jest w stanie gotowości lub stanie zawieszenia lub stanie wyłączenia, po czym zmienia się stan zużycia energii w urządzeniu zewnętrznym pomiędzy stanem dużego zużycia energii elektrycznej i stanem małego zużycia energii elektrycznej w odpowiedzi na sygnał z jednostki zarządzania zasilaniem, jest to, że koordynuje się przejścia pomiędzy stanami zarządzania zasilaniem przez jednostkę centralną przy pomocy sterownika zaawansowanego zarządzania zasilaniem, sterującego wykonywaniem kodu w jednostce centralnej, realizuje się zmianę pomiędzy stanami zarządzania zasilaniem systemu komputerowego, podczas gdy co najmniej jeden sterownik zaawansowanego zarządzania zasilaniem systemu operacyjnego jest aktywny, opóźnia się zmianę pomiędzy stanami zarządzańia zasilaniem systemu komputerowego przez jednostkę zarządzania zasilaniem, podczas gdy żaden ze sterowników zaawansowanego zarządzania zasilaniem systemu operacyjnego nie jest aktywny podczas okresu czasu, gdy sterowanie wykonywaniem jest przenoszone pomiędzy systemami operacyjnymi, aż co najmniej jeden sterownik zaawansowanego zarządzania zasilaniem systemu operacyjnego stanie się aktywny, oraz zmienia się stan pomiędzy pierwszym i drugim stanem zasilacza w odpowiedzi na sygnał
180 098 z jednostki zarządzania zasilaniem, po czym przerywa się odwracalnie wykonywanie kodu w jednostce centralnej przed wprowadzeniem stanu wyłączenia, zaś zasilacz wprowadza się w drugi stan, jeżeli system komputerowy działa w stanie wyłączenia.
Korzystnie w systemie komputerowym zawierającym urządzenie wizualnego sprzężenia zwrotnego z co najmniej czterema stanami wizualnego sprzężenia zwrotnego, mianowicie stanem aktywnym, stanem nieaktywnym, pierwszym stanem migotania, w którym zmienia się stan pomiędzy stanem aktywnym i stanem nieaktywnym przy pierwszej wstępnie określonej częstotliwości, oraz drugim stanem migotania, w którym zmienia się stan pomiędzy stanem aktywnym i stanem nieaktywnym przy drugiej wstępnie określonej częstotliwości, wybiera się stany wizualnego sprzężenia zwrotnego przez jednostkę zarządzania zasilaniem i wiąże się każdy ze stanów zarządzania zasilaniem z jednym ze stanów wizualnego sprzężenia zwrotnego.
Korzystnie stan aktywny i stan nieaktywny sygnalizuje się diodą świecącą która znajduje się w stanie świecenia lub stanie wygaszenia.
Należy wyjaśnić, że normalny stan operacyjny w rozwiązaniu według wynalazku jest właściwie identyczny z normalnym stanem operacyjnym typowego komputera stołowego. Użytkownicy mogą posługiwać się aplikacjami oraz zasadniczo traktować ten komputer jak każdy inny. Jedyną różnicą jest obecność sterownika gospodarowania zasilaniem, który działa w tle (w systemie BIOS i systemie operacyjnym), w sposób przezroczysty dla użytkownika. Częścią sterownika gospodarowania zasilaniem w systemie operacyjnym OS (Operating System) jest rozszerzony interfejs programowany Udoskonalonego Gospodarowania Zasilaniem APM (Advanced Power Management), który występuje obecnie w większości systemów operacyjnych, przeznaczonych do działania na procesorach rodziny Intel 80x86. Część sterownika gospodarowania zasilaniem w systemie BIOS (APM BIOS) komunikuje się ze sterownikiem APM OS. Sterownik APM OS i procedury systemu APM BIOS sterują przejściem komputera do i z innych trzech stanów.
Drugi stan, stan gotowości, zużywa mniej mocy (zasilania) niż normalny stan operacyjny, jednak opuszcza działanie aplikacji, które byłyby wykonane w innym przypadku. Ogólnie, pobór mocy w stanie gotowości oszczędza się poprzez wprowadzenie urządzeń do ich odpowiednich trybów niskiego poboru mocy, np. następuje oszczędzanie poboru mocy w stanie gotowości poprzez zanik obrotów dysku stałego w napędzie dysku stałego oraz poprzez zanik generowania sygnału wizyjnego.
Trzeci stan to stan zawieszenia. W stanie zawieszenia system komputerowy zużywa skrajnie małą ilość mocy. W stanie zawieszenia komputer pobiera z gniazdka ściennego bardzo mało mocy. Jedyną mocą która jest zużywana, jest mała ilość mocy do podtrzymania układu do monitorowania przełącznika, przy czym, gdy system ten nie otrzymuje zasilania prądem przemiennym AC, jest to moc pobierana z baterii wewnątrz systemu komputerowego lub, gdy system ten otrzymuje zasilanie prądem przemiennym AC, jest to mała ilość mocy, generowana na szynie zasilania pomocniczego przez zasilacz.
To małe zużycie mocy osiąga się przez przechowanie stanu systemu komputerowego w urządzeniu pamięciowym z dyskiem stałym (w napędzie dysku stałego) zanim zasilanie zostanie wyłączone. W celu wejścia do stanu zawieszenią system komputerowy przerywa dowolny kod programu i przekazuje sterowanie komputera do sterownika gospodarowania zasilaniem. Sterownik gospodarowania zasilaniem ustala stan systemu komputerowego i zapisuje stan systemu komputerowego w urządzeniu pamięciowym z dyskiem stałym. Stan rejestrów jednostki centralnej CPU, pamięci podręcznej jednostki centralnej CPU, pamięci systemowej, systemowej pamięci podręcznej, rejestrów wizji, pamięci wizji i rejestrów innych urządzeń są zapisywane na dysk stały. Całkowity stan systemu podlega przechowaniu w taki sposób, że może on być odtworzony bez niekorzystnego wpływu przerwania na aplikacje programowe. Komputer zapisuje następnie dane do pamięci trwałej CMOS wskazując, że system został zawieszony. W końcu komputer przerywa wytwarzanie mocy przez zasilanie. Całkowity stan systemu zostaje bezpiecznie zachowany w urządzeniu pamięciowym z dyskiem stałym,
180 098 system jest teraz w stanie „wyłączonym” a komputer otrzymuje teraz jedynie małą ilość regulowanej mocy z zasilacza, aby zasilać układy do monitorowania przełącznika.
Czwarty i ostatni stan to stan wyłączenia. W stanie tym zasilacz przestaje dostarczać regulowaną moc do systemu komputerowego, przy czym ten stan systemu komputerowego nie został zachowany na dysku stałym. Stan wyłączenia jest właściwie identyczny ze stanem typowych komputerów stołowych, wyłączanych w zwykły sposób.
Przełączanie ze stanu do stanu wywoływane jest przez sterownik gospodarowania zasilaniem i typowo opiera się na zdarzeniach zamykania (zwierania) pojedynczego przełącznika, na znaczniku stanu i dwóch czasomierzach: czasomierzu nieaktywności stanu gotowości i czasomierzu nieaktywności stanu zawieszenia. System ma pojedynczy przycisk zasilania. Przycisk ten może być użyty do włączenia systemu, zawieszenia stanu systemu, odtworzenia stanu systemu i wyłączenia systemu.
Rozwiązanie według wynalazku zapewnia realizację kilku stanów gospodarowania zasilaniem w systemie komputerowym z wykorzystaniem jednostki sterowania przejściami między różnymi stanami.
Sposób według wynalazku objaśniono w oparciu o przykłady wykonania przedstawione na rysunkach, na których fig. 1 przedstawia komputer osobisty w widoku perspektywicznym, fig. 2 - elementy komputera osobistego z fig. 1, składającego się z podstawy montażowej, pokrywy, elektromechanicznego urządzenia pamięciowego o bezpośrednim dostępie i płyty planarnej, fig. 3A i 3B przedstawiają schemat blokowy niektórych elementów składowych komputera osobistego z figur 1 i 2, fig. 4 przedstawia grafem stanów systemu komputerowego obejmujący cztery stany systemu: normalny, gotowości, zawieszania i wyłączenia, fig. 5 schemat blokowy zasilacza, fig. 6A1, 6A2, 6A3 przedstawiają schemat elektryczny układu gospodarowania zasilaniem, fig. 6B przedstawia schemat elektryczny połączenia układu gospodarowania zasilaniem z wewnętrznym modemem, fig. 6C - wykresy różnych sygnałów wewnątrz układu ustawiania wartości początkowej dla układów gospodarowania zasilaniem, fig. 6D - schemat elektryczny drugiego przykładu wykonania układu detekcji i korekcji błędu zasilacza, fig. 7 - schemat przejść stanów przełącznika, podtrzymywanych przez procesor gospodarowania zasilaniem, fig. 8 - ogólna sieć działań procedury włączania, fig. 9A1 i 9A2 przedstawiają szczegółową sieć działań Procedury Nadzorczej, wywoływanej przez sterownik urządzenia APM w systemie operacyjnym w przybliżeniu co jedną sekundę, fig. 9B przedstawia sieć działań przedstawiającą szczegóły Procedury APM Działania Nad Ostatnim Żądaniem, fig. 9C - sieć działań przedstawiającą szczegóły Procedury APM Odrzucenia Ostatniego Żądania, figury od 10A do 10F przedstawiają sieci działań przedstawiające szczegóły Procedury Zawieszania, figury HA do 11D - sieci działań przedstawiające szczegóły Procedury Inicjowania, figury 12A do 12E - sieci działań przedstawiające szczegóły Procedury Wznowienia, figury 13A do 13D - sieci działań przedstawiające szczegóły Procedury Zapamiętania Stanu CPU, figury 14A do 14D - sieci działań przedstawiające szczegóły Procedury Odtworzenia Stanu CPU, figury 15A do 15C - sieci działań przedstawiające szczegóły Procedury Zapamiętania Stanu 8959 CPU, figury 16A do 16D - sieci działań przedstawiające szczegóły Procedury Dynamicznej Alokacji Zapamiętanych Plików, fig. 17 przedstawia sieć działań przedstawiającą szczegóły Procedury Wyjścia ze Stanu Gotowości, fig. 18 - sieć działań przedstawiającą szczegóły Procedury Wejścia Do Stanu Gotowości, zaś figury 19A do 19D przedstawiają sieci działań przedstawiające szczegóły Procedury Procesora Gospodarowania Zasilaniem.
Przedmiot wynalazku będzie opisany poniżej szczegółowo z odniesieniem do rysunków, na których przedstawiony jest korzystny przykład wykonania wynalazku, przy czym, co jest zrozumiałe, wynalazek dotyczy kompletnego projektu systemu komputerowego, włączając w to, lecz bez ograniczania się do projektowania architektury komputera, projektowania układów logicznych, projektowania systemu BIOS, projektowania kodu programu trybu chronionego 80486, projektowania kodu programowego aplikacji, projektowania kodu programowego
180 098 systemu operacyjnego i użycia rozszerzonego interfejsu programowanego Udoskonalonego Gospodarowania Zasilaniem.
Odnosząc się bardziej szczegółowo do towarzyszących rysunków przedstawiono tu przykład wykonania systemu mikrokomputerowego i ogólnie wskazywanego przez 10 na figurze 1. Jak wzmiankowano powyżej, komputer 10 może mieć dołączony monitor ekranowy 11, klawiaturę 12, myszkę 13 i drukarkę lub ploter 14. Komputer 10 ma obudowę 15, utworzoną przez dekoracyjną część zewnętrzną 16 (figura 2) oraz wewnętrzną część osłaniającą 18, które współdziałają z podstawą montażową 19, określając zamkniętą, osłoniętą przestrzeń przeznaczoną do pomieszczenia zasilanych elektrycznie elementów składowych przetwarzania i pamiętania danych do przetwarzania i przechowywania danych cyfrowych. Co najmniej niektóre z tych elementów składowych montuje się na wielowarstwowej płycie planarnej 20 lub płycie głównej, która zamontowana jest na podstawie montażowej 19, przy czym dostarcza ona środków do elektrycznego połączenia między elementami składowymi komputera 10, zarówno tymi określonymi powyżej, jak i innymi elementami towarzyszącymi, takimi jak napędy dysków elastycznych, różne formy urządzeń pamięciowych o dostępie bezpośrednio, karty lub płyty adapterów pomocniczych, i tym podobne.
System komputerowy ma zasilacz 17, przycisk włączenia zasilania 21, również dalej w tym dokumencie przełącznik 21 oraz diodę świecącą do sygnalizacji funkcji zasilanie/sprzężenie zwrotne LED 23. Inaczej niż w zwykłym wyłączniku zasilania w typowym systemie, przycisk zasilania 21 nie dołącza/rozłącza szyn zasilania prądu przemiennego AC z zasilaczem 17, jak będzie to objaśnione poniżej. Podstawa montażowa 19 składa się z podstawy wskazywanej przez 22, panelu czołowego 24 i panelu tylnego 25 (fig. 2). Panel czołowy 24 zawiera co najmniej jedną otwartą kieszeń (w zilustrowanej postaci - cztery kieszenie) do pomieszczenia urządzenia pamięciowego, takiego jak napęd dyskowy dla dysków magnetycznych lub optycznych, napęd taśmowy do archiwowania i tym podobne. W przedstawionej postaci, dostarczana jest para kieszeni górnych 26 i 28 oraz para kieszeni dolnych 29 i 30. Jedna z kieszeni górnych 26 przystosowana jest do przyjęcia urządzenia zewnętrznego pierwszego rozmiaru (jak na przykład napędy znane jako napędy 3,5 cala), natomiast druga 28 przystosowana jest do przyjęcia napędów jednego wybranego z dwóch rozmiarów (jak na przykład 3,5 cala i 5,25 cala), a kieszenie dolne są przystosowane do przyjęcia urządzeń tylko jednego rozmiaru (3,5 cala). Jeden napęd dysków elastycznych wskazany jest przez 27 na fig. 1 i jest urządzeniem pamięciowym o bezpośrednim dostępie z wymiennym nośnikiem, będącym w stanie pomieścić dyskietkę wkładaną do niego i używać tej dyskietki, aby odbierać, przechowywać i dostarczać dane, jak jest to ogólnie znane. Jeden napęd dysku stałego jest wskazywany przez 31 i jest urządzeniem pamięciowym o bezpośrednim dostępie ze stałym nośnikiem, będącym w stanie pamiętać i dostarczać dane, jak jest to ogólnie znane.
Przed powiązaniem powyższej struktury z rozwiązaniem według wynalazku, warto jest dokonać ogólnego przeglądu działania systemu komputera osobistego 10. Nawiązując do fig. 3A i 3B, jest tu pokazany schemat blokowy systemu komputera osobistego, który ilustruje różne elementy składowe tego systemu takie, jak system 10 i zawierający elementy składowe zamontowane na płycie planarnej 20 i połączenie tej płyty z gniazdami we/wy oraz innymi urządzeniami systemu komputera osobistego. Z płytą planarną 20 połączony jest procesor systemowy, który występuje tu jako jednostka CPU 40, składająca się z mikroprocesora połączonego szybką magistralą lokalną CPU 42 poprzez jednostkę sterowania pamięcią 46, która z kolei połączona jest z nietrwała pamięcią o dostępie bezpośrednim (RAM) 53. Jednostka sterowania pamięcią 46 składa się ze sterownika pamięci 48, multipleksera adresów 50, bufora danych 52. Jednostka sterowania pamięcią 46 jest z kolei połączona z pamięcią o dostępie bezpośrednim (RAM) 53, jak reprezentują ją cztery moduły pamięci RAM 54. Sterownik pamięci 48 zawiera (układy logiczne) do mapowania adresów do i z mikroprocesora 40 z określonych obszarach pamięci RAM 53. Logika ta służy do odzyskania pamięci RAM, poprzednio zajmowanej przez system BIOS. Następnie sterownik pamięci 48 generuje sygnał
180 098 wyboru pamięci ROM (ROMSEL), używany do udostępniania i blokowania pamięci ROM 88. Chociaż można użyć dowolnego właściwego mikroprocesora jako jednostki CPU 40, to odpowiednim mikroprocesorem jest mikroprocesor typu 80486 z pamięcią podręczną CPU 41.
Mimo, że przedmiot wynalazku jest opisany w dalszej części wraz z dokładnym odniesieniem do schematów blokowych systemu z fig. 3A i 3B, to należy zrozumieć, że rozważono możliwość użycia rozwiązania według wynalazku z innymi konfiguracjami sprzętu płyty planarnej, np. procesorami systemowymi 40 mogą być mikroprocesory Intel 80286 lub 80386. Jednakże znane są inne mikroprocesory, które są w stanie wykonywać zestaw instrukcji architektury Intel x86, a użycie wyrażonych terminów zmierza do objęcia nimi dowolnego mikroprocesora będącego w stanie wykonywać ten zestaw instrukcji. Jak jest to wiadome, wczesne komputery osobiste typowo używały popularnych wtedy mikroprocesorów Intel 8088 lub 8086, jako mikroprocesorów systemowych. Procesory te mają możliwość adresowania jednego megabajta pamięci. Od nie tak dawna, komputery osobiste typowo używają mikroprocesorów o wysokiej szybkości działania Intel 80286, 80386 lub 80486, które mogą działać w trybie wirtualnym lub rzeczywistym, aby emulować wolniejszy mikroprocesor 8088 oraz tryb chroniony, uzyskując rozszerzenie zakresu adresowania z 1 MB do 4 GB dla niektórych modeli. W istocie właściwość rzeczywistego trybu procesorów 80286, 80386 lub 80486 dostarcza sprzętowej kompatybilności z oprogramowaniem napisanym dla mikroprocesorów 8086 i 8088. Opisane procesory z rodziny firmy Intel są często identyfikowane poprzez trzy cyfry odnoszące się do ostatnich trzech cyfr pełnego określenia typu, jak np. „486”.
Wracając teraz do fig. 3A i 3B - magistrala lokalna CPU 42, zawierająca elementy składowe przeznaczone do przesyłania danych, adresów i sterowania, zapewnia połączenie między jednostką CPU, koprocesorem matematycznym 44 (jeśli nie znajduje się wewnątrz jednostki centralnej CPU), sterownikiem wizji 56, systemową pamięcią podręczną 60 i sterownikiem pamięci podręcznej 62. Sterownik wizji 56 został stowarzyszony z monitorem (lub terminalem wideo) 11 i pamięcią wizji 58. Również bufor 64 jest sprzężony z lokalną magistralą CPU 42. Sam bufor 64 jest podłączony do wolniejszej (w porównaniu z magistralą lokalną CPU 42) magistrali systemowej 66, również zawierającej elementy składowe przeznaczone do przesyłania danych, adresów i sterowania. Magistrala systemowa 66 rozciąga się pomiędzy buforem 64 i następnym buforem 68. Magistrala systemowa 66 jest następnie połączona z jednostką taktująco-sterującą i sterowania magistrali 70 oraz jednostką DMA 71. Jednostka DMA 71 składa się z jednostki centralnej obsługi zdarzeń konfliktowych 82 i sterownika DMA 72. Dodatkowy bufor 71 zapewnia sprzężenie pomiędzy magistralą systemową 66 i opcjonalną magistralą charakterystyczną taką jak np. magistrala ISA 76. Do magistrali 76 jest podłączona pewna liczba gniazd we/wy 78, służących do przyłączenia kart adapterowych ISA (nie przedstawionych). Karty adapterowe ISA są dołączone na wtyk do gniazd we/wy 78 i mogą dostarczać dodatkowe urządzenia we/wy lub pamięci dla systemu 10.
Magistrala sterowania arbitrażem (obsługi zgłoszeń konfliktowych) 80 sprzęga sterownik DMA 72 i jednostkę centralną arbitrażu (obsługi zdarzeń konfliktowych) 82 z gniazdami we/wy 78, adapterem dyskietek 84 i sterownikiem dysku stałego IDE 86.
Ze względu na to, że system mikrokomputerowy 10 jest przedstawiony z podstawowym modułem pamięci RAM 4 MB to zrozumiałe jest, że dodatkowa pamięć może być podłączona, poprzez dodatkowe opcjonalne moduły pamięci o wysokiej gęstości 54, jak prezentują to fig. 3A i fig. 3B. Tylko dla celów ilustracyjnych niniejszy wynalazek opisuje się z odniesieniem do podstawowego modułu pamięci RAM 4 MB.
Bufor zatrzaskowy (blokujący) 68 jest sprzężony z magistralą systemową 66 i magistralą planarną we/wy 90. Magistrala planarna we/wy 90 zawiera odpowiednio elementy składowe przeznaczone do przesyłania danych, adresów i sterowania. Wzdłuż magistrali planarnej we/wy 69 dołączone są różne adaptery we/wy i inne elementy składowe takie, jak adapter dyskietek 86, adapter dyskowy IDE, sterownik przerwań 92 i adapter RS-232 94, trwała CMOS RAM 96, tutaj również występująca jako NVRAM, zegar czasu rzeczywistego CMOS (RTC) 98, adapter równoległy 100, pewna liczba czasomierzy 102, pamięć „tylko do odczytu”
180 098
ROM 88, układ 8042 104 oraz układy gospodarowania zasilaniem. Układ 8042, przedstawiony jako 104, jest mikroprocesorem podporządkowanym, który sprzężony jest z klawiaturą 12 i myszką 13. Układy gospodarowania zasilaniem 106 są w komunikacji układowej z zasilaczem 17, przełącznikiem zasilania 21, diodą świecącą zasilanie/sprzężenie zwrotne LED 23 i modemem wewnętrznym 900 i/lub modemem zewnętrznym 902. Modem zewnętrzny jest typowo połączony z transformatorem 904, który podłączony jest do typowego gniazda ściennego. Modemy zewnętrzne 900, 902 są połączone z typowym gniazdem telefonicznym. Układy gospodarowania zasilaniem 106 są przedstawione na figurach 6 A i 6B oraz są obszerniej opisane w tekście związanym z fig. 6A, 6B, 6C i figurze 7. Pamięć „tylko do odczytu” 88 przechowuje program sterujący systemu BIOS, używany do sprzęgania urządzeń we/wy i systemu operacyjnego jednostki CPU 40. System BIOS przechowywany w pamięci ROM 88 może być kopiowany do pamięci RAM 53 w celu skrócenia czasu wykonywania instrukcji BlOS-a. Dalej pamięć ROM 88 podlega (poprzez sygnał ROMSEL) sterownikowi pamięci 48. Jeżeli pamięć ROM 88 jest uaktywniona przez sterownik pamięci 48, to system BIOS wykonuje się z pamięci ROM. Jeżeli zaś pamięć ROM 88 jest zablokowana przez sterownik pamięci 48, to nie odpowiada ona na zapytania adresowe z jednostki CPU 40, to jest system BIOS wykonuje się z pamięci RAM.
Zegar czasu rzeczywistego 98 wykorzystuje się do odliczania pomiaru czasu dnia, a pamięć NVRAM pamięta dane o konfiguracji systemu. Oznacza to, że pamięć NVRAM 96 będzie zawierać wartości opisujące bieżącą konfigurację systemu. Pamięć NVRA 96 zawiera np. informację opisującą pojemność dysku stałego lub dyskietki, typ ekranu, ilość pamięci, czas, datę, itp. Ponadto, dane te pamiętane są w pamięci NVRAM kiedykolwiek wykona się specjalny program konfiguracyjny taki, jak Ustaw Konfigurację. Program Ustaw Konfigurację ma na celu zapamiętać w pamięci NVRAM wartości charakteryzujące konfigurację systemu.
Prawie wszystkie powyższe urządzenia zawierają rejestry z nietrwałą informacją. W celu niedopuszczenia do niepotrzebnego zagęszczenia rysunków, rejestry konkretnego urządzenia będą odnoszone do niego, np. rejestry CPU będą odnoszone do rejestrów jednostki CPU 40, a rejestry sterownika wizji będą odnoszone do rejestrów sterownika wizji 56.
Jak wspomniano wyżej, komputer ma obudowę oznaczoną ogólnie jako 15, która funkcjonuje wspólnie z podstawą montażową 19, tworząc zamkniętą osłoniętą przestrzeń przeznaczoną do pomieszczenia wyżej zidentyfikowanych elementów składowych mikrokomputera. Korzystnie jest uformować obudowę z zewnętrznej pokrywowej części dekoracyjnej 16, która jest jednolicie odlanym elementem składowym, wykonanym z dającego się odlewać materiału syntetycznego i cienkiego metalicznego arkusza wykładziny 18, ukształtowanym tak, aby pasował do konfiguracji części dekoracyjnej. Jednakże obudowa może być zrobiona według innych znanych sposobów, gdyż użyteczność tego wynalazku nie jest ograniczona do obudów opisanego typu.
Odnosząc się teraz do fig. 4, gdzie przedstawiono graf stanów systemu komputerowego według niniejszego wynalazku. System komputerowy 10 ma cztery stany: normalny stan operacyjny 150, stan gotowości 152, stan zawieszania 154 i stan wyłączenia 156. Przejścia między tymi stanami, przedstawionymi na fig. 4, są istotne do opisu przykładu wykonania, lecz nie mają znaczenia ograniczającego wynalazek. W konsekwencji dodatkowe zdarzenia mogą być wykorzystane alternatywnie, aby spowodować przejście między stanami.
Normalny stan operacyjny 150 systemu komputerowego 10 według wynalazku jest właściwie identyczny z normalnym stanem operacyjnym dowolnego typowego komputera stołowego. Użytkownicy mogą korzystać z aplikacji i w zasadzie traktować ten komputer jak dowolny inny. Jedną przezroczystą dla użytkownika różnicą, jest obecność sterownika gospodarowania zasilaniem w systemie operacyjnym (sterownik APM OS), który działa w tle oraz obecność różnych procedur APM BIOS. Procedury APM BIOS będą przedyskutowane w poniższym tekście, przy czym obejmują one Procedurę Zawieszania (Suspend Routine) Procedurę Wznowienia (Resume Routine), Procedurę Inicjowania (Boot-Up Routine), Procedurę Nadzorczą (Supervisor Routine), Procedurę Zapamiętania Stanu CPU (Save CPU State Routine)
180 098 i Procedurę Odtworzenia Stanu CPU (Restore CPU State Routine). Jedną procedurą APM BIOS nie przedstawioną na żądanej z figur jest Procedura Transowania APM BIOS (APM BIOS Routing). Procedura Trasowania APM BIOS w zasadzie akceptuje polecenia ze sterownika APM OS i wywołuje odpowiednią procedurę APM OS, np. kiedy sterownik APM OS wydaje Polecenie Zawieszenia, wtedy APM BIOS wywołuje Procedurę Zawieszenia. Jako inny przykład, kiedy sterownik APM OS wydaje polecenie Podaj Zdarzenie (Get Event), wtedy Procedura Trasowania APM BIOS wywołuje Procedurę Nadzorczą. Procedury te są umieszczone w systemie BIOS i podlegają przepisywaniu do pamięci RAM, gdy system BIOS jest tam przepisywany. Sterownik gospodarowania zasilaniem w systemie operacyjnym i procedury APM BIOS sterują przejściem komputera między czterema stanami. Odniesienie poprzez słowo „APM” dotyczy ogólnie sterownika APM OS, chociaż kontekst może nakazywać co innego.
Drugi stan, stan gotowości 152, zużywa mniej mocy elektrycznej niż normalny stan operacyjny, lecz opuszcza działanie aplikacji, które byłyby wykonane w innym przypadku. W stanie gotowości 152, zużycie mocy jest ogólnie oszczędzane poprzez programowe umieszczenie urządzeń w odpowiednio niskich trybach zużycia mocy. W korzystnym przykładzie wykonania, następuje oszczędzanie mocy elektrycznej w stanie gotowości 152 poprzez zanik obrotów dysku stałego w urządzeniu pamięciowym z dyskiem stałym 31, poprzez zaprzestanie generowania sygnału wizyjnego oraz wprowadzenie jednostki CPU 40 w tryb niskiego zużycia mocy, jak to będzie obszerniej opisane poniżej. Jednakże nie dąży się tu do ograniczania metod, które mogą być użyte do obniżenia zużycia mocy takich, jak spowolnienie lub zatrzymanie zegara CPU.
Korzystnie moc elektryczna oszczędzana jest na trzy oddzielne sposoby. Po pierwsze w normalnym stanie operacyjnym 150, dysk stały w urządzeniu pamięciowym z dyskiem stałym 31 stale się obraca np. z szybkością 3600, 4500 lub 5400 obrotów na minutę (RPM). W stanie gotowości 152 sterownik dysku IDE 86 wydaje polecenie, które wywołuje wprowadzenie urządzenia pamięciowego z dyskiem stałym 31 do trybu niskiego poboru mocy (ustają obroty dysku stałego wewnątrz urządzenia pamięciowego z dyskiem stałym 31), co oszczędza moc typowo zużywaną przez silnik, znajdujący się wewnątrz urządzenia pamięciowego z dyskiem stałym 31, podczas napędzania dysku stałego.
Po drugie - w normalnym stanie operacyjnym 150, sterownik wizji 56 systemu komputerowego ciągle generuje sygnał wizji (HSYN, VSYNC, R, G, B itd. jak jest to dobrze znane w tej dziedzinie) odpowiednio do obrazu widzianego na terminalu ekranowym 11. W stanie gotowości 152 sterownik wizji 56 przerywa generowanie sygnału wizyjnego, oszczędzając przez to energię elektryczną normalnie przez niego zużywaną; wszystkie sygnały HSYN, VSYNC, R, G i B są sprowadzane do [wartości] około 0,00 VDC. Użycie monitora zgodnego z VESA (Video Electronics Standards Association) pozwala na dalsze oszczędzanie mocy, ponieważ monitory zgodne z VESA wyłączają się same, jeśli sygnały HSYN, VSYNC przyjmują wartość około 0,00 VDC.
Po trzecie - w normalnym stanie operacyjnym 150, jednostka centralna CPU 40 wykonuje polecenia, zużywając przez to moc elektryczną. W stanie gotowości 152 system BIOS wydaje instrukcję HALT (zatrzymaj), znacząco obniżając zużycie mocy, aż do wystąpienia następnego przerwania sprzętowego. W trakcie faktycznie jałowej pracy, CPU może pozostawać w stanie wstrzymania dłużej niż 90% czasu. Należy zauważyć, że pewne systemy mają „oszczędzacze ekranu”, które powodują, że ekrany 11 stają się ciemne, aby zapobiec wypalaniu fosforu z przedniej powierzchni terminala. W większości takich systemów sterownik wizji 56 stale generuje sygnał wizyjny; to jest generuje tylko sygnał wizyjny, odpowiadający ciemnemu ekranowi lub dynamicznemu wyświetlaniu. Stąd, system komputerowy wykonujący program oszczędzania ekranu ciągłe zużywa moc elektryczną konieczną do generowania sygnału wizji.
Trzecim stanem jest stan zawieszenia 154. W stanie zawieszenia 154, system komputerowy zużywa skrajnie małą ilość mocy elektrycznej. Komputer w stanie zawieszenia zużywa mniej niż 100 miliwatów mocy elektrycznej w przykładzie wykonania wynalazku.
180 098
Jedyną zużywaną mocą jest 5 watów zużywanych w związku z nieefektywnością zasilacza 17 oraz małą ilością mocy używanej przez układy gospodarowania zasilaniem 106.
To małe zużycie mocy elektrycznej uzyskuje się poprzez zapamiętanie stanu systemu komputerowego w urządzeniu pamięciowym z dyskiem stałym (na dysku twardym) 31 zanim nastąpi wyłączenie zasilania. W celu wejścia do stanu zawieszenia 154, CPU 40 przerywa działanie dowolnych aplikacji i przekazuje sterowanie wykonywaniem programów do sterownika gospodarowania zasilaniem. Sterownik gospodarowania zasilaniem stwierdza stan systemu komputerowego 10 i zapisuje całkowity stan systemu komputerowego do urządzenia pamięciowego z dyskiem stałym 31. Stan rejestrów CPU 40, pamięć podręczna CPU 41, systemowa pamięć podręczna 41, systemowa pamięć RAM 53, rejestry pamięci wizji 56 oraz pozostałe rejestry o nietrwałej zawartości są zapisywane do napędu dysku stałego 31. Całkowity stan systemu komputerowego 10 zapamiętuje się w taki sposób, że stan ten może być odtworzony bez znaczących strat użytkowych. Oznacza to, że użytkownik nie potrzebuje czekać na załadowanie się systemu operacyjnego, graficznego interfejsu użytkownika i aplikacji programowych, jakby normalnie czekał.
Komputer zapisuje następnie dane do trwałej pamięci CMOS 96, wskazując że system został zawieszony. W końcu CPU 40 poleca mikrosterownikowi U2 spowodować zatrzymanie dostarczania mocy regulowanej przez zasilacz 17 do systemu poprzez szyny ±5VDC i ±12VDC. Teraz system komputerowy 10 wyłącza się z całkowitym stanem komputera bezpiecznie zapamiętanym w urządzeniu pamięciowym z dyskiem stałym 31.
Słowo „stan” używane jest w obrębie tego opisu w dwóch podobnych, zatem możliwych do pomylenia wariantach. Urządzenia mogą być w konkretnym stanie. Cztery stany systemu - normalny 150, gotowości 152, zawieszenia 154 i wyłączenia 156 odnoszą się do ogólnego stanu systemu komputerowego 10 według wynalazku. „Stany” te opisują system komputerowy 10 w sposób ogólny, np. w trakcie normalnego stanu operacyjnego 150, CPU 40 wykonuje ciągle kody programowe i zmienia pewną liczbę rejestrów w obrębie systemu 10. Również podobna czynność zachodzi w trakcie stanu gotowości 152. Stąd w trakcie normalnego stanu operacyjnego 150 i stanu gotowości 152 konfiguracja rejestrów i pamięci systemu komputerowego pozostaje dynamiczna.
Inne urządzenia mogą być również w pewnych stanach. Układy gospodarowania zasilaniem 106 korzystnie posługują się drugim procesorem, jako procesorem gospodarowania zasilaniem, takim jak mikrosterownik U2, przedstawionym na fig.. 6A, aby dokonać implementacji gospodarowania zasilaniem o różnych właściwościach. Wiele takich procesorów jest odpowiednich - w tym konkretnym przykładzie wykonania wynalazku procesorem gospodarowania zasilaniem jest programowany mikrosterownik 83C750. Zmienne i wprowadzenia mikrosterownika U2 mogą być w kilku stanach, jak to będzie objaśnione w tekście, towarzyszącym fig. 6A.
Można porównać powyższe - ze „stanem” urządzenia np. „stan systemu komputerowego 10” lub „stan CPU 40”. „Stan” urządzenia odnosi się do warunku urządzenia w konkretnym cyklu komputera. Wszystkie lokalizacje w pamięci oraz rejestry będą miały szczególne wartości binarne. „Stan” urządzenia jest binarnym statycznym ujęciem zawartości tego urządzenia.
„Stan” systemu komputerowego 10 odnosi się do operacyjnych równoważników, lecz niekoniecznie do dokładnych kopii, np. system komputerowy w stanie A może mieć pewną zawartość pamięci w pamięci podręcznej CPU 41 lub systemowej pamięci podręcznej 60. Możliwe jest „opóźnienie” zawartości jednej z pamięci podręcznych z powrotem do systemowej pamięci RAM 53, wprowadzając system komputerowy w stan B. Określając dokładnie, stan systemu komputerowego w stanie A jest różny od stanu systemu komputerowego w stanie B, ponieważ zawartości pamięci podręcznej oraz systemowej pamięci RAM są różne. Jednakże z perspektywy operacyjnej oprogramowania, stany A i B są takie same, ponieważ oprócz niewielkiego zmniejszenia szybkości pracy systemu (spowodowanej przez program, nie korzystający przy działaniu z pamięci podręcznej) nie ma oddziaływania na wykonywanie
180 098 programów. Oznacza to, że komputer w stanie A oraz komputer w stanie B pod względem oprogramowania jest operacyjnie równoważny, nawet pomimo tego, że komputer, którego pamięć podręczna została opróżniona, będzie podlegać niewielkiemu zmniejszeniu wydajności, dopóki obszary pamięci podręcznej są ponownie ładowane użytecznym kodem programowym.
Słowo „moc” jest również użyte w dwóch podobnych, jednak możliwych do pomylenia wariantach. „Moc” najczęściej odnosi się do mocy elektrycznej. Jednakże „moc” sporadycznie odnosi się również do mocy obliczeniowej.
„Układ” - ogólnie odnosi się do fizycznego urządzenia elektronicznego lub do pewnej liczby urządzeń elektrycznie połączonych. Jednakże termin „układ” służy również do zawarcia w nim ekwiwalentów kodu CPU urządzeń elektronicznych, np. z jednej strony dwuwejściowa bramka logiczna NAND może być realizowana poprzez układ 74LS00 lub równoważnie poprzez urządzenie programowane. Oba te urządzenia są fizycznymi urządzeniami elektronicznymi. Z drugiej strony bramka logiczna NAND może być implementowana w oparciu o dwa wejścia do odczytu jednostki centralnej CPU 40 z odczytywanych przez CPU portów wejściowych, generowanie wyniku bramki NAND poprzez użycie polecenia jednostki centralnej CPU i wyprowadzenie wyniku poprzez porty wyjściowe, zapisywane przez CPU. Porty sprzęgające CPU mogą być takie proste, jak dekodowane rejestry zatrzaskowe lub ich równoważniki w postaci urządzenia programowalnego lub takie złożone, jak układy PI A, które są dobrze znane w przedmiotowej dziedzinie. Termin „układ” należy rozumieć wystarczająco obszernie, aby objąć wszystkie trzy powyższe przykłady implementacji bramki logicznej NAND. W pewnych przypadkach „układ” może odnosić się po prostu do ścieżki elektrycznej. Typy ścieżek elektrycznych obejmują przewody, ścieżki na płytkach drukowanych, itp. lub dowolne kombinacje typów ścieżek, które tworzą jedną elektrycznie połączoną ścieżkę.
„Sygnał” może odnosić się do pojedynczej fali sygnału elektrycznego lub do pewnej liczby fal, np. sterownik wizji generuje sygnał wizji. Sygnał wizji jest faktycznie pewną liczbą sygnałów przenoszonych po pewnej liczbie przewodników elektrycznych: HSYNC, VSYNC, R, G, B, itd. jak to jest dobrze znane w stanie techniki.
Wracając teraz do fig. 4 - czwarty i ostatni stan jest stanem wyłączenia 156. Stan wyłączenia 156 jest w istocie identyczny ze stanem wyłączenia dowolnego systemu komputerowego, który to system może być wyłączony w zwykłym sensie. W stanie tym podstawowa jednostka regulacyjna 172 zasilacza 17 przestaje dostarczać regulowaną moc do systemu komputerowego 10, (z wyjątkiem małej ilości mocy poprzez wyjście AUX5, jak to będzie obszerniej objaśnione w związku z figurą 5), lecz stan systemu komputerowego 10 nie jest pamiętany na dysku stałym 31. Stan zawieszenia 154 i stan wyłączenia 156 są podobne przez to, że zasilacz 17 nie generuje dłużej regulowanej mocy. Różnią się tym, że w stanie wyłączenia 156, stan systemu komputerowego 10 nie jest pamiętany na dysku stałym 31, jak to jest w stanie zawieszenia 154. Ponadto podczas opuszczania stanu wyłączenia 156, komputer 10 „ładuje się” jak przy włączeniu. Oznacza to, że dowolny kod wykonawczy musi rozpoczynać albo użytkownik lub musi to czynić automatycznie za pomocą środka takiego jak plik AUTOEXEC.BAT. Jednakże po opuszczeniu przez komputer 10 stanu zawieszenia 154, dokonuje się wznowienia wykonywania programu w miejscu, gdzie zostało ono przerwane.
Figura 4 przedstawia również przegląd zdarzeń, które powodują przejścia między czterema stanami. Zdarzenia te będą dalej objaśnione na figurach od 6 do 8. Przycisk włączenia mocy 21, dwa czasomierze (czasomierz nieaktywności stanu gotowości i czasomierz nieaktywności stanu zawieszenia, patrz figura 9), czasomierz minut do pobudzenia i Znacznik Zezwolenia Zawieszenia (Suspend Enable Flag) - patrz fig. 6A i 7 - wszystkie oddziałują na stan, do którego komputer wchodzi. Ogólnie - dwa czasomierze mogą być czasomierzami sprzętowymi lub czasomierzami programowymi CPU, działającymi w jednostce centralnej CPU jako programy. W korzystnym przykładzie wykonania wynalazku, oba czasomierze są czasomierzami programowymi CPU, wykonywanymi z segmentów danych systemu BIOS. Jednakże,
180 098 te dwa czasomierze ewentualnie mogłyby być czasomierzami sprzętowymi, co byłoby lepszym rozwiązaniem, ponieważ zmniejszałoby koszt systemu. Czasomierze zostaną dokładniej objaśnione na fig. 9. Oba czasomierze są aktywne, gdy komputer 10 jest w normalnym stanie operacyjnym 150 lub w stanie gotowości 152. Czasomierze komunikują się z innymi procedurami tak, że wyczerpanie się zadanego, w którymś z czasomierzy okresu spowoduje przeje ście w sposób, jak opisano poniżej. Jeden lub oba czasomierze mogą być skonfigurowane, aby nastąpił ich stan wyczerpania po pewnym okresie czasu, zależnym od określonych potrzeb użytkownika. W korzystnym przykładzie wykonania wynalazku nieaktywność czasomierza stanu gotowości i nieaktywności czasomierza stanu zawieszenia mogą być ustawione tak, aby wyczerpały się po 10 do 90 minut. Pojedynczo lub oba czasomierze można zatrzymać po to, aby skonfigurować nowszy okres odliczania. „Zatrzymanie” czasomierzy może przyjąć formę ostatecznego zaprzestania akcji zwiększania liczników przez czasomierze lub po prostu formę zignorowania faktu wyczerpania okresu zliczania. W korzystnym przykładzie wykonania wynalazku, ustawienie wartości zero, jako wartości wyczerpania czasomierza powoduje to, że wyczerpanie czasomierza nie podlega sprawdzaniu. Użytkownik lub jakiś komputer sieciowy może, np. nie chcieć wejść do stanu zawieszenia 154 ponieważ, czyniąc to może spowodować, że sieć LAN ulegnie awarii, wiążącej się z tym komputerem.
Teoretycznie, czasomierze mogą czas zliczać lub odliczać i mogą być nastawiane na ustalony i określony wcześniej stan oraz oczekuje się, że mogą zliczać do innego ustalonego i określonego wcześniej stanu, kiedy to czasomierz zostanie uruchomiony (lub zostanie uruchomiony ponownie) lub może być użyta bieżąca wartość, przy czym obliczona różnica lub suma, wskazuje koniec okresu wyczerpania. W korzystnym przykładzie wykonania, gdy ponownie ustawia się czasomierze, zapamiętuje się bieżącą wartość zmiennej minutowej z zegara czasu rzeczywistego 98. Sprawdza się termin ustawienia czasomierzy poprzez odjęcie bieżącej wartości minutowej od zapamiętanej wartości minutowej i poprzez porównanie różnicy z wartością wybraną przez użytkownika.
Na oba czasomierze mają wpływ niektóre działania systemu, np. w przykładzie wykonania wynalazku jest to działanie użytkownika, przejawiające się naciśnięciami klawiszy klawiatury 12, ruchem myszki 13, naciśnięcia klawiszy myszki 13 lub działanie dysku stałego 31 powodujące ponowne uruchomienie każdego zegara, jak będzie to obszerniej objaśnione na fig. 9, ponadto w trakcie naciskania klawiszy klawiatury 12 przez użytkownika lub użycia myszki 13 oraz w trakcie dostępu aplikacji do dysku stałego 31, żadne ustawienie czasomierza nie może ulec wyczerpaniu. Dodatkowo inne zdarzenia systemowe mogą być użyte do ponownego ustawienia czasomierzy. Dowolne przerwanie sprzętowe może być alternatywnie monitorowane ze względu na aktywność. Stąd, mogłoby być wskazane, aby drukowanie (przerwanie IRQ5 lub IRQ7) lub dostęp do portu COMM (przerwanie IRQ2 lub IRQ3) zapobiegało wejściu systemu do stanu zawieszenia 154.
Znacznik Zezwolenia Zawieszenia jest przerzutnikiem zatrzaskowym, znajdującym się w mikrosterowniku U2, dającym się odczytywać i być manipulowanym przez CPU, co zostanie obszerniej objaśnione na fig. 6A. W skrócie, umieszczenie mikrosterownika U2 w danym trybie uzyskuje się przez naciśnięcie przełącznika 21, co wprowadza system 10 do stanu 156, umieszczenie mikrosterownika U2 w innym trybie uzyskuje się przez kolejne naciśnięcie przełącznika 21, co wprowadza system 10 do stanu zawieszenia 154. Jeśli system komputerowy 10 znajduje się w normalnym stanie operacyjnym 150 i zostanie naciśnięty przycisk 21, przy wyzerowanym Znaczniku Zezwolenia Zawieszenia, zapisanym w mikrosterowniku U2, to system komputerowy 10 wchodzi do stanu wyłączenia 156, jak przedstawiono na 158. Jeśli system komputerowy 10 znajduje się w stanie wyłączenia 156 i zostanie naciśnięty przycisk 21, to system komputerowy wchodzi do normalnego stanu operacyjnego 150, jak przedstawiono na 160. Ponadto, kilka „zewnętrznych zdarzeń”, które zostaną poniżej objaśnione obszerniej, mogą powodować przejście systemu ze stanu wyłączenia 156 do normalnego stanu operacyjnego 150.
180 098
Jeśli system komputerowy 10 znajduje się w normalnym stanie operacyjnym 150, to jakieś zdarzenie może spowodować wejście komputera do stanu gotowości 152; jeśli wyczerpie się czasomierz nieaktywności stanu gotowości, to system komputerowy 10 przejdzie do stanu gotowości 152, jak przedstawiono na 162. W sytuacji alternatywnej, system może dostarczać takich środków, jak pole dialogowe, przełącznik lub inne urządzenie wejściowe, aby użytkownik wymuszał bezpośrednio przejście systemu do stanu gotowości. W stanie gotowości 152 dowolna czynność systemu lub użytkownika - opisanego poprzednio rodzaju, włączając w to naciśnięcie przełącznika mocy 21, spowoduje opuszczenie stanu gotowości 152 i ponowne wejście do normalnego stanu operacyjnego, jak przedstawiono na 164.
Naciśnięcie przycisku mocy 21 powoduje przejście systemu ze stanu gotowości 152 do normalnego stanu operacyjnego zapobiegając dezorientacji użytkownika. Jak wzmiankowano poniżej, będąc w stanie gotowości monitor 11 ma ekran pusty, natomiast dioda świecąca do sygnalizacji fimkcji zasilanie/sprzężenie zwrotne LED 23 świeci lub mruga, zależnie od tego, jak są skonfigurowane znaczniki w mikrosterowniku U2. Użytkownik zbliżający się do systemu może zauważyć, że ekran monitora 11 jest pusty i pomyśleć, że system jest w stanie zawieszenia 154 lub wyłączenia 156 i nacisnąć przycisk mocy 21, aby spróbować wprowadzić system do normalnego stanu operacyjnego 150. Jeśli naciśnięcie przycisku mocy 21 spowoduje wejście systemu albo do stanu zawieszenia 154, albo do stanu wyłączenia 156, to powyższy użytkownik wyłączy lub zawiesi komputer, co jest akurat odwrotne do jego intencji. Dlatego też, podczas stanu gotowości 152, naciśnięcie przycisku mocy 21 spowoduje zmianę stanu systemu ze stanu gotowości do normalnego stanu operacyjnego. Nawet w stanie pracy jałowej, jednostka centralna CPU 40 wnet sprawdzi, czy przycisk został naciśnięty. Przerwania sprzętowe przenoszą jednostkę centralną COU 40 z jałowego stanu pracy około 20 razy na sekundę, odtąd podczas następnego plecenia APM - Podaj Zdarzenie (APM Get Event), mikrosterownik U2 jest pytany o określenie, czy przycisk 21 był naciśnięty.
Jeśli komputer 10 znajduje się w normalnym stanie operacyjnym 150, to dwa zdarzenia mogą spowodować wejście do stanu zawieszenia 154. Pierwszy - jeśli wyczerpie się czasomierz nieaktywności stanu zawieszenia, to system komputerowy 10 zmieni stan, na stan zawieszenia 154, jak przedstawiono na 166. Drugi - użytkownik może spowodować wejście komputera 10 do stanu zawieszenia 154, bezpośrednio przez naciśnięcie przycisku mocy 21, przy ustawionym Znaczniku Zezwolenia Zawieszenia, zapisanym w mikrosterowniku U2, również przedstawionym na 164. Ponadto alternatywnie, sterownik APM może wydać żądanie zawieszenia poprzez polecenie „Ustaw Stan Zasilania: Zawieszony”, który powoduje wywołanie Procedury Zawieszenia przez sterownik APM BIOS. Podczas stanu zawieszenia 154, użytkownik powoduje przejście do normalnego stanu operacyjnego 150 poprzez naciśnięcie przycisku mocy 21, jak przedstawiono na 168.
Ponadto kilka zdarzeń zewnętrznych może być użytych do zmiany systemu 10 ze stanu zawieszenia 154 do normalnego stanu operacyjnego 150, w trakcie 168 lub ze stanu wyłączenia 156 do normalnego stanu operacyjnego 150, na 160, np. układ detekcji dzwonka telefonu w mikrosterowniku U2 w układach z fig. 6A, skonfigurowano do powodowania, aby system 10 opuszczał stan wyłączenia 156 lub stan zawieszenia 154 i wchodził do normalnego stanu operacyjnego 150, gdy podłączona linia telefoniczna jest w stanie wywołania. Taka właściwość jest przydatna dla systemów odbierających dane telefaksowe lub dane cyfrowe. System wchodzi do normalnego stanu operacyjnego - reagując na dzwonek telefonu (wywołanie), wykonuje ustawione wcześniej funkcje takie, jak akceptowanie nadchodzącej transmisji obrazów nieruchomych, pobieranie i wysyłanie plików, zezwalanie na zdalny dostęp do systemu itd. oraz ponowne wejście do stanu zawieszenia odpowiednio do wyczerpania się czasomierza nieaktywności stanu gotowości, pobierając moc tylko wtedy, gdy system znajduje się w normalnym stanie operacyjnym.
Podobnie mikrosterownik U2 przystosowuje licznik minut do pobudzenia alarmowego, który zezwala zdarzeniu typu alarm spowodować, opuszczenie przez system 10 stanu zawieszenia 154 lub stanu wyłączenia 156 i wejść do normalnego stanu operacyjnego 150.
180 098
Taki system jest użyteczny do wysyłania telefaksów lub danych cyfrowych w określonej porze dnia, wykorzystując niższe stawki posługiwania się telefonem oraz do wykonywania systemowych funkcji konserwatorskich takich, jak tworzenie kopii zapasowych systemowego napędu stałego 31 za pomocą systemu kopii taśmowych. W ostatnim przypadku minutowy alarm pobudzenia ustawia się, aby włączyć maszynę w określonym okresie czasu przed terminem zgodnym z planem, aby spowodować wykonanie programu tworzenia taśmowych kopii zapasowych. Alternatywnie plan systemu APM BIOS także może być użyty do wykonania programu tworzenia taśmowych kopii zapasowych.
W końcu, jeśli system komputerowy 10 znajduje się w stanie gotowości 152 i wyczerpie się czasomierz nieaktywności stanu zawieszenia, to komputer 10 zmienia stan zawieszenia 154, jak przedstawiono na 170. System komputerowy 10 nie może zmienić stanu zawieszenia 154 z powrotem na stan gotowości 152, lecz może jedynie przejść do normalnego stanu operacyjnego 150, jak opisano w tekście towarzyszącym przejściu 168.
Oczywiście system komputerowy 10 nie może natychmiast zmieniać stanów. Przy każdym przejściu z jednego z czterech stanów, wymagany jest pewien okres czasu, aby wykonać konieczne zmiany systemowe. Szczegóły dotyczące każdego okresu przejścia będą objaśnione na figurach od 6 do 15.
Przed omówieniem szczegółów realizacji kodu programowego przez jednostkę CPU 40, może być użyteczne, najpierw przeanalizować wymagania sprzętowe, niezbędne do osiągania czterech stanów. Schemat blokowy zasilacza 17 jest przedstawiony na fig. 5. Zasilacz 17 ma dwie jednostki: jednostkę sterującą 174 i podstawową jednostkę regulacyjną 172. Zasilacz 17 ma kilka wejść: wejście Lineln, które akceptuje napięcia 115 VAC albo 220 VAC pobierane z typowego gniazda ściennego oraz wejście ON, które steruje czynnościami regulacyjnymi zasilacza 17. Zasilacz 17 ma też kilka wyjść: wyjście AC Line-Out oraz ± 5 VDC, ± 12 VDC, AUX5, GND i POWERGOOD. Wyjście AC Line-Out ma wartość 115 VA, które typowo pasuje do wejścia mocy elektrycznej zasilającego terminala ekranowego 11. Jednostka sterowania 174 akceptuje sygnał wejściowy ON i generuje sygnał wyjściowy POWERGOOD. Podstawowa jednostka regulacyjna 172 selektywnie reguluje przemianą napięcia wejściowego Line-In 115 VAC na napięcie ± 5 VDC, ± 12 VDC. Czy podstawowa jednostka regulacyjna 172 ma regulować moc podawaną na szynach ± 5 VDC, ± 12 VDC zależy od wartości sygnału ON, jak wynika to ze sprzężenia z jednostką sterowania 174. W korzystnym przykładzie wykonania wynalazku, jednostka sterowania 174, powinna zapewnić izolację dla układów generujących sygnał ON, używając np. odpowiedniego transoptora.
Wejście Line-In i wyjścia Line-Out oraz ± 5 VDC, ± 12 VDC, GND i POWERGOOD są dobrze znane w przedmiotowej dziedzinie. Gdy zasilacz 17 jest „wyłączony”, to jest, gdy nie dostarcza regulowanego napięcia przy wykorzystaniu wejścia Line-In, to sygnał POWERGOOD ma logiczną wartość 0 (ZERO). Gdy zasilacz 17 jest „włączony” to zasilacz 17 wytwarza regulowane napięcie ± 5 VDC, ± 12 VDC z napięcia 115 VAC na wejściu Line-In. Te cztery stabilizowane napięcia i związana z nimi szyna GND dostarczają „moc dla systemu” (zasilanie do systemu). Gdy regulowane napięcia osiągną poziomy w zakresie dopuszczalnych tolerancji, to sygnał POWERGOOD zmienia się w logiczną 1 (JEDYNKĘ). Gdy tylko napięcia +5 lub +12 V przekroczy granice tolerancji, to sygnał POWERGOOD zmienia się w logiczne 0, wskazując jednocześnie ten warunek.
Wyjście AUX5 dostarcza napięcie pomocnicze +5 VDC do planaru. Kiedy zasilacz 17 podłączony jest do typowego gniazda ściennego, o nominalnym napięciu 115 VAC, wtedy podstawowa jednostka regulacyjna 172 dostarcza regulowanego napięcia +5 VDC na wyjście sygnału AUX5. zależnie od tego czy zasilacz jest „włączony”, czy „wyłączony”. Stąd, podczas odbioru prądu AC, zasilacz 17 stale dostarcza nominalne +5 VDC na wyjście AUX5. Wyjście AUX5 różni się od wyjścia +5V tylko tym, że podstawowa jednostka regulacyjna 172 generuje regulowane napięcie +5 VDC poprzez wyjście +5, gdy zasilacz 17 jest „włączony”. Wyjście AUX5 różni się ponadto od wyjścia +5V tym, że w korzystnym przykładzie wykonania wynalazku, podstawowa jednostka regulacyjna 172 dostarcza kilka amperów prądu
180 098 o napięciu +5 VDC poprzez wyjście +5 VDC, podczas gdy jednostka 172 dostarcza mniej niż jeden amper prądu o napięciu +5 VDC poprzez wyjście AUX5,
Typowe dotychczasowe zasilacze używają przełączników dwupołożeniowych o wysokim obciążeniu prądowym do włączania i odłączania wejście Line-In do i od sekcji regulacji zasilacza. Zasilacz 17 w niniejszym wynalazku nie używa przełącznika dwupołożeniowego o wysokim obciążeniu prądowym. Przełącznik 21 raczej steruje układami, które generują sygnał ON. W przykładzie wykonania wynalazku, przełącznik 21 jest chwilowym jednobiegunowym, jednopołożeniowym wyłącznikiem przyciskowym, jednakże można adaptować układy z fig. 6A do wykorzystania przełączników innych typów takich jak przełącznik jednopolowy, dwupołożeniowy. Wejście AC Line-In jest stale połączone z podstawową jednostką regulacyjną 172 z gniazdem ściennym. Kiedy sygnał ϋΝ jest logiczną 1 (w przybliżeniu równą wartości AUX5, nominalnie +5 VDC), wtedy podstawowa jednostka regulacyjna 172 nie przemienia prądu AC o napięciu 115 V z szyny Line-In na ±5 VDC lub ±12 VDC na wyjściu ±5 lub ±12. Podstawowa jednostka regulacyjna 172 dostarcza tylko prądu o niskiej wartości o nominalnym napięciu ±5 VDC na wyjściu sygnału AUX5. Z drugiej strony, kiedy sygnał ϋΝ jest logicznym 0 (w przybliżeniu GND). wtedy podstawowa jednostka regulacyjna 172 dokonuje przemiany prądu AC o napięciu 115 V pobieranego z szyny Line-In na ±5 VDC lub ±12 VDC odpowiednio na wyjściach ± 5 lub ±12. Stąd, kiedy sygnał ϋΝ jest logiczną 1, wtedy zasilacz 17 jest „wyłączony”, a kiedy sygnał ϋΝ jest logicznym 0, wtedy zasilacz 17 jest „włączony”.
Odnosząc się do fig. 6A (która składa się z figur od 6A1 do 6A3), przedstawiono na niej uproszczony rysunek układów elektronicznych systemu komputerowego 10. Układy na fig. 6A odpowiadająza sprzężenie między przełącznikiem 21, diodą świecącą sygnalizacji funkcji zasilanie/sprzężenie LED 23, zasilaczem 17, terminalem ekranowym 11 i wykonywaniem kodu programowego w jednostce centralnej CPU 40.
Układy obejmują cztery (4) zintegrowane układy Ul - pierwszy programowany układ PAL16L8; U2 - programowany mikrosterownik 83C750, U3 - układ 74LS05, który jest dobrze znany w przedmiotowej dziedzinie techniki i U4 - drugi programowany układ PAL16L8 oraz różne dyskretne elementy składowe w komunikacji układowej, jak przedstawiono na fig. 6A. Ogólnie układy typu PAL Ul i U4 sprzęgają magistralę we/wy planaru 90 z fig. 3A i fig. 3B z mikrosterownikiem U2, który sprzężony jest z pozostałymi układami fig. 6 A, które sprzężone są z przełącznikiem 21, z zasilaczem 17, terminalem ekranowym 11 i programowanym syntezatorem zegarowym 906. Programowany syntezator zegarowy 906 może być jednym z wielu takich urządzeń, jedna taka część to układ CH9055A.
Układy z fig. 6A obejmują dalej przełącznik 21, kryształ 16 MHz Yl, osiemnaście rezystorów R1 do R18, osiem kondensatorów Cl do C8, trzy tranzystory MOSFET typu N Ol 03, które są standardowymi tranzystorami nieskoprądowymi NMOS FET, w układzie przełącznika logicznego w korzystnym przykładzie wykonania wynalazku oraz sześć małych diod sygnałowych CR1 do CR6. wszystkie skonfigurowane i połączone tak, jak przedstawiono na fig. 6A. Rezystory R1 do R18 są rezystorami o mocy 1/4 wata i mają wartości, jak przedstawiono na fig. 6A ± 5%. Kondensator Cl jest kondensatorem elektrolitycznym o wartości 10 pF (± 10%). Kondensatory C2 i C3 są kondensatorami tantalowymi o wartości 22 pF (± 10%). Kondensatory C4 - C8 są kondensatorami ceramicznymi o wartości 0,1 pF (± 10%). Na końcu kondensator C9 jest kondensatorem ceramicznym o wartości 1000 pF (± 10%).
Kryształ Yl i kondensatory C2 i C3 generują sygnały używane przez mikrosterownik U2 do strerowania taktowaniem operacji, jak jest to znane w przedmiotowej dziedzinie. Diody CR1 i CR3 oraz rezystor R14 izolują sygnał AUX5 od sygnału VBAT, umożliwiając jednocześnie sygnałowi AUX5 uzupełnianie sygnału VBAT, podczas generowania sygnału AUX5 przez zasilacz 17, bateria 171 nie jest rozładowywana. Sygnał AUX5 podlega zmniejszeniu na diodach CR1 i CR3. aby dostarczyć odpowiednie napięcie dla urządzeń połączonych z YBAT Alternatywnie szyna sygnału VBAT jest izolowana od szyny sygnału AUX5.
180 098
Drugi układ PAL U4 połączony jest z liniami adresowymi od SA(1) do SA(15) i linią AEN odblokowanie adresu. Linie od SA(1) do SA(15) i linia AEN są częścią magistrali planarnej we/wy 90, przedstawionej na fig. 3A i 3B. Drugi układ PAL U4 jest zaprogramowany do pełnienia funkcji zwykłego dekodera adresów, wystawiając aktywny niski sygnał DCD#, gdy określony wcześniej adres znajduje się na liniach adresowych od SA(1) do SA(15) i linia AEN odblokowanie adresu jest aktywna. W tym przykładzie wykonania wynalazku, drugi układ PAL U4 jest wstępnie zaprogramowany, aby dekodować dwa kolejne 8 bitowe porty we/wy (I/O) o adresach OECH i OEDH. Alternatywnie, sygnał DCD# może być generowany przez inne urządzenie elektroniczne takie, jak sterownik pamięci lub zestaw układów sterownika ISA.
Pierwszy układ PAL Ul zaprogramowany, aby zapewnić kilka funkcji: (i) interfejs odczytu/zapisu miedzy jednostką CPU a mikrosterownikiem U2, umożliwić przekazywanie poleceń i danych między jednostką CPU 40 a mikrosterownikiem U2, (ii) logiczny pierścień przerwania myszki INT12 i przerwania klawiatury INT1; oraz wyjście ustawiające w stan początkowy do ustawiania w stan początkowy mikrosterownika U2 odpowiednio do poleceń z jednostki CPU 40.
Pierwszy układ PAL Ul używa dwóch kolejnych portów we/wy, tutaj traktowanych jako „porty gospodarowania zasilaniem”. Pierwszy układ PAL Ul ma osiem (8) wejść od magistrali planarnej we/wy 90: SD(4), SD(0). SA(0). IOW#. IOR#, RSTDRY i IRO12. Pierwszy układ PAL Ul jest ustawiany w stan początkowy do znanego warunku początkowego poprzez aktywny wysoki sygnał wejściowy RST DRV na pin 7 (16), który generowany jest przez sterownik pamięci 46.
Linia ustawiająca stan początkowy (zerowania) RST51 mikrosterownika U2 podawana jest na pin 9. Układ ustawiający stan początkowy 920 odpowiada za generowanie sygnału linii RST751. przy czym obejmuje on cztery rezystory R4, R16, R17 i R18, dwa kondensatory Cl i C8, dwa tranzystory MOSFETS 02 i 03, połączone z pierwszym układem PAL U1 i mikrosterownikiem U2, jak przedstawiono na fig. 6A. Układ ustawiający stan początkowy 920 sprzęga sygnał wyjściowy z linii RESET (ustawiający stan początkowy) z pierwszego układu PAL Ul z sygnałem wejściowym RST751 (ustawiającym stan początkowy) mikrosterownika U2 tak, że kiedy linia RESET jest logiczną 1, wtedy linia RST751 ustawiana jest do logicznej 1, powodując tym samym ustawienie stanu początkowego (wyzerowanie) mikrosterownika U2.
Pierwszy układ PAL Ul ustawia w stan początkowy (zeruje) mikrosterownik U2, odpowiednio do jednostki centralnej CPU 40, wpisującej logiczną 1 na bit 0 portu sterującego OEDH. Wpisanie logicznej 1 na bit 0 portu sterującego OEDH powoduje to, że pierwszy układ PAL U1 ustawia linię RESET do logicznej 1, co ustawia linie RST751 do logicznej 1, powodując tym samym ustawienie mikrosterownika U2 w stan początkowy. Jednostka CPU 40 zeruje żądanie ustawienia w stan początkowy poprzez wpisanie logicznego 0 na bit 0 portu sterującego OEDH.
Ponadto układ ustawiający stan początkowy ustawia linię RST751 do logicznej 1, powodując tym samym ustawienie mikrosterownika U2 w stan początkowy, kiedykolwiek napięcie sygnału AUX5 podnosi się o zadaną wielkość, jakby to zdarzyło się po zmniejszeniu napięcia sygnału AUX5 podczas wystąpienia „ograniczenia zużycia energii elektrycznej” lub „wyłączenia” źródła prądu AC dla zasilacza 17, jak przedstawiono na fig. 6C. W konkretnej konfiguracji z fig. 6A, linia RST751 jest ustawiana do logicznej 1 na okres czasu określony przez rezystor R17 i kondensator C8 (powodując ustawienie w stan początkowy mikrosterownika U2). gdy napięcie sygnału AUX5 wzrasta o wielkość progową w określonym czasie większym niż stała czasowa określona przez rezystor R4, R16 i kondensator Cl. Co może zachodzić o typowych ograniczeniach zużycia energii eklektycznej lub jej wyłączeniach. Wartością progową jest w przybliżeniu wartość 1,5 VDC w przykładzie wykonania wynalazku, przedstawionym na fig. 6A.
180 098
Odnosząc się teraz do fig. 6C, przedstawione są kształty fali dla układu ustawiania stanu początkowego 920 w okresie czasu, gdy wartość sygnału AUX5 rośnie, przy zastosowaniu zasilania AC do zasilacza 17 i w okresie czasu w trakcie którego zachodzi „ograniczenie zużycia energii elektrycznej”. Przed chwilą tO zasilacz 17 nie generuje sygnału AUX5, przy czym sygnał VBAT wynosi w przybliżeniu 3,3 V, tranzystor Q3 przewodzi i sprowadza linię RST751 do potencjału masy. W chwili tO zasilacz 17 zaczyna generować sygnał AUX5 i napięcie rośnie ze stałą opartą na obciążeniu i kondensatorach w zasilaczu 17, mających wpływ na sygnał AUX5. Węzeł 1 - węzeł między Cl i R4 jest sprzężony pojemnościowo z sygnału AUX5, zatem napięcie w nim rośnie, gdy rośnie sygnał AUX5.
W chwili ti, napięcie w Węźle 1 osiąga w przybliżeniu wartość 1,5 V, które jest wystarczające do wysterowania tranzystora 02, co powoduje przejście Węzła 2 na potencjał masy. W chwili t2, gdy napięcie w Węźle 2 przechodzi przez 2,5 V, tranzystor 03 przestaje przewodzić i sygnał na linii RST571 skacze do poziomu sygnału AUX5 poprzez rezystor R18 oraz rośnie wraz z sygnałem AUX5 w przybliżeniu do wartości 5 V. Kiedy linia RST751 przyjmuje w przybliżeniu wartość 3 V, wtedy mikrosterownik U2 ma ustawiony stan początkowy.
W chwili t3, sygnał AUX5 przestaje wzrastać, zatem napięcie w Węźle 1 też przestaje rosnąć i węzeł zaczyna rozładowywać się do potencjału masy (linia RESET pierwszego układu PAL Ul jest w stanie NISKI (LOW) ze stałą określoną przez kondensator Cl i rezystor R4. W chwili t4, gdy napięcie w Węźle 1 przechodzi przez wartość około 1,5 V, tranzystor 02 przestaje przewodzić i Węzeł 2 ładuje się ze stałą określoną przez kondensator C8 i rezystor R17. W chwili t5, gdy napięcie w Węźle 2 przechodzi przez wartość około 2,5 V tranzystor 03 przewodzi, sprowadzając linię RST751 do potencjału masy. Stąd, ustawianie stanu początkowego włączenia zostaje zakończone, przy czym system jest zwykle w tym stanie przy wartości sygnału AUX5 wynoszącej 5 V, sygnału VBAT wynoszącego 3,3 V, potencjale Węzła 1 równym potencjałowi masy i potencjale Węzła 2 równym sygnałowi VBAT.
W chwili t6, na linii sygnału AUX5 rozpoczyna się „ograniczenie zużycia energii elektrycznej” i sygnał AUX5 rozładowuje się. Będąc pojemnościowo sprzężony z sygnałem AUX5, potencjał Węzła 1 stara się podążać za sygnałem AUX5, lecz nie może, ponieważ diody w pierwszym układzie PAL Ul zapobiegają przed obniżeniem napięcia o więcej niż -0,5 V. W chwili t7, napięcie sygnału AUX5 osiąga najniższy punkt i zaczyna wzrastać ponownie. Ponownie potencjał Węzła I nadąża za sygnałem AUX5 i rośnie. W chwili t8 potencjał Węzła 1 osiąga w przybliżeniu 1,5 V, co wystarcza do wysterowania tranzystora 02, który sprowadza potencjał Węzła 2 do masy. W chwili t9 potencjał Węzła 2 przechodzi przez 2,5 V, tranzystor Q3 przestaje przewodzić i linia RST571 skacze do poziomu AUX poprzez rezystor R18 oraz rośnie wraz z sygnałem AUX5 w przybliżeniu do wartości 5 V. Kiedy linia RST751 przyjmuje w przybliżeniu wartość 3 V, wtedy mikrosterownik U2 ma ustawiony stan początkowy.
W chwili tlO, sygnał AUX5 przestaje wzrastać, zatem napięcie w Węźle 1 też przestaje rosnąć i węzeł zaczyna rozładowywać się do potencjału masy (linia RESETpierwszego układu PAL Ul jest w stanie NISKI (LOW) ze stałą określoną przez kondensator Cl i rezystor R4. W chwili tli, gdy napięcie w Węźle 1 przechodzi przez wartość około 1,5 V, tranzystor 02 przestaje przewodzić i Węzeł 2 ładuje się ze stałą określoną przez kondensator C8 i rezystor R17. W chwili t!2, gdy napięcie w Węźle 2 przechodzi przez wartość około 2,5 V, tranzystor 03 przewodzi, sprowadzając linię RST751 do potencjału masy. Zatem ustawianie stanu początkowego, wywołanego ograniczeniem zużycia energii elektrycznej jest zakończone. Należy zauważyć, że podczas konkretnego ograniczenia zużycia energii elektrycznej, Węzeł 1 nie uzyskuje potencjału ponad 3 V i stąd nie mogłoby nastąpić ustawienie stanu początkowego mikrosterownika, jeśli połączony jest z końcówką linii RTS751. Jednakże napięcie sygnału AUX5 jest obniżone poniżej 4 V, co mogłoby wystarczyć, aby spowodować wejście mikrosterownika U2 do niezdefiniowanego stanu.
Próg dla uruchomienia ustawiania stanu początkowego związany jest z wartością odniesienia, zatem, aby zwiększyć lub obniżyć napięcie progowe, konieczne jest odpowiednio zwiększenie lub zmniejszenie wartości odniesienia (w tym przypadku sygnału VBAT).
180 098
Układ ustawiania stanu początkowego zapewnia korzyści związane ze zwiększoną ochroną ustawiania stanu początkowego dla mikrosterownika U2, będąc przy tym układem niedrogim i w istocie nie zużywającym mocy, gdy nie następuje ustawianie stanu początkowego mikrosterownika U2.
Odnosząc się z powrotem do fig. 6A, mikrosterownik U2 jest sprzężony z jednostką CPU 40 poprzez pierwszy układ PAL Ul i ma szereg wejść i wyjść oraz funkcji, które dają się sterować od wewnątrz.
Sygnał SWITCH (przełączniki) wchodzi na pin 8 (P0.0) i odzwierciedla bieżący stan przycisku 21. Przycisk 21 jest normalnie rozwarty. Przy rozwartym przycisku 21, linia SWITCH ustawiana jest do wartości logicznego 0 (masa) poprzez rezystor Rl. Kiedy przycisk 21 zostanie naciśnięty, powodując zdarzenie zamknięcia, wtedy linia SWITCH jest ustawiana do wartości logicznej 1 (sygnał AUX5) poprzez rezystor R13. Kondensator C6 likwiduje zakłócenia (odbicia) związane ze zdarzeniem zamknięcia przełącznika, przy czym dalsze eliminowanie zakłóceń po zdarzeniu zamknięcia przełącznika 21 jest wykonywane w ramach mikrosterownika U2 poprzez odczytywanie sygnału SWITCH określoną wcześniej liczbę razy, np. 50 razy, upewniając się, że linia SWITCH była taka sama dla tych wszystkich odczytów.
Regulowanie zasilacza 17 jest bezpośrednio sterowane przez mikrosterownik U2. Jak przedstawiono na fig. 6A, sygnał ON wychodzi na pin 5 (P3.0) i wraz z sygnałem SWITCH tworzy sumę logiczną OR na drucie poprzez rezystor R6 do sterowania sygnałem ON# zasilacza. Kiedy sygnał ON jest logiczną 1, tranzystor MOSFET Ol przewodzi, powodując tym samym ustawienie linii ON# (pin 2 zworki JP2) do logicznego 0 (GND), co wywołuje rozpoczęcie dostarczania przez zasilacz 17 regulowanej mocy do systemu poprzez szyny ± 5 VDC i ±12 VDC. Z drugiej strony, kiedy linia ON przyjmuje wartość logicznego 0, tranzystor MOSFET Ol nie przewodzi, powodując tym samym ustawienie linii ON# (pin 2 zworki JP2) do logicznej 1 (sygnał AUX5) poprzez rezystor R7, co wywołuje przerwanie dostarczania przez zasilacz 17 regulowanej mocy do systemu poprzez szyny ± 5 VDC i ± 12 VDC.
Stan linii ON jest sterowany przez mikrosterownik U2, odpowiednio do zdarzenia zamknięcia przełącznika 21 i odpowiednio do wymagań jednostki centralnej CPU 40 poprzez bit zapisywalnego rejestru w obrębie mikrosterownika U2, który może być zapisany przez tę jednostkę. Mikrosterownik U2 jest zasilany przez sygnał AUX5, zatem mikrosterownik U2 jest zasilany stale, wykonując kody programowe i sterując systemem. Jeśli zasilacz 17 nie dostarcza regulowanej mocy do systemu przez szyny ± 5 VDC i ± 12 VDC i albo (i) przełącznik 21 jest naciśnięty albo (ii) zachodzi jakieś zdarzenie zewnętrzne, to mikrosterownik U2 wystawia sygnał ON, powodując tym samym, że zasilacz 17 dostarcza regulowaną moc do systemu przez szyny ± 5 VDC i ± 12 VDC. Mikrosterownik kontynuuje wystawianie sygnału ON po zwolnieniu przełącznika 21.
Jako obwód działający z rezerwą, zasilacz 17 może być włączony pod bezpośrednią kontrolą użytkownika poprzez przycisk 21. Typowo opcja ta będzie używana wyłącznie wtedy, gdy mikrosterownik przestanie funkcjonować zgodnie z oczekiwaniem, czego dowodem będzie niedostarczanie zasilania przez zasilacz odpowiednio do naciśnięcia przycisku mocy 21. Jak przedstawiono na fig. 6A, przełącznik 21 steruje również linią ON# zasilacza 17 poprzez diodę CR2, MOSFET OL rezystor R7 i zworkę JP2. Przycisk 21 jest normalnie otwarty i linia SWITCH jest ustawiana do logicznego 0 poprzez rezystor R1 i tranzystor MOSFET Ol nie przechodzi, zatem linia ON# (pin 2 zworki JP2) jest ustawiana do logicznej 1 (sygnał AUX5) poprzez rezystor R7 a zasilacz 17 nie dostarcza regulowanej mocy poprzez szyny ± 5 VDC i ± 12 VDC. Kiedy przycisk 21 zostanie naciśnięty i przytrzymany przez użytkownika, linia SWITCH jest ustawiana do logicznej 1, a tranzystor MOSFET 01 przewodzi, co powoduje ustawienie linii ON# (pin 2 zworki JP2) do logicznego 0 (GND) i rozpoczęcie dostarczania przez zasilacz 17 regulowanej mocy poprzez szyny ± 5 VDC i ± 12 VDC. Z przyciskiem 21 ciągle wciśniętym, po podaniu zasilania do obwodu, system BIOS powoduje, że jednostka CPU 40 wykonuje test, czy mikrosterownik U2 ciągle funkcjonuje. Jeśli nie, to jednostka
180 098
CPU 40 ustawia stan początkowy mikrosterownika U2, który po tym wyzerowaniu, wykrywa, że przełącznik 21 jest naciskany. Zatem z przyciskiem 21 stale przytrzymywanym, mikrosterownik U2 wystawia sygnał ON i w końcu użytkownik zwalnia przełącznik 21 z przekonaniem, że mikrosterownik obecnie steruje zasilaczem 17. W celu użycia tej opcji podtrzymania, użytkownik musi nacisnąć przycisk 21 na jakiś okres czasu - rzędu sekund, w przybliżeniu dwóch sekund po pojawieniu się logo.
Mikrosterownik U2 wyłącza system jedynie w odpowiedzi na (i) naciśnięciu przełącznika 21 lub (ii) na polecenie wyłączenia systemu skierowane przez jednostkę CPU 40 do tego mikrosterownika. Dla tego mikrosterownika zdarzenia te są takie same, ponieważ jest on skonfigurowany tak, aby zdarzenie naciśnięcia przełącznika było powodowane przez zdarzenie zwarcia przełącznika 21 lub poprzez jednostkę centralną CPU 40, przy czym naciśnięcie/ zwolnienie przycisku sprzętowego jest traktowane w istocie tak samo, jak naciśnięcie/zwolnienie przycisku programowego. Mikrosterownik U2 wyłącza system bez polecenia z jednostki CPU 40 jedynie wtedy, kiedy w mikrosterowniku U2 wyzerowany jest Znacznik Zezwolenia Zawieszenia. W takim przypadku, kiedy system jest zasilany oraz Znacznik Zezwolenia Zawieszenia jest zerowany, odpowiednio do zdarzenia zwarcia przełącznika 21, wtedy mikrosterownik U2 zeruje sygnał ON, skutkiem tego zasilacza 17 przestaje dostarczać regulowaną moc poprzez szyny ± 5 VDC i ±12 VDC. Sygnał ON pozostaje wyzerowany po zwolnieniu przycisku 21.
Mikrosterownik U2 wyłącza również system odpowiednio do polecenia z jednostki CPU 40, jeśli byłoby ono wydane po prawidłowym zapamiętaniu stanu systemu w napędzie dysku stałego (zawieszenie). Odpowiednio do takiego polecenia, mikrosterownik U2 zeruje sygnał ON, skutkiem tego zasilacz 17 przestaje dostarczać regulowaną moc poprzez szyny ± 5 VDC i ± 12 VDC.
Mikrosterownik U2 może również wykrywać i oddziaływać na system na podstawie pewnych zdarzeń, jeśli one zachodzą. Sygnał ΕΧΤ RING wchodzi na pin 7 (PO. 1) i umożliwia mikrosterownikowi wykrycie sygnału wywołania z włączonego zewnętrznego modemu 902. Jak jest to znane, typowe zewnętrzne modemy dostarczają sygnał dzwonka (wywołania), który przerzuca się do logicznej 1 w dobrze znanym formacie RS-232, gdy sygnał dzwonka zostaje wykryty na łączach telefonicznych a/b. Sygnał ten sprzęgany jest z mikrosterownikiem U2 poprzez diodę CR6 i dzielony na rezystor RIO i rezystor RH. a na końcu wprowadzany do mikrosterownika U2 poprzez linię EST RING. Przerzucony sygnał jest próbkowany co 25 milisekund i analizowany przez mikrosterownik U2, który uważa sygnał dzwonka za obecny, gdy tylko wejście to ma wartość logicznej 1 dla dwóch kolejnych próbek. Odpowiednio do napotkanych warunków, mikrosterownik U2 uznaje sygnał ON, powodując tym samym, że zasilacz 17 dostarcza regulowaną moc poprzez szyny ± 5 VDC i ±12 VDC. W celu użycia sygnału ΕΧΤ RING do wykrywania nadchodzącego wywołania telefonicznego, musi być obecny zewnętrznie zasilany modem 902.
Alternatywnie, inne urządzenie, które dostarcza sygnał binarny zgodny ze specyfikacją RS-232 (lub wystarczająco bliski tej specyfikacji, aby uznać sygnał ΕΧΤ RING) może być sprzężone z linią ΕΧΤ RING i może być używane do pobudzania systemu, np. sensory ruchu, sensory alarmu włamaniowego, sensory aktywizowane głosem, sensory światła, sensory światła podczerwonego, sensory „grzechotania” (drgań mechanicznych) itd.
Jak przedstawiono na fig. 6A i 6B, niniejszy przykład wykonania wynalazku ma również poczynione założenie do wykrywania sygnału dzwonka telefonicznego z wewnętrznego modemu 900, mającego transoptor OPTO1. oparty o układ wykrywania dzwonka. Wewnętrzny modem 900 może być zaprojektowany dla płyty planarnej 20 albo umieszczony w jednym z gniazd rozszerzeń 78. W tym ostatnim przypadku, modem 900 musi być zmodyfikowany, aby uzyskać złącze typu berg lub podobne, umożliwiające elektryczne połączenie sygnału z transoptora OPTO1 z układami gospodarowania zasilaniem z fig. 6A. Sygnał ΕΧΤ WAKEUP# wchodzi na pin 4 (PO.2) mikrosterownika U2 i jest używany do wprowadzenia sygnału z transoptora wykrywania dzwonka OPTO1 z wewnętrznego modemu 900. Sygnał ten jest
180 098 sprzężony poprzez rezystor R9 i rezystor R5, diodę CR6 i kondensator C9 oraz ostatecznie wchodzi do mikrostertownika U2 poprzez linię sygnału ΕΧΤ WAKEUP#.
Układ zabezpieczenia przepięciowego 905 wewnętrznego modemu 900 połączony jest z liniami telefonicznymi a/b i (i) zapewnia ochronę przed wyładowaniami atmosferycznymi lub innymi zdarzeniami elektrycznymi, które mogłyby uszkodzić modem 900 oraz (ii) ustawia progowe napięcie dzwonka.
Zmieniający się sygnał z transoptora OPTOl jest wykrywany i analizowany przez mikrosterownik U2, który uznaje zawsze, że sygnał dzwonka jest obecny, gdy trzy kolejne okresy sygnału ΕΧΤ WAKEUP mają częstotliwość między 15,1 Hz a 69,1 Hz. Inaczej niż obwód sygnału ΕΧΤ RING - który musi być zasilony, aby dostarczyć sygnał z ΕΧΤ RING - wewnętrzny modem 900 nie potrzebuje być zasilany dla potrzeb transoptora OPTOl, aby dostarczyć odpowiedni sygnał na linii ΕΧΤ WAKEUP#, która normalnie podłączona jest do sygnału AUX5 przez receptor R5.
Mikrosterownik U2 może przerwać pracę jednostki CPU 40 poprzez SMI, to jest przerwanie zarządzania systemowego jednostki centralnej CPU (SMI - System Management Interrupt), jeśli jednostka CPU 40 jest wyposażona w mechanizm przerwań SMI, przy czym jednostka (CPU 40 nie potrzebuje być wyposażona w mechanizm przerwania SMI). Sygnał SMI OUT# wyprowadzony jest na pin 3 (P3.2) mikrosterownika U2 i umożliwia mikrosterownikowi U2 bezpośrednie przerwanie pracy CPU 40, bez oczekiwania aż system operacyjny dokona walidacji uprawomocnienia lub w inny sposób zezwoli na przerwanie. Stan linii SMI OUT# jest sterowany przez bit, dającego się zapisywać rejestru, umieszczonego w obrębie mikrosterownika U2, który może być zapisany przez jednostkę CPU 40. Ponadto mikrosterownik U2 może wystawić sygnał SMI OUT# i tym samym przerwać pracę CPU 40 (1) odpowiadając na wykryty stan aktywności na linii ACTIVITY# lub (ii) zanim mikrosterownik U2 spowoduje zatrzymanie dostarczania mocy regulowanej dla systemu przez zasilacz 17. Zdarzenia te pojedynczo lub oba mogą uaktywnić lub zablokować polecenia z jednostki CPU 40 do mikrosterownika U2. Ponadto mikrosterownik U2 może wystawić sygnał SMI OUT# i tym samym przerwać pracę CPU 40 (i) odpowiednio do wykrytego przerwania na linii ACTIYITY# lub (ii) zanim mikrosterownik U2 spowoduje zaprzestanie dostarczania regulowanej mocy do systemu przez zasilacz 17. Na zdarzenia te pojedynczo lub razem może zezwalać lub blokować je, jednostka CPU 40 poprzez swoje polecenia kierowane do mikrosterownika U2.
Przy każdym przerwaniu zarządzania systemowego SMI, mikroprogram w CPU jednostka 40 zapamiętuje jej stan w specjalnym obszarze pamiętania stanu jednostki CPU 40, dokonując transferu do oraz z pamięci. Od tego czasu, jednostka CPU 40 wykonuje program obsługi przerwań, który realizuje funkcje jak poniżej. W celu odtworzenia stanu jednostki CPU 40, program obsługi przerwań wydaje instrukcję RSM (wznowienie), co powoduje odtworzenie przez jednostkę CPU 40 jej własnego stanu ze specjalnego obszaru pamiętania.
Zanim jednostka CPU 40 spowoduje, że mikrosterownik U2 wystawi przerwanie do jednostki CPU 40 poprzez przerwanie SMI jednostki centralnej CPU 40, to jednostka CPU 40 zapisuje wartość do zmiennej w pamięci CMOS NVRAM, wskazując przyczynę dla przerwania SMI. W pamięci CMOS NVRAM wartość ta domyślnie przyjmuje 00H, wskazując jednostce centralnej CPU 40, że mikrosterownik U2 wystawia przerwania do jednostki CPU 40 asynchronicznie, jak zachodzi to, zanim mikrosterownik U2 spowoduje zaprzestanie dostarczania regulowanej mocy przez zasilacz 17. Po każdym przerwaniu SMI, jednostka CPU 40 ustawia zmienną w pamięci CMOS NVRAM na 00H. Odpowiednio do tej wartości, jednostka CPU 40 wykonuje pewne zadanie przy założeniu, że system ma być wkrótce wyłączony przez mikrosterownik U2. Jednostka CPU 40 może przedłużyć okres, przed upływem którego mikrosterownik U2 wyłączy zasilanie systemu, poprzez periodyczne ponowne uruchamianie zegara przedłużania wyłączania zasilania, znajdującego się w mikrosterowniku U2.
Podczas okresu czasu, zanim nastąpi wyłączenie systemu, jednostka CPU 40 może wykonać liczne zadania, np. ze względu na to, że użytkownik mógł zmienić jeden lub więcej parametrów, które wpływają na alarm pobudzenia, jednostka CPU 40 ponownie oblicza
180 098 i zapisuje do mikrosterownika U2 nowe minuty, jako wartość pobudzenia. Ponadto, jednostka CPU 40 zapisuje do pamięci CMOS NVRAM pewne informacje, które mają być później zapisane do napędu dysku stałego 31 takie, jak okres czasu, w którym system komputerowy działał od swego ostatniego włączenia.
Inne wartości zapisane przez jednostkę CPU 40 obejmują: 01H, która wskazuje, że jednostka CPU 40 ma przeskoczyć do Procedury Zawieszenia przy 254, 02H, która wskazuje, że CPU 40 ma przeskoczyć do Procedury Wznowienia przy 454 i 0FFH, która wskazuje, że jednostka CPU 40 ma ustawić specjalny obszar pamiętania stanu CPU w strukturze danych segmentu E000H.
W niniejszym przykładzie, mikrosterownik uzyskuje sterowanie nad wygaszaniem monitora 11. Sygnał DISP BLANK wychodzi na pin 1 (P3.4) mikrosterownika U2 i bezpośrednio steruje wygaszaniem monitora 11. Dwa inwertery U3D i U3E sprzęgają sygnał DISP BLANK z liniami ESYNC# i BLANK#. Przy liniach ESYNC# i BLANK# w stanie logicznej 1, sterownik wizji 56 generuje sygnał wizji. Kiedy ESYNC# i BLANK# są logicznym 0 (GND), wtedy sterownik wizji 56 przestaje generować sygnał wizji. Stan linii DISP BLANK jest sterowany przez bit rejestru zapisywalnego, który może być zapisany przez jednostkę CPU 40, umieszczoną w obrębie mikrosterownika U2. Jednostka CPU 40 przekazuje instrukcje do mikrosterownika U2, aby wygasić monitor, gdy system wchodzi do stanu gotowości 152. Ponadto, linia DISP BLANK jest sekwencyjnie ustawiana, a następnie zerowana odpowiednio do zdarzeń zamykania przełącznika 21. Podobnie, stan aktywny na dowolnym z aktywnych przerwań, w tym przypadku sygnałów INT1 i INT2, powodują, że mikrosterownik zeruje linię DISP BLANK, pozwalając tym samym sterownikowi wizji 56 generować sygnał wizji.
Ponadto, mikrosterownik U2 steruje częstotliwością sygnałów zegarowych, generowanych przez syntezator zegarowy 906. Trzy zworki typu Berg JPO, JP1 i JP2 nie przedstawione na rysunku, sterują syntezatorem zegarowym jak następuje: kiedy JPO=O, JP1=1 i JP2=0, wtedy syntezator zegarowy generuje sygnał zegarowy 33 MHz, kiedy JPO=1, JP=1 i JP2=1, wtedy syntezator zegarowy generuje sygnał zegarowy 25 MHz i kiedy JPO=O, JP1=1 i JP2=1, wtedy syntezator zegarowy generuje sygnał zegarowy 8 MHz. Syntezator zegarowy 906 steruje dalej trzema liniami zegarowymi CLK0, CLK1, CLK2, które odpowiadają zworkom JPO, JP1 i JP2. Jak przedstawiono na fig. 6A, trzy linie CLK0, CLK1, CLK2 są sterowane przez mikrosterownik U2 poprzez sygnał CLK SLOW#, który wychodzi na pin 2 (P3.3) mikrosterownika U2. Jak przedstawiono sygnał CLK SLOW# jest podwójnie odwrócony na inwerterach z otwartymi wyjściami kolektorowymi U3A, U3B i U3C. Również rezystory R15 i R8 są rezystorami do ustawiania, odpowiednio wyjścia kolektorowego układu U3A i wejścia CLK0 syntezatora zegarowego 906 do logicznej 1.
Trzy sygnały zegarowe CLK0, CLK1 i CLK2 oraz trzy zworki JPO, JP1 i JP2 sterują syntezatorem zegarowym jak następuje: kiedy sygnał CLK SLOW# jest logiczną 1, wtedy sygnały CLK1 i CLK2 są również logicznymi 1, zatem syntezator zegarowy 906 jest sterowany przez zworki JP1 i JP2 i generuje wyższe sygnały zegarowe 25 MHz lub 33 MHz na użytek systemu. Z drugiej strony, kiedy sygnał CLK SLOW# jest logicznym 0, wtedy sygnały CLK1 i CLK2 są również logicznymi 0, zatem syntezator zegarowy 906 generuje sygnał zegarowy o niższej częstotliwości 8 MHz na użytek systemu, powodując tym samym mniejsze zużycie mocy. Jak przedstawiono na fig. 6A, zworka typu Berg oddziela linię CLK SLOW# od linii CLK0. Jeśli zworka znajduje się na miejscu, to linia CLK0 nadąża za linią CLK SLOW#. Z drugiej strony, jeśli brak w tym miejscu zworki, to linia CLK0 pozostaje przyciągnięta do logicznej 1 poprzez rezystor R8, niezależnie od stanu sygnału CLK SLOW#. Stan linii CLK SLOW# sterowany jest przez bit zapisywalnego rejestru, znajdującego się w obrębie mikrosterownika U2, który może być zapisywany przez jednostkę CPU 40. Ponadto linia CLK SLOW# może być wyzerowana przez mikrosterownik U2 w odpowiedzi na stan aktywny na linii ACTIVITY#. Jak jest to oczywiste, w niniejszym wynalazku można wykorzystać także inne syntezatory zegarowe, przy czym połączenia między mikrosterownikiem U2 i syntezatorem
180 098 zegarowym można byłoby zmienić, aby dopasować się do specyficznych wymagań, związanych z użyciem konkretnego syntezatora.
Ponadto, mikrosterownik U2 bezpośrednio steruje zapaleniem diody świecącej sygnalizującej funkcje zasilanie/sprzężenie zwrotne LED 23. Sygnał LED CNTRL wprowadza się na pin 22 (P3.3L umożliwiając mikrosterownikowi U2 bezpośrednie sterowanie diodą świecącą zasilanie/sprzężenie LED 23. Rezystory R2 i R3 oraz diody CR4 i CR5 umożliwiają wzbudzanie diody świecącej zasilanie/sprzężenie LED 23 poprzez szynę zasilania AUX5 lub szynę zasilania VCC w odpowiedzi na linii LED CNTRL, będącej w stanie logicznego 0. Kiedy sygnał linii LED CNTRL jest logiczną 1, wtedy dioda świecąca zasilanie/sprzężenie LED 23 nie rozświetla się. Jak to poniżej zostanie obszerniej opisane, stanem linii LED CNTRL steruje mikrosterownik U2 w odpowiedzi na zdarzenie zamknięcia przełącznika 21 w odpowiedzi na alarm pobudzenia, w odpowiedzi na jeden lub więcej sygnałów dzwonkowych na dowolnym wejściu wykrywającym sygnał dzwonkowy lub w odpowiedzi na umieszczenie systemu w stanie gotowości.
Mikrosterownik U2 może sterować diodą LED 23, która może być zwykłą diodą świecącą mocy. Jako taka, dioda LED 23 rozświetla się po wystąpieniu zdarzenia zamknięcia przełącznika 21, które powoduje, że system zmienia stan wyłączenia 156 albo stan zawieszenia 154 na normalny stan operacyjny 150. Podobnie mikrosterownik U2 gasi diodę LED 23 po zdarzeniu zwolnienia przełącznika 21, co powoduje, że system zmienia normalny stan operacyjny 150 na stan zawieszenia 154 albo na stan wyłączenia 156.
Ponadto, dioda LED 23 może być selektywnie rozświetlana przez mikrosterownik U2 w określonym tempie, np. co sekundę, aby wskazać, że system jest w stanie gotowości 152. Ponadto dioda LED 23 może być selektywnie rozświetlana przez mikrosterownik U2 w różnym tempie, np. co pół sekundy, aby wskazać, że system został pobudzony przez dzwonek lub alarm oraz, że system jest albo w stanie wyłączenia, albo w stanie zawieszenia. Alternatywnie, podczas stanu zawieszenia dioda LED 23 może być selektywnie rozświetlana przez mikrosterownik U2, grupami błysków, aby wskazać ile razy system miał włączane zasilanie przez zdarzenia zewnętrzne takie, jak dzwonek, alarm itd. oraz ile razy był wyłączany w wyniku wyczerpania czasomierza nieaktywności stanu zawieszenia. W tym przypadku system BIOS zaopatrzony jest w jedną lub więcej funkcji, umożliwiające systemowi OS i programom aplikacyjnym modyfikowanie liczby, określającej ile razy mikrosterownik U2 ma rozświetlać diodę LED 23, np. jeśli system jest pobudzony przez dzwonek oraz odbiera się transmisję obrazów nieruchomych, to telekomunikacyjny program aplikacyjny może wywołać określoną funkcję systemu BIOS, aby dodać jedno błyśnięcie do grupy błysków. Zatem system BIOS powoduje, że jednostka CPU 40 zapisuje nową liczbę błysków do mikrostetownika U2, który z kolei powoduje, że dioda LED 23 błyska poleconą liczbę razy.
Sygnał POWERGOOD wchodzi na pin 4 (P3.1) mikrosterownika U2 i umożliwiając jego wykorzystanie przez mikrosterownik U2 i jednostkę CPU 40. W szczególności mikrosterownik wykorzystuje sygnał POWERGOOD do wprowadzenia układu detekcji błędów, opartej o sprzężenie zwrotne oraz ich korekcji w celu określenia, czy zasilacz 17 znalazł się w stanie błędu oraz w celu wyzerowania błędnych warunków. Jak opisano to w innym miejscu tej specyfikacji, jeśli sygnał ON został wystawiony na pewien okres czasu (np. trzy sekundy) oraz sygnał POWERGOOD jest w stanie logicznego 0, wskazując, że zasilacz 17 nie dostarcza regulowanych napięć o prawidłowych poziomach, to mikrosterownik U2 zakłada, że zasilacz 17 jest w stanie błędu z powodu np. przeciążenia prądowego. Z kolei mikrosterownik U2, aby mieć możliwość wyzerowania błędnego warunku, przerywa wystawianie sygnału ON na pewien okres czasu (np. pięć sekund), aby umożliwić wyzerowanie błędu. Zatem, mikrosterownik U2 ponownie wystawia sygnał ON i oczekuje aż sygnał POWERGOOD stanie się logiczną 1, wskazując, że zasilacz 17 dostarcza regulowaną moc do systemu. Bez tej detekcji błędów opartej o sprzężenie zwrotne oraz ich korekcji, zasilacz 17 mógłby pozostać, w błędnym stanie, a mikrosterownik U2 mógłby kontynuować wystawianie sygnału ON
180 098 i dokonywać prób, aby zasilacz 17 zaczynał generowanie regulowanej mocy. Jedynym rozwiązaniem byłoby odłączenie zasilania AC od zasilacza 17 i wyzerowanie błędu.
Na figurze 6D przedstawiono alternatywny przykład wykonania układu detekcji i korekcji błędów zasilacza. Ten przykład wykonania wykorzystuje cztery tranzystory FET O10 do Q13, rezystory R20 do 23, kondensator C20 i układ 74HC132 do wykrycia, kiedy zasilacz 17 jest w stanie błędu i wyzerowanie tego błędu. Tranzystor 012 wymusza stan NISKI sygnału ON na okres czasu określony przez rezystor R22 i kondensator C20, natomiast kiedy sygnału ON jest w stanie WYSOKI, wtedy następuje zasilanie AUX5 a napięcie VCC pozostaje poniżej progu wyzwalającego tranzystor Oli, zerując tym samym błędny warunek w zasilaczu.
Sygnał ACTIYITY# wchodzi na pin 19 (ΙΝΊΤ) mikrosterownika U2 i jest wykorzystywany przez mikrosterownik U2 odpowiednio do aktywności klawiatury 12 i myszki 13. Sygnał IRO1 jest sygnałem sprzętowego przerwania od klawiatury, który wchodzi na pin 8 (17) pierwszego układu PAL Ul. przy czym naciskając klawisz klawiatury 12 powoduje się pulsowanie sygnału IROł. Sygnał IRO12 jest sygnałem sprzętowego przerwania od myszki, który wchodzi na pin 11 (19) pierwszego układu PAL Ul. przy czym przesuwając myszką 13 lub naciskając klawisz myszki 13 powoduje się pulsowanie sygnału IRO12. Sygnały IRO1 i IRO12 są logicznie sumowane w pierwszym układzie PAL Ul i wychodzą, jako sygnał ACTIYITY#. Wykorzystanie sygnału ACTIYITY# nigdy nie pozwala mikrosterownikowi U2 na pominięcie żadnego stanu aktywności klawiatury 12 lub myszki 13.
Podczas stanu gotowości, aktywność dowolnego przerwania powoduje, że mikrosterownik U2 natychmiast wznawia wyświetlanie na monitorze. Posłużenie się w ten sposób przerwaniami od sygnałów IRO1 i IRO12 daje użytkownikowi natychmiastowe sprzężenie zwrotne w postaci wznowienia wyświetlania na monitorze, po powrocie ze stanu gotowości 152 do normalnego stanu operacyjnego 150. Bez tego, użytkownik mógłby nie odebrać sprzężenia zwrotnego, albo dopiero po kilku sekundach później, kiedy zarządzanie APM sprawdzi aktywność użytkownika, jak to przedstawiono na fig. 9.
Komunikacja między sterownikiem CPU 40 i mikrosterownikiem U2 realizuje się przy użyciu sygnału SD(0). który wchodzi na pin 18 (1/06) pierwszego układu PAL Ul i wchodzi do mikrosterownika U2 poprzez linię RWDO, która wychodzi z pinu 13 (1/03) pierwszego układu PAL Ul i wchodzi na pin 13 (PLO) mikrosterownika U2, sygnału SD(1). który wchodzi na pin 14 (Pl.l) mikrosterownika U2, sygnału SD(2). który wchodzi na pin 15 (PI.2) mikrosterownika U2. sygnału SD(3), który wchodzi na pin 16 (PI.3) mikrosterownika U2, sygnału SD(4), który wchodzi na pin 6 (15) pierwszego układu PAL Ul, Insygnału O STROBĘ#, który wchodzi, na pin 18 (INTO) mikrosterownika U2 i sygnału PROC RDY. który wychodzi z pinu 20 (PI .7) mikrosterownika U2. Pierwszy układ PAL Ul i mikrosterownik U2 są skonfigurowane i zaprogramowane tak aby dostarczać (i) czterobitowe równoległe zapisy z jednostki CPU 40 do mikrosterownika U2 wzdłuż szyny SD(0) poprzez szyny RWDO. SD(1). SD(2) i SD(3) z jednym adresem, będącym w zasadzie jednobitowym zapisem do zerowania (ustawiania w stan początkowy) mikrosterownika U2 oraz innym adresem będącym półbajtem zapisywanym w mikrosterowniku U2, który jest ważny tylko wtedy, kiedy bit danych sygnału SD(4) jest w stanie WYSOKI oraz (ii) szeregowe (jednobitowe) odczyty z mikrosterownika U2 przez jednostkę CPU 40 wzdłuż szyny SD(0) poprzez szynę RWDO, z jednym adresem, odpowiadającym bitowi statusu i innym, odpowiadającym bitowi danych z mikrosterownika U2.
Odnosząc się teraz do fig. 19 - przedstawiono na niej kilka procedur wykonywanych przez mikrosterownik U2, począwszy od etapu 1160. Mikrosterownik U2 zwykle wykonuje jedną z dwóch głównych procedur: Procedurę Włączenia Zasilania przy zadaniach od 1168 do 1216 lub Procedurę Wyłączenia Zasilania przy zadaniach od 1260 do 1308. Procedura Włączenia Zasilania wykonywana jest przez mikrosterownik U2, kiedy zasilacz 17 dostarcza regulowanej mocy poprzez szyny ±5 i ±12 lub zasilacz 17 nie dostarcza regulowanej mocy poprzez szyny ±5 i ±12. lecz system jest w trakcie włączania zasilania. Procedura Wyłączenia Zasilania wykonywana jest przez mikrosterownik U2. kiedy zasilacz 17 nie dostarcza regulowanej
180 098 mocy poprzez szyny ±5 i ±12 lub zasilacz 17 dostarcza regulowanej mocy poprzez szyny ±5 i ±12, lecz system jest w trakcie wyłączania zasilania. Ponadto występują trzy procedury sterowane przerwaniami: jedna do komunikacji z jednostką CPU 40 - od etapów 1220 do 1232, jedna do wykrywania aktywności myszki 13 lub klawiatury 12 - od etapów 1236 do 1244 i jedna, która dostarcza podstawę czasu z rozdzielczością 25-milisekund, pół sekundy oraz sekundową lub minutową - od etapów 1248 do 1256.
Po pierwsze, mikrosterownik U2 podlega inicjacji podczas etapu 1164, w trakcie którego inicjowane są wszystkie zmienne, zmienne licznikowe, a także inicjowane jest oraz zezwala się na przerwanie zegarowe, a także inicjowane są przerwania zewnętrzne, które sterują procedurą komunikacji i procedurą akty wności.
Procedura komunikacji jest procedurą sterowaną przerwaniami, zaczynającą się w etapie 1220, wykonującą się odpowiednio do stanu linii IO STROBĘ, której stan logicznego 0 wymusza pierwszy układ PAL Ul, stan ten wskazuje, że jednostka CPU 40 rozpoczyna polecenie lub zapytanie. W skrócie, procedura ta odbiera jedno lub więcej pół bajtowych poleceń lub zapytań z jednostki CPU 40, w etapie 1224 oraz wprowadza polecenie i/lub zwrotów danych, odpowiednio do zapytania, w etapie 1228 i zwraca sterowanie wykonywaniem programów do przerwanego kodu programowego w etapie 1232.
Mikrosterownik U2 kolejno odbiera półbajty z jednostki CPU 40, które tworzą polecenie lub zapytanie. Po odebraniu półbajtu mikrosterownik U2 wymusza przyjęcie stanu NISKI przez sygnał PROC RDY. Kiedy jest on gotowy do odbioru następnego półbajtu, wtedy wymusza on ponownie przyjęcie stanu WYSOKI przez sygnał PROC RDY. Po dostrzeżeniu przez jednostkę CPU 40 przejścia sygnału PROC RDY ze stanu NISKI do stanu WYSOKI, jednostka CPU 40 może z kolei zapisać następny półbajt polecenia.
Podczas gdy mikrosterownik U2 realizuje polecenie lub zapytanie odebrane z jednostki CPU 40, to nie może otrzymać innego polecenia, zatem mikrosterownik U2 ustawia linię PROC RDY w stan logicznego 0, wskazując jednostce centralnej CPU 40 (poprzez odczyt portu statusu), że mikrosterownik U2 nie może jeszcze zaakceptować następnego polecenia/zapytania. Kiedy skończy się ta realizacja, linia PROC RDY ustawiana jest w stan logicznej 1, wskazując jednostce centralnej CPU 40 (poprzez odczyt statusu portu), że mikrosterownik U2 jest gotowy do zaakceptowania następnego polecenia/zapytania.
Procedura aktywności jest procedurą sterowaną przerwaniami zaczynającą się przy etapie 1236, która wykonuje się odpowiadając na stan logicznego 0 linii ACTIYITY#. wymuszony przez pierwszy układ PAL Ul. który wskazuje, że użytkownik użył albo myszki 13, albo klawiatury 12. W skrócie, procedura ta odpowiadając na odebrane przerwanie (i) ustawia bit, wskazujący że wystąpiła aktywność albo myszki 13, albo klawiatury 12, (ii) odtwarza szybkość czasomierza, jeśli uaktywnione jest spowalnianie czasomierza, (iii) zapełnia ekran 11, jeśli dozwolone jest wygaszanie, (iv) ponownie uruchamia czasomierz odporny na uszkodzenia, (v) generuje przerwanie SMI skierowane do jednostki CPU 40, jeśli jest dozwolone, w etapie 1240. Ustawienie bitu przez tę procedurę podlega następnie odpytaniu przez Procedurę Nadzorczą za każdym poleceniem „podaj zdarzenie” APM, jak jest to określone bardziej szczegółowo w innym miejscu tej specyfikacji.
Procedura czasomierza jest procedurą sterowaną przerwaniami zaczynającą się w etapie 1248, która wykonuje się odpowiednio do wewnętrznego przerwania czasomierza, przy czym wykorzystuje ona swobodny 16-bitowy licznik, skonfigurowany do generowania przerwań co 25 milisekund, aby dostarczyć podstawę czasu dla mikrosterownika U2. Procedura czasomierza zapewnia następujące podstawy czasu: 25-milisekundowe, półsekundowe, sekundowe i minutowe. W skrócie, procedura ta odbiera przerwania, określa kiedy zaistniały różne chwile, wykonuje odpowiednio czynności w etapie 1252 i zwraca sterowanie wykonywaniem programów do przerwanego kodu w etapie 1256.
Co jeden impuls (co 25 milisekund), jeśli zasilacz nie dostarcza regulowanej mocy oraz, jeśli mikrosterownik skonfigurowany jest do odpowiadania na dzwonki (wywołania), procedura
180 098 czasomierza sprawdza wystąpienie wywołania RS-232 na linii ΕΧΤ RING i ustawia bit, jeśli takie znajdzie.
Co pół sekundy, w czasie stanu wyłączenia albo stanu zawieszenia, procedura czasomierza określa, czy powinna przerzucić diodę LED 23, aby dokonać wprowadzenia wzbudzenia sekwencji migania wskaźnika zewnętrznego wywołania, jak jest to określone bardziej szczegółowo w innym miejscu tej specyfikacji.
Co sekundę, w czasie stanu gotowości, procedura czasomierza określa, czy powinna przerzucić diodę LED 23, albo dokonać wprowadzenia wzbudzenia sekwencji migania wskaźnika stanu zawieszenia, jak jest to określone bardziej szczegółowo w innym miejscu tej specyfikacji.
Również co sekundę procedura czasomierza zmniejsza licznik czasomierza odpornego na uszkodzenie, zmniejsza licznik czasomierza APM zawieszenia spowodowanego uszkodzeniem i zmniejsza licznik czasomierza błędów zasilacza, jeśli ma to uzasadnienie oraz ustawia odpowiedni bit jeśli, nastąpiło wyczerpanie czasomierza. Czasomierz odporny na uszkodzenie jest czasomierzem 20-sekundowym, który po wyczerpaniu okresu zliczania powoduje, że mikrosterownik U2 wyłącza zasilanie systemu. Czasomierz odporny na uszkodzenia jest często uruchamiany ze stanu początkowym (jest zerowany) przez Procedurę Nadzorczą w odpowiedzi na polecenie „APM - podaj zdarzenia”, dlatego jak długo kod programowy wykonywany jest prawidłowo przez jednostkę CPU 40, czasomierz odporny na uszkodzenie nigdy nie wyczerpuje okresu swego zliczania. Jednakże, jeśli kod programowy przestaje wykonywać się prawidłowo, to czasomierz odporny na uszkodzenie wyczerpuje okres swego zliczania i odpowiednio do naciśnięcia lub zwolnienia przycisku mocy 21, mikrosterownik U2 powoduje przerwanie przez zasilacz 17, dostarczania regulowanej mocy na szynach ±5 i ±12 przy założeniu, że system BIOS i inne procedury nie działają prawidłowo.
Czasomierz APM zawieszenia spowodowanego uszkodzeniem jest 18-sekundowym zegarem uaktywnianym, gdy przełącznik 21 jest w stanie wy łączenia/zwolnienia wskazującym, że użytkownik próbuje wyłączyć system i powodującym, że system stara się zawiesić, po wyczerpaniu się okresu zliczania czasomierza, z nadzieją, że nastąpi to przed wyczerpaniem się czasomierza odpornego na uszkodzenie, powodującym, że mikrosterownik wyłączy system. Podobnie jak czasomierz odporny na uszkodzenie, tak czasomierz APM zawieszenia spowodowanego uszkodzeniem jest często uruchamiany ze stanem początkowym (zerowany) przez kod programowy, wykonywany przez jednostkę CPU 40, np. APM - Podaj Zdarzenia, APM - Działanie Nad Ostatnim Żądaniem, APM - Odrzucenie Ostatniego Żądania. Zatem, jak długo kod programowy wykonywany jest prawidłowo przez jednostkę CPU 40, tak długo czasomierz APM zawieszenia spowodowanego uszkodzeniem nigdy nie wyczerpuje okresu swego zliczania. Jednakże, jeśli kod programowy przestaje wykonywać się prawidłowo, to czasomierz APM zawieszenia spowodowanego uszkodzeniem wyczerpuje okres swego zliczania.
Kiedy czasomierz APM zawieszenia spowodowanego uszkodzeniem wyczerpie okres swego zliczania, wtedy mikrosterownik U2 ustawia bit. Bit ten podlega sprawdzaniu za każdym przerwaniem zegarowym poziomu 0, które pojawia się co około 55 milisekund. Ponadto procedura obsługi przerwania zegarowego poziomu 0 ponownie uruchamia czasomierz odporny na uszkodzenie. Jeśli procedura obsługi przerwania zegarowego poziomu 0 wykrywa, że czasomierz APM zawieszenia spowodowanego uszkodzeniem wyczerpał się, to przeskakuje ona do Procedury Zawieszenia próbując zawiesić system, jak opisano to w związku z fig. 10.
Zawieszenie rozpoczęte przez procedurę obsługi przerwania zegarowego poziomu 0 nie jest korzystną metodą dokonywania zawieszenia. Wiele programów aplikacyjnych i adapterów uwzględnia działanie APM i wykonuje zadania w odpowiedzi na zawieszenie systemu. Zawieszenie rozpoczęte przez procedurę obsługi przerwania zegarowego poziomu 0 nie może posłużyć się gospodarowaniem APM, aby wskazać tym uwzględniającym działanie APM jednostkom, że zawieszenie zbliża się. W związku z tym system ulega zawieszeniu bez prawidłowego przygotowania tych jednostek. Jako taki, system będzie zapamiętany poprzez
180 098 zawieszenie rozpoczęte przez procedurę obsługi przerwania zegarowego poziomu 0, zatem dane z pamięci nie zostaną stracone; jednakże użytkownik może potrzebować przeładowania maszyny, aby umieścić system we właściwym stanie, po zapamiętaniu pożądanych danych.
Czasomierz APM zawieszenia spowodowanego uszkodzeniem jest szczególnie przydatny w łataniu „dziur” w sterowniku gospodarowania typu APM w systemie SO, np. kiedy wyświetlane jest modalne okienko dialogowe Microsoft Windows 3.1, wtedy sterownik Windows APM przestaje wydawać polecenia APM - podaj zdarzenia. Zatem, jeśli wyświetlane jest modalne okienko dialogowe, a użytkownik naciska przycisk mocy 21 próbując zawiesić system, to system nie zawiesi się. Mikrosterownik U2 zauważy, że przełącznik jest w stanie wyłączenia/zwolnienia, lecz Procedura Nadzorcza nie zostanie wywołana, ponieważ przestały pojawiać się polecenia „APM - podaj zdarzenia”. Naciśnięcie przełącznika nie zadziała, dopóki modalne okienko dialogowe nie zostanie wyzerowane przez użytkownika. Jednakże, jeśli kiedyś wyczerpie się czasomierz APM zawieszenia spowodowanego uszkodzeniem, przy czym jeśli to wyczerpanie zostanie wykryte przez procedurę obsługi przerwania zegarowego poziomu 0, to stan systemu zostanie zapamiętany w zakresie możliwości, bez sygnalizowania tego jednostkom uwzględniającym działanie APM, że system jest zawieszany.
Co minutę procedura czasomierza zmniejsza liczbę minut do pobudzenia czasomierza alarmowego i czasomierza aktywności. Kiedy wyczerpią się minuty do pobudzenia czasomierza alarmowego, jeśli uaktywniony, to mikrosterownik spowoduje, że zasilacz 17 rozpocznie dostarczanie regulowanej mocy na szynach ±5 i ±12.
Po zainicjalizowaniu mikrosterownika U2, zasilacz 17 podlega testowaniu, w etapie 1168, aby określić, czy zasilanie jest wyłączone. Jeśli zasilanie jest jeszcze włączone, to mikrosterownik U2 sprawdza, czy zasilacz 17 nie uległ uszkodzeniu, w etapie 1172. Zasilacz 17 ma kilka wewnętrznych układów zabezpieczeń, które powodują zamknięcie systemu lub „błąd”. Mikrosterownik U2 określa, czy zasilacz 17 działa błędnie jak następuje: jeśli mikrosterownik działa (wskazując, że linia AUX5 jest zasilana, to znaczy zasilanie AC jest dostarczane do zasilacz 17) i mikrosterownik U2 wystawia sygnał ON, przy próbie spowodowania dostarczania regulowanej mocy przez zasilacz 17 na szynach ±5 i ±12. przy czym linia POWERGOOD nie jest wystawiana (wskazując, że zasilacz 17 nie dostarcza regulowanej mocy na szynach ±5 i ±12). wtedy zasilacz 17 działa błędnie i musi być ustawiony w stan początkowy (wyzerowany).
W etapie 1172, zasilacz 17 podlega faktycznie dwukrotnemu testowaniu. Mikrosterownik U2 wystawia sygnał ON i następnie czeka przez trzy sekundy, jak jest to mierzone w oparciu o wewnętrzną podstawę czasu. Kiedy sygnał POWERGOOD nie jest wystawiany po wystawieniu sygnału ON przez około trzy sekundy, wtedy mikrosterownik U2 zeruje sygnał ON i czeka następne pięć sekund. Następnie wystawia on sygnał ON i czeka następne trzy sekundy. Jeśli sygnał POWERGOOD nie jest wystawiany po wystawieniu sygnału ON przez trzy sekundy, to mikrosterownik U2 zeruje sygnał ON, uznając, że zasilacz 17 działa błędnie.
Jeśli zasilacz 17 działa błędnie, to mikrosterownik U2 przeskakuje do Procedury Wyłączenia Zasilania, jak wskazano w etapie 1174. Z drugiej strony, jeśli zasilacz 17 nie pracuje błędnie lub jest wyłączony, to mikrosterownik powoduje, że zasilacz 17 zaczyna dostarczać regulowaną moc na szynach ±5 i ±12, w etapie 1175 oraz inicjalizuje porty we/wy, włącza diodę LED 23 i uaktywnia przerwania zewnętrzne, w etapie 1176.
Figura 7 przedstawia automat stanów przełącznika podtrzymywanych przez mikrosterownik U2· Jak przedstawiono na fig. 7, zmiana stanów w odpowiedzi na zdarzenia zamknięcia przełącznika 21 i inne zdarzenia, takie jak ustawianie w stan początkowy systemu komputerowego 10 i zapisywanie dokonywane przez jednostkę CPU 40. Przy sygnale AUX5 nie dostarczanym przez zasilacz 17, mikrosterownik U2 nie jest zasilany, zatem stan przełącznika nie ma znaczenia, w etapie 174. Naciśnięcie przełącznika 21, dzwonek telefoniczny z dowolnego źródła, wyczerpanie się czasu w minutach do pobudzenia czasomierza alarmowego oraz polecenie z jednostki CPU 40 do mikrosterownika U2 powodują rozpoczęcie dostarczania przez zasilacz 17 mocy do systemu, jak jest to opisane w związku z fig. 6.
180 098
Jak przedstawiono na fig. 7, przełącznik 21 ma cztery stany monitorowane przez mikrosterownik U2: (i) stan włączenia/naciśnięcia 176 (w którym użytkownik przytrzymuje przycisk i próbuje włączyć maszynę), (ii) stan włączenia/zwolnienia 178 (w którym użytkownik zwolnił przycisk i próbuje włączyć maszynę), (iii) stan wyłączenia/naciśnięcia 180 (w którym użytkownik przytrzymuje przycisk i próbuje wyłączyć maszynę), (iv) stan wyłączenia/zwolnienia 182 (w którym użytkownik zwolnił przycisk i próbuje wyłączyć maszynę). Następnie, w etapie 1180, mikro sterownik U2 testuje, czy przełącznik jest w stanie wyłączony/zwolniony, wskazując, że użytkownik zwolnił przycisk i próbuje wyłączyć maszynę.
Kiedy w stanie 174 naciśnie się przełącznik 21, wtedy mikrosterownik U2 wchodzi do stanu przełącznika włączenie/naciśnięcie 176. Zwolnienie przełącznika 21 powoduje, że mikrosterownik U2 wchodzi do stanu przełącznika włączenie/zwolnienie 178. Podobnie, kiedy mikrosterownik U2 zostanie ustawiony w stan początkowy, wtedy wchodzi on do stanu włączenia/zwolnienia 178. Poprzez ponowne naciśnięcie przełącznika 21, powoduje się, że mikrosterownik U2 wchodzi do stanu wyłączenie/zwolnienie 182. Zatem kolejne zamykania przełącznika 21 powodują przechodzenie mikrosterownika U2 przez cykl czterech stanów, jak przedstawiono na fig. 7. Mikrosterownik U2 jest w stanie włączenia/zwolnienia 178, gdy system komputerowy 10 znajduje się w normalnym stanie operacyjnym 150. Programy aplikacyjne będą działać w tym stanie. W stanie tym system może wejść do i wyjść ze stanu gotowości 152. Stan ten więc odpowiada wygenerowanemu przez użytkownika żądaniu przerwania stanu zawieszenia. Stan przełącznika wyłączenie/zwolnienie jest stanem odpowiadającym żądaniu zawieszenia zgłoszonym przez użytkownika. Zatem, uruchamiając system w stanie wyłączenia 156 oraz jednokrotnie naciskając i zwalniając przełącznik 21 umieszcza się system komputerowy w normalnym stanie operacyjnym 150. Naciskając i zwalniając przełącznik 21 jeszcze raz generuje się żądanie zawieszenia, które jest odczytywane przez Procedurę Nadzorczą i której działanie przedyskutowano dokładniej w związku z fig. 9. Naciskając i zwalniając przełącznik 21 trzeci raz, zanim system znajdzie się w stanie zawieszenia 154, generuje się żądanie przerwania zawieszania, które odczytuje Procedura Nadzorcza.
Odnosząc się z powrotem do fig. 19, jeśli użytkownik zwolnił przycisk i próbuje wyłączyć maszynę, to mikrosterownik U2 przeskakuje do Procedury Wyłączania Zasilania, jak przedstawiono w etapie 1184.
Z drugiej strony, jeśli przycisk znajduje się w stanie wyłączenie/naciśnięcie, wskazującym, że użytkownik przytrzymuje przycisk próbując wyłączyć maszynę, to mikrosterownik U2 bada, czy stan przełącznika został zamaskowany przez system BIOS, w etapie 1192. System BIOS maskuje stan przełącznika jeden raz na wejście do stanu gotowości 152, zapobiegając naciśnięciu przełącznika, wymuszającego przejście systemu ze stanu gotowości do stanu zawieszenia, przeciwdziałając dezorientacji użytkownika, jak objaśniono to w innym miejscu.
Jeśli stan przełącznika 21 został zamaskowany przez system BIOS, to kod programowy mikrosterownika przeskakuje z powrotem do etapu 1176 i zeruje bit maski, umożliwiając następnemu naciśnięciu przełącznika spowodowanie wejścia systemu albo do stanu wyłączenia, albo do stanu zawieszenia. Z drugiej strony, jeśli nie został zamaskowany lub przełącznik nie jest w stanie wyłączenia/naciśnięcia, to mikrosterownik wykonuje procedurę sprawdzającą poprawność jego pracy (procedura poprawności - wykrywania kolizji) w etapie 1196.
Procedura poprawności służy do wskazywania jednostce centralnej CPU 40, że mikrosterownik U2 działa poprawnie. Wyjście linii CMD STATE# mikrosterownika (pin 17, PI.4) jest normalnie logiczną 1. Co 50-60 mikrosekund mikrosterownik U2 wymusza logiczne 0 na tej linii na około 1,5 mikrosekundy, a następnie podnosi stan tek linii do logicznej 1. Ze względu na to, że status portu gospodarowania zasilaniem, odczytywany przez jednostkę CPU 40 jest logicznym iloczynem stanu linii CMD STATE# i PROC RDY, to każde przejście ze stanu WYSOKI do stanu NISKI i z powrotem może być tak często monitorowane przez jednostkę CPU 40, np., gdy system ładuje się, po to, aby zagwarantować, że mikrosterownik U2 działa prawidłowo.
180 098
Następnie, mikrosterownik U2 sprawdza, czy system wydał polecenie wyłączenia zasilania, w etapie 1200. Jednostka CPU 40 może uzyskiwać dostęp do każdej zmiennej w mikrosterowniku U2 oraz mieć właściwie możliwość ich zmiany. Jeśli system BIOS ustawił zmienną wskazującą, że zasilanie systemu powinno być wyłączone, np. po tym, gdy nastąpiło zapisanie stanu systemu na twardym dysku 31 podczas zawieszenia, to mikrosterownik U2 przeskakuje do Procedury Wyłączenia Zasilania, jak wskazano to w etapie 1204.
Z drugiej strony, jeśli system BIOS nie wydał polecenia wyłączenia zasilania, to mikrosterownik U2 wykonuje Procedurę Odporną Na Uszkodzenia w etapie 1204. Czasomierz odporny na uszkodzenia jest 20-sekundowym zegarem, który jest uaktywniany, gdy zasilacz 17 dostarcza regulowaną moc na szynach ±5 i ±12. Procedura ta sprawdza, czy licznik czasomierza odpornego na uszkodzenia wyczerpał się, i ustawia bit, gdy tak się stało. Procedura ta ponownie uruchamia czasomierz odporny na uszkodzenia, jeśli system BIOS poleci to zrobić.
Następnie w etapie 1212, w celu synchronizacji mikrosterownika z zasilaczem 17, mikrosterownik sprawdza linię POWER GOOD w celu wykrycia, czy zasilacz 17 nadal dostarcza regulowaną moc na szynach ±5 i ±12.
Jeśli zasilacz 17 nie dostarcza regulowanej mocy na szynach ±5 i ±12. to mikrosterownik U2 przeskakuje do Procedury Wyłączenia Zasilania, jak przedstawiono w etapie 1216. Z drugiej strony, jeśli zasilacz 17 dostarcza regulowaną moc na szynach ±5 i ±12, to kod programowy mikrosterownika przeskakuje z powrotem do etapu 1180 i kontynuuje działanie.
Procedura Wyłączenia Zasilania zaczyna się w etapie 1260. Po pierwsze mikrosterownik U2 blokuje przerwanie aktywności w etapie 1264, aby zabezpieczyć ekran przed wygaszaniem.
Następnie, w etapie 1268 mikrosterownik sprawdza stan linii POWER GOOD w celu wykrycia, czy zasilacz 17 nadal dostarcza regulowaną moc na szynach ±5 i ±12. Jeśli zasilacz 17 dostarcza regulowaną moc na szynach ±5 i ±12, to mikrosterownik U2 bada, czy ekran powinien być wygaszany i/lub wyłączona dioda LED 23, w etapie 1272. Jeśli tak, to mikrosterownik U2 powoduje, że sterownik wizji 56 generuje sygnał wizji i/lub wyłącza diodę LED 23.
Od tego czasu, gdy nie przewiduje się, żeby dioda LED 23 oraz ekran były wygaszone, mikrosterownik bada, czy (i) system BIOS polecił włączyć system z powrotem poprzez ustawienie bitu lub (ii) użytkownik polecił włączyć system z powrotem poprzez ponowne naciśnięcie przycisku mocy 21.
Jeśli, żaden z powyższych warunków nie zachodzi, to oznacza, że system ma być z powrotem włączony i mikrosterownik U2 przeskakuje do Procedury Włączenia Zasilania, jak wskazano to w etapie 1284.
Następnie, mikrosterownik określa, czy pojawił się sygnał dzwonka na linii ΕΧΤ WAKEUP# z transoptora OPT01. Pociąga to za sobą zwykłe sprawdzenie za pomocą linii RS232, czy linia ΕΧΤ WAKEUP# ma stan WYSOKI, zaś dla sygnału z transoptora OPT01 sprawdzenie stanu przez mikrosterownik U2. Linia ΕΧΤ WAKEUP# ma normalnie stan WYSOKI wymuszany przez rezystor R5. Transoptor OPT01 wymusza stan linii na NISKI, jeśli napięcie na liniach a/b jest wyższe niż próg napięciowy ustawiony przez układ zabezpieczenia przepięciowego 905, np. 60 V, gdy linia telefoniczna wystawia sygnał dzwonka. Jednakże, warunek ten może być również spełniony, gdy linia telefoniczna podlega testowaniu lub w wyniku szumu na linii. Zatem zwykłe czekanie na stan NISKI linii ΕΧΤ WAKEUP# może zezwolić na zadziałanie fałszywego sygnału dzwonka (wywołania), który pobudzi system.
Zatem, poprzez mierzenie częstotliwości sygnału dzwonka (wywołania), mikrosterownik określa czy sygnał jest sygnałem dzwonka (wywołania). Sygnał dzwonka według sztandarów jest sygnałem o częstotliwości od 16 Hz do 58 Hz. Mikrosterownik U2 mierzy trzy okresy czasu między czterema narastającymi zboczami sygnału ΕΧΤ WAKEUP#, przy czym, jeśli wszystkie trzy okresy odpowiadają częstotliwości od 15,1 Hz do 69 Hz, to mikrosterownik U2 uznaje, że pojawił się prawidłowy sygnał dzwonka na tej linii i ustawia odpowiedni bit.
180 098
Procedura sprawdzania rozpoczyna się po wykryciu na linii ΕΧΤ WAKEUP# stanu NISKI. Jeśli stan NISKI na tej linii utrzymuje się podczas trzech kolejnych odczytów, to mikrosterownik U2 oczekuje aż linia powróci do stanu WYSOKI na trzy kolejne odczyty. Bezpośrednio po tym, podlega odczytowi 16-bitowy licznik, który tworzy podstawy dla przerwania zegarowego, a odczytana wartość jest zapamiętywana, przy czym mikrosterownik U2 oczekuje na przejście linii do stanu NISKI przez kolejne trzy odczyty. Następnie mikrosterownik U2 bada, czy okres czasu między pierwszymi dwoma zboczami mieści się w przedziale między 15 milisekund a 66 milisekund, wskazując, że częstotliwość sygnału wynosi od 15,1 Hz do 69,1 Hz. Jeśli tak, to licznik o wysokiej rozdzielczości jest próbkowany ponownie, a mikrosterownik oblicza różnicę między dwoma próbkami licznika, gdy czeka na następne przejście ze stanu NISKI na WYSOKI. Proces powtarza się dla następnych dwóch przejść ze stanu NISKI na WYSOKI na linii ΕΧΤ WAKEUP#. Jeśli wszystkie trzy okresy czasu mieszczą się w podanym zakresie, to mikrosterownik U2 uznaje, że na linii pojawił się prawidłowy sygnał dzwonka i ustawia odpowiedni bit. Jeśli nie ma stanu NISKI z linii ΕΧΤ WAKEUP# lub, jeśli dowolny z tych okresów czasu jest spoza podanego zakresu, to kontynuuje się realizację kodu programowego mikrosterownika, bez ustawiania bitu.
Następnie mikrosterownik bada, czy wystąpił sygnał dzwonka lub wyczerpał się licznik minutowy do alarmowego pobudzenia w etapie 1286. Dla sygnału dzwonka RS 232, sygnału dzwonka z transoptora lub sygnału z licznika minutowego do alarmowego pobudzenia, pociąga to za sobą sprawdzenie przez mikrosterownik U2, czy jest ustawiony stowarzyszony bit.
Jeśli wystąpił sygnał dzwonka lub wyczerpał się licznik minutowy do alarmowego pobudzenia, to następuje z powrotem załączenie zasilania systemu, a mikrosterownik U2 przeskakuje do Procedury Włączania Zasilania, jak wskazano to w etapie 1287.
Od tego czasu, w etapie 1288, mikrosterownik sprawdza, czy zasilacz 17 dostarcza regulowaną moc na szynach + 5 i + 12. Jeśli nie, to kod programowy przeskakuje z powrotem do etapu 1280 i pętla zaczyna się od nowa. Z drugiej strony jeśli zasilacz 17 dostarcza regulowaną moc na szynach + 5 i + 12, to mikrosterownik U2 wykonuje procedurę sprawdzania, w etapie 1292 oraz procedurę odporności na uszkodzenia, przy 1296. Działanie obu tych procedur było przedyskutowane w tekście towarzyszącym odpowiednim etapom 1196 i 1208.
Jedynie w trzech sytuacjach mikrosterownik U2 powoduje zatrzymanie dostarczania regulowanej mocy przez zasilacz 17 na szynach + 5 i + 12: (i) system BIOS polecił natychmiastowe wyłączenie zasilania, zaimplementowane poprzez procedurę komunikacyjną (ii) czasomierz odporny na uszkodzenia ulegał wyczerpaniu lub (iii) użytkownik naciska przycisk mocy, a znacznik Zezwolenia Zawieszenia w mikrosterowniku U2 nie jest ustawiony, przy czym odczytuje się warunek, dla którego mikrosterownik U2 za każdym razem bada sygnał wejściowy SWITCH. Zatem mikrosterownik U2 bada, czy czasomierz odporny na uszkodzenia uległ wyczerpaniu w etapie 1300, jeśli nie, to kod programowy przeskakuje z powrotem do etapu 1280 i ponownie zaczyna pętlę.
Z drugiej strony, jeśli czasomierz odporny na uszkodzenia uległ wyczerpaniu, wskazuje, że zasilanie systemu ma zostać wyłączone, to mikrosterownik U2 generuje przerwanie SMI do jednostki CPU 40, w etapie 1304, jeśli dozwolone. Umożliwia to jednostce CPU 40 wykonanie pewnych zadań przy założeniu, że zasilanie systemu ma być wyłączone natychmiast po ich wykonaniu, np. jednostka CPU 40 ponownie oblicza i zapisuje do mikrosterownika U2 zaktualizowana liczbę minut, służącą do alarmowego pobudzenia.
Jeśli jednostka CPU 40 nie podejmuje żadnej dalszej czynności, to mikrosterownik wyłącza zasilanie systemu po wyczerpaniu się programowanego czasomierza przerwania SMI. Jednostka CPU 40 może przedłużyć ten okres czasu poprzez ponowne uruchomienie czasomierza SMI, wpisując odpowiednią wartość do mikrosterownika U2.
Zatem, a także, jeśli badanie w etapie 1286 wskaże, że zasilacz nie dostarcza prawidłowej mocy (prawidłowego zasilania), to mikrosterownik U2 wyłącza zasilanie systemu w etapie 1308. Pociąga to za sobą: (i) spowodowanie zatrzymania dostarczania regulowanej
180 098 mocy przez zasilacz 17 na szynach + 5 i + 12, (ii) zablokowanie przerwania komunikacyjnego, ponieważ jednostka CPU 40 ma właśnie utracić zasilanie, (iii) ustawienie portów wyjściowych (oprócz sygnału ON) w stan WYSOKI, aby zminimalizować ich zużycie mocy (w tym trybie mikrosterownik U2 może jeszcze odczytywać sygnały SWITCH, ΕΧΤ RING. ΕΧΤ WAKEUP# itd.), (iv) takie ustawienie zmiennej „wyłączenie zasilania”, że na jej podstawie pozostałe procedury zauważą wyłączenie zasilania systemu i (v) taką zmianę stanu przełącznika do stanu wyłączenie/zwolnienie, że następne naciśnięcie włączy ponownie zasilanie systemu.
Od tej chwili kod programowy przeskakuje z powrotem do etapu 1280 i ponownie zaczyna pętlę w oczekiwaniu na sygnał dzwonka (wywołania), naciśnięcie przełącznika, polecenie systemu BIOS, aby pobudzić system lub na wyczerpanie się licznika minut do alarmowego pobudzenia.
Po opisaniu aspektów sprzętowych systemu komputerowego 10 teraz pozostają do opisania aspekty kodu programowego.
Odnosząc się do fig. 8 - przedstawiono na niej sieć działań procedury włączania zasilania. Procedura zaczyna się w etapie 200, gdy jednostka CPU 40 przeskakuje do wykonania kodu wskazanego przez Wektor Ustawienia Stanu Początkowego (w skrócie wektor zerowania). Zachodzi to za każdym razem, gdy następuje podanie zasilania do jednostki CPU lub kiedykolwiek następuje ustawienie stanu początkowego tej jednostki CPU poprzez sygnał sprzętowego ustawienia stanu początkowego lub, gdy wykonywana jest instrukcja RESET poprzez skok do kodu, wskazanego przez wektor zerowania (wektor ustawienia stanu początkowego). Takie procedury ustawiania stanu początkowego są dobrze znane w przedmiotowej dziedzinie techniki.
Przede wszystkim, przebieg Procedury Włączania Zasilania zależy od tego, dlaczego następuje włączenie zasilania maszyny. Jak będzie to objaśnione bardziej szczegółowo w odniesieniu do fig. 11, system 10 mógłby być włączany przy ograniczonym poborze mocy lub braku zasilania. W takiej sytuacji byłoby niewłaściwe pozwolić na pozostawanie systemu w stanie włączenia. Zatem, Procedura Włączania Zasilania określa, czy pozwolić na pozostawienie systemu w stanie włączenia w etapie 940. Jeśli przy włączeniu zasilania, systemu nie został zasilony prawidłowo, to jednostka CPU 40 poleca mikrosterownikowi U2 spowodować, aby zasilacz zatrzymał dostarczanie regulowanej mocy do systemu w etapie 942.
Sprawdzenie - wykonywane przy określaniu, czy system ma pozostać włączony - ma potwierdzić, że linia telefoniczna przenosi sygnał „dzwonienia”, gdy system został włączony w odpowiedzi na to, co mikrosterownik U2 uznał za sygnał dzwonka (wywołania). W szczególności, po włączeniu zasilania systemu, jeśli system został pobudzony w odpowiedzi na sygnał dzwonka, podczas oczekiwania systemu na rozpędzenie się dysku stałego w napędzie dysku stałego 31, jednostka CPU 40 odpytuje modem 900 lub 902, które są obecnie w pełni zasilane, czy to wykrycie sygnału dzwonka jest poprawne. Jeśli nie, to następuje wyłączenie zasilania systemu. Jeśli modem 900 albo 902 również wykrywa sygnał dzwonka, to system ma nie przerywać kontynuacji procesu ładowania.
Zakładając, że system ma być zasilany, przebieg działania Procedury Włączania Zasilania zależy ogólnie od tego, czy system jest w stanie wyłączenia 156, czy w stanie zawieszenia 154. To jest, zależy to czy Znacznik Zawieszenia odpowiednio jest wyzerowany lub ustawiony w pamięci CMOS NVRAM 96. Jak przedstawiono w etapie 202, system 10 określa, czy jest on w stanie wyłączenia 156, czy w stanie zawieszenia 154 poprzez odczyt Znacznika Zawieszenia z trwałej pamięci CMOS 96. Jeśli system opuszcza normalny stan operacyjny 150 albo do stanu wyłączenia 156, albo do stanu zawieszenia 154 - każda procedura albo ustawia, albo zeruje Znacznik Zawieszenia w pamięci CMOS NVRAM 96. Jeśli Znacznik Zawieszenia jest ustawiony w pamięci NVRAM 96, to system komputerowy 10 jest w stanie zawieszenia 154, a stan systemu komputerowego został zapamiętany w urządzeniu pamięciowym ze stałym dyskiem 31. Z drugiej strony, jeśli Znacznik Zawieszenia jest wyzerowany w pamięci NVRAM 96, to system komputerowy 10 jest w stanie wyłączenia 156 a stan systemu komputerowego nie został zapamiętany w urządzeniu pamięciowym ze stałym dyskiem 31.
180 098
Stąd, jeśli Znacznik Zawieszenia jest ustawiony w pamięci NYRAM 96, to komputer wykonuje „normalną” procedurę ładowania, przedstawioną w etapach 204 - 210. Pierwsze zadanie, to wewnętrzny test po włączeniu (POST), jak przedstawiono w etapie 204, zadanie to będzie objaśnione bardziej szczegółowo w odniesieniu do fig. 11, przy czym po zakończeniu wykonywania testu POST, jednostka CPU 40 wywołuje Procedurę PBOOT, aby załadować system operacyjny, jak przedstawiono w etapie 206.
Procedura PBOOT to typowa procedura, która działa w komputerach firmy IBM z drobnymi zmianami, które będą objaśnione poniżej. Procedura PBOOT określa skąd inicjować (albo z napędu dysku stałego 31 albo z dyskietki znajdującej się w napędzie dyskietek 27) oraz ładować system operacyjny, który analizuje i wprowadza zmiany systemowe, zgodni z instrukcjami zawartymi w pliku CONFIG.SYS oraz w końcu wykonuje plik wsadowy AUTOEXEC.BAT. Procedura PBOOT jest dobrze znana w przedmiotowej dziedzinie techniki. System SO dokonuje załadowania sterownika urządzenia APM, który przepytuje system BIOSaby sprawdzić, czy system ten uwzględnia istnienie APM. Jeśli tak, to procedura systemu BIOS APM i procedura SO APM wykonują uzgodnienia i od tej chwili współpracują aby dostarczyć różne właściwości tu opisane. System operacyjny wykonuje kod programowy w sposób nieograniczony zgodnie z instrukcjami użytkownika, jak przedstawiono w etapie 210. Jednakże konsekwencją poinformowania interfejsu API Procedury Nadzorczej jest to, ż system BIOS APM i system operacyjny APM powodują że Procedura Nadzorcza wykonuje się „równolegle” z programami wykonawczymi, jak wskazano w etapie 212. Oznacza to, że system 10 jest systemem wielozadaniowym z mulipleksowaniem czasu, przy czym „APM - podaj zdarzenie” (APM Get Event) i w konsekwencji Procedura Nadzorcza są wykonywane periodycznie. Końcowym efektem jest to, że Procedura Nadzorcza wykonuje się co około jedną sekundę. Procedura Nadzorcza będzie w pełni objaśniona w związku z fig. 9. Po zakończeniu normalnej procedury ładowania w etapach 204 do 210, system komputerowy 10 jest w normalnym stanie operacyjnym 150, jak to przedyskutowano w związku z fig. 4.
Odnosząc się ponownie do etapu 202, jeśli Znacznik Zawieszenia jest ustawiony w pamięci NVRAM 96, to stan systemu został zapamiętany w napędzie dysku stałego 31, a system 10 wykonuje procedurę wznowienia inicjowania, przedstawioną w etapach 214 do 220. Po pierwsze, system wykonuje skrócony test POST, jak wskazano poprzez 214. Skrócony test POST będzie objaśniony pełniej w odniesieniu do fig. 11. Po wykonaniu skróconego testu POST, system wywołuje Procedurę Wznowienia, jak przedstawiono poprzez 216. Procedura Wznowienia będzie uszczegółowiona w tekście związanym z fig. 12. Wystarczy powiedzieć, że Procedura Wznowienia odtwarza stan systemu 10, zgodnie z jego konfiguracją sprzed zawieszenia systemu. Inaczej niż procedura normalnego inicjowania, wskazaną poprzez etapy 204 do 210, procedura wznowienia inicjowania nie potrzebuje informować interfejsu API APM o obecności Procedury Nadzorczej, ponieważ procedura APM musi być w stanie działania, aby zawiesić system oraz kiedy system jest odtwarzany, wtedy system gospodarowania APM podlega załadowaniu do pamięci. Stąd, kiedy Procedura Wznowienia skończy odtarzanie systemu 10, wtedy gospodarowanie APM jest już na miejscu i „działa” z odtworzonym kodem programowym, jak jest to wskazane w etapach 212 i 220. Po skończeniu procedury wznowienia inicjowania w etapach 214 do 220, system komputerowy 10 jest w normalnym stanie operacyjnym 150, jak przedyskutowano to w odniesieniu do fig. 4. Stąd, po wykonaniu albo procedury normalnego inicjowania w etapach 204 do 210, albo procedury wznowienia inicjowania w etapach 214 do 220 system komputerowy 10 jest w normalnym stanie operacyjnym 150.
Figura 9 przedstawia sieć działań Procedury Nadzorczej, wywoływanej przez APM w przybliżeniu co sekundę podczas „Podaj Zdarzenie”. Różne systemy operacyjne będą wykonywać Podaj Zdarzenie z różną częstotliwością
Procedura Nadzorcza zaczyna się w etapie 222 na fig. 9. W tekście poniżej zakłada się, że system komputerowy 10 rozpoczyna działanie od normalnego stanu operacyjnego 150. Pierwszym zadaniem jest sprawdzenie, w etapie 224, czy użytkownik nacisnął przełącznik 21.
180 098
Stan przełącznika 21 jest sprawdzany przez jednostkę CPU 40, która przepytuje mikrosterownik U2, jak to pełniej opisano w odniesieniu do fig. 6A i fig. 7.
Jeśli sprawdzenie w etapie 224, wskazuje, że użytkownik nacisnął przełącznik 21, to Procedura Nadzorcza określa następnie, czy Żądanie Zawieszenia zostało poprzednio skierowane do sterownika urządzenia APM w określonym systemie operacyjnym w etapie 950.
Jeśli sprawdzenie w etapie 950, wskazuje, że Żądanie Zawieszenia nie zostało jeszcze wysłane do sterownika urządzenia APM, to Procedura Nadzorcza wydaje „Żądanie Zawieszenia” skierowane do sterownika urządzenia APM SO, w etapie 226 o następnie wraca do sterownika APM w etapie 228. W odpowiedzi na ustaw Kod Powrotny APM „Żądanie Zawieszenia”, sterownik APM rozgłasza o nadchodzącym zawieszeniu tak, że urządzenia uwzględniające działanie APM mogą wykonywać konieczne zadania systemowe (takie, jak synchronizacja znakowa twardych dysków) oraz wydaje następnie „Polecenie Zawieszenia”, które powoduje, że Procedura Trasowania systemu BIOS APM, wywołuje Procedurę Zawieszenia. Procedura Zawieszenia opisana jest w odniesieniu do fig. 10. Procedura Zawieszenia powoduje w zasadzie to, że system 10 opuszcza normalny stan operacyjny 150 i wchodzi do stanu zawieszenia 154 i może zwrócić sterowanie do Procedury Nadzorczej po kilku instrukcjach (jeśli system nie jest gotowy, aby być zawieszony) po kilku minutach, godzinach, dniach, tygodniach lub latach później (jeśli nastąpi zawieszenie oraz wznowienie systemu). Procedura Zawieszenia zawsze ustawia Kod Zwrotny APM „Normalne Wznowienie”, niezależnie od tego, czy Procedura Zawieszenia wraca bez zawieszenia, czy wraca po ukończonym zawieszeniu i wznowieniu.
Często w etapie 224, jeśli przełącznik 21 nie został naciśnięty, to Procedura Nadzorcza przechodzi do etapu 952, aby określić, czy ustawiony jest Znacznik Krytycznego Zawieszenia. Podobnie, jeśli Żądanie Zawieszenia zostało poprzednio wysłane do sterownika APM w systemie SO, to Procedura Nadzorcza następnie przechodzi do etapu 952, aby określić, czy ustawiony jest Znacznik Krytycznego Zawieszenia. Jeśli ustawiony jest Znacznik Krytycznego Zawieszenia, to Procedura Nadzorcza bada następnie, czy Żądanie Krytycznego Zawieszenia zostało poprzednio wysłane do sterowania APM, w etapie 954.
Jeśli Żądanie Krytycznego Zawieszenia nie zostało wysłane do sterownika APM, to Procedura Nadzorcza wydaje Kod Zwrotny APM Żądania Krytycznego Zawieszenia w etapie 956 i następnie wraca do sterownika APM w etapie 958. W odpowiedzi na Żądanie Krytycznego Zawieszenia, sterownik APM natychmiast zawiesza system, bez rozgłaszania, że zbliża się zawieszenie, przy czym od tej chwili urządzenia, uwzględniające istnienie APM, nie mogą wykonywać swoich poszczególnych zadań poprzedzających zawieszenie.
Jeśli nie jest ustawiony ani Znacznik Krytycznego Zawieszenia w etapie 952, ani nie zostało wydane Żądanie Krytycznego Zawieszenia do sterownika APM w systemie SO w etapie 954, to Procedura Nadzorcza określa następnie, czy Zawieszenie nie zostało załatwione przez dłużej niż 15 sekund w etapie 957. Jeśli tak, to Procedura Nadzorcza ustawia Znacznik Krytycznego Zawieszenia w etapie 958, powodując skutkiem tego, że sprawdzenie w trakcie etapu 954, będzie wykonane podczas następnego „APM - Podaj Zdarzenie”.
Od tego czasu lub, jeśli Zawieszenie nie zostało załatwione przez okres krótszy niż 15 sekund, to Nadzorca sprawdza, czy, Zawieszenie nie zostało załatwione w etapie 959. Jeśli tak, to jednostka CPU 40 powoduje, że mikrosterownik U2 ponownie uruchamia (ustawia w stan początkowy) czasomierz odporny na uszkodzenia i czasomierz APM zawieszenia spowodowanego błędem w etapie 960.
Od tego czasu lub, jeśli Zawieszenie zostało załatwione, to Procedura Nadzorcza przechodzi następnie do etapu 230, aby sprawdzić, czy system został właśnie wznowiony. Jeśli wywołana zostaje Procedura Zawieszenia, to system uznaje, że został on właśnie wznowiony niezależnie od tego, czy Procedura Zawieszenia wraca bez zawieszenia, czy wraca po zakończeniu zawieszenia i wznowieniu. Wznowienie podlega sprawdzeniu w etapie 230 i, jeśli system został właśnie wznowiony (lub zawieszenie nie zostało wykonane z uwagi na wykorzystanie DMA lub pliku), to w etapie 232 wydawany jest Kod Zwrotny APM „Wzno
180 098 wienie Normalne” i przekazywany do APM w etapie 234. W odpowiedzi, sterownik APM SO aktualizuje zegar systemowy i inne wartości, które w międzyczasie mogły stać się przestarzałe.
Często zdarza się, że system 10 nie został jeszcze wznowiony, a Procedura Nadzorcza przechodzi następnie do etapu 236, aby sprawdzać aktywność jakiegoś użytkownika. W trakcie etapu 236 sprawdzane są trzy rodzaje aktywności użytkowników: aktywność plików twardych 31, aktywność klawiatury 12 i aktywność myszki 13. Co każde „APM - Podaj Zdarzenie”, Procedura Nadzorcza odczytuje wartość dla głowicy pliku twardego, cylindra i sektora z napędu dysku stałego 31, odpytuje mikrosterownik U2, czy była jakakolwiek aktywność na linii przerwania od myszki lub na linii przerwania od klawiatury lub na dowolnej z linii, wskazującej na aktywność użytkownika oraz odczytuje liczbę minut z zegara czasu rzeczywistego 98, którego zakres wynosi od 0 minut do 59 minut i zawraca z powrotem do 0 minut na początku każdej godziny. Trzy zmienne aktywności napędu dysku stałego (numer głowicy, numer cylindra i numer sektora) oraz liczba minut są pamiętane tymczasowo. Trzy zmienne aktywności napędu dysku stałego są następnie porównywane z trzema zmiennymi aktywności napędu dysku stałego zapamiętane przed poprzednim „Podaj Zdarzenie”. Jeśli trzy bieżące wartości dotyczące napędu dysku stałego są takie same jak wartości sprzed poprzedniego „Podaj Zdarzenie” i, jeśli nie było żadnej aktywności ani w postaci przerwania od myszki, ani od klawiatury, to nie było żadnej aktywności użytkowników. Jeśli wartości dotyczące napędu dysku stałego są różne lub była aktywność w postaci przerwania od myszki lub przerwania od klawiatury, to była aktywność użytkowników i bieżące zmienne aktywności napędu dysku stałego są pamiętane do porównania z wartościami, które odczyta się podczas następnego polecenia „Podaj Zdarzenie”.
Powyższy schemat wykrywania aktywności aktywności jest taki, że procedura wykonuje się w jednostce CPU 40, aby określić aktywność napędu dysku stałego oraz jedynie dwa przerwania sprzętowe są monitorowane na okoliczność aktywności. Alternatywnie, aktywność mogłaby być monitorowana wyłącznie w trybie sprzętowym, np. wszystkie 16 linie przerwań sprzętowych mogłoby być monitorowane na okoliczność aktywności.
Jeśli wystąpiła aktywność, to Procedura Nadzorcza określa następnie, czy system komputerowy 10 jest w stanie gotowości 152 poprzez sprawdzenie znacznika gotowości w etapie 238. Jeśli znacznik gotowości jest ustawiony, wskazuje, że system 10 jest w stanie gotowości 152, to Procedura Nadzorcza wychodzi ze stanu gotowości 152 i wchodzi do normalnego stanu operacyjnego 150 w etapie 240. Procedura Nadzorcza wychodzi ze stanu gotowości 152 poprzez podanie zasilania z powrotem do urządzeń, którym wyłączono zasilanie przy wejściu do stanu gotowości 152, jak przedstawiono na fig. 18. W skrócie, gdy system wychodzi ze stanu gotowości 152, to Procedura Nadzorcza odtwarza sygnał wizji, rozpędza dysk twardy, umieszczony w napędzie dysku stałego 31, odtwarza zegar systemowy, blokuje wywołania stanu jałowego jednostki CPU z APM tak, że wywołania stanu jałowego jednostki CPU ze sterownika APM nie wstrzymująjuż dłużej jednostki CPU 40 i zeruje znacznik wskazujący, że system 10 jest w Stanie Gotowości 152.
Ponadto, jeśli wystąpiła aktywność, to liczba minut z zegara czasu rzeczywistego 98 jest również zapamiętana do porównania z liczbą minut odczytaną podczas następnego polecenia „Podaj Zdarzenia” (Get Events). Poprzez zapamiętanie bieżącej liczby minut dokonuje się rzeczywistego ustawienia stanu początkowego czasomierza nieaktywności stanu gotowości i czasomierza nieaktywności stanu zawieszenia w etapie 241. Podczas normalnego użycia będzie występować aktywność użytkownika i Procedura Nadzorcza ustawia Kod Zwrotny APM „Brak Zdarzeń” w trakcie 242 i zwraca kod wywołania APM w trakcie 243. Gospodarowanie APM nie wywołuje więcej procedur w odpowiedzi na Kod Zwrotny APM „Brak Zdarzeń”.
Jeśli sprawdzenie w etapie 236 wskazuje, że nie było aktywności użytkownika, to Procedura Nadzorcza z kolei sprawdza, czy wyczerpał się czasomierz nieaktywności stanu gotowości, i czasomierz nieaktywności stanu zawieszenia, odpowiednio w etapie 245 i 247. Jeśli
180 098 system 10 jest w stanie gotowości 152, to czasomierz nieaktywności stanu gotowości nie jest sprawdzany na wyczerpanie to raczej test przeskakuje do etapu 244.
Obydwa czasomierze sprawdzane są na wyczerpanie poprzez odejmowanie bieżącej liczby minut od zapamiętanej liczby minut, aby uzyskać liczbę odpowiadającą liczbie minut od kiedy wystąpiła aktywność użytkownika. Liczba ta jest porównywana z wartością ustalonego czasu nieakywności stanu gotowości w etapie 245 i wartością ustalonego czasu nieaktywności stanu zawieszenia w etapie 247. Dwie wartości czasu oczekiwania są wybieralne przez użytkownika i mogą być ustawione tak, że system nigdy nie wejdzie do stanu gotowości 152, nigdy nie wejdzie do stanu zawieszenia 154 lub nigdy nie wejdzie ani do stanu gotowości 152 ani do stanu zawieszenia 154, z powodu wyczerpania się jednego z czasomierzy. Ustawienie wartości oczekiwania na wartość 0 wskazuje, że czasomierz nie powinien się nigdy wyczerpać.
Jeśli liczba minut liczona od ostatniej aktywności użytkownika jest równa lub większa niż wartość ustalonego czasu nieaktywności stanu gotowości, to Procedura Nadzorcza powoduje, że system 10 wchodzi do stanu gotowości 152 w etapie 246. Jeśli czasomierz nieaktywności stanu gotowości nie został wyczerpany, to Procedura Nadzorcza sprawdza następnie czy nie został wyczerpany czasomierz nieaktywności stanu zawieszenia w etapie 247. Z drugiej strony, jeśli czasomierz nieaktywności stanu gotowości, został wyczerpany, to Procedura Nadzorcza powoduje, że system 10 wchodzi do stanu gotowości 152 poprzez umieszczenie pewnych elementów składowych w trybach pracy o odpowiednio niskim zużyciu mocy, jak przedstawiono na fig. 18. W skrócie, w korzystnym przykładzie wykonania wynalazku Procedura Nadzorcza wygasza sygnał wizji, zwalnia obroty dysku stałego, znajdującego się w napędzie dysku stałego 31, zwalnia zegar systemowy, odblokowuje wywołania Stanu Jałowego CPU z APM tak, że wywołania Stanu Jałowego CPU ze sterownika APM zatrzymująjednostkę CPU 40 i ustawiają znacznik wskazujący, że system 10 jest w Stanie Gotowości 152. Po spowodowaniu wejścia systemu 10 do stanu gotowości 152, Procedura Nadzorcza sprawdza, czy wyczerpał się czasomierz nieaktywności stanu zawieszenia w etapie 247.
Procedura Nadzorcza sprawdza, czy wyczerpał się czasomierz nieaktywności stanu zawieszenia w etapie 247. Jeśli liczba minut od ostatniej aktywności użytkownika jest równa lub większa niż wartość ustalonego czasu nieaktywności stanu zawieszenia, to Procedura Nadzorcza ustawia Kod Zwrotny APM „Żądanie Zawieszenia” w etapie 248 i wraca do ATM w etapie 243. Jak opisano powyżej w odniesieniu do etapu 226, w odpowiedzi na ustawieniu Kodu Zwrotnego APM „Żądanie Zawieszenia”, APM wykonuje niezbędne zadania systemowe, a następnie wywołuje Procedurę Nadzorczą. Działanie Procedury Zawieszenia pełniej przedyskutowano w odniesieniu do fig. 10 przy czym, w skrócie, powoduje ona opuszczenie przez system 10 normalnego stanu operacyjnego 150 i wejście do stanu zawieszenia 154. Jak przedyskutowano w tekście towarzyszącym etapowi 226, Procedura Zawieszenia może zwrócić sterowanie do Procedury Nadzorczej z lub bez zawieszania systemu 10. Z drugiej strony, jeśli czasomierz nieaktywności stanu zawieszenia nie został wyczerpany, to Procedura Nadzorcza ustawia Kod Zwrotny APM „Brak Zdarzeń” w etapie 242 i wraca do kodu wywołującego APM w etapie 243.
Chociaż najczęściej Kod Zwrotny APM „Brak Zdarzeń” będzie zwracany do APM, to także różne inne zdarzenia mogą być zwracane do APM. Jednakże, tylko jeden Kod Zwrotny APM może być wyspecyfikowany dla każdego „APM - Podaj Zdarzenie”, np. po wejściu do stanu gotowości 152, procedura „Brak Zdarzeń” zwracana jest do APM. Po opuszczeniu stanu zawieszenia 154, Kod Zwrotny APM „Normalne Wznowienie” zwracany jest do APM. Specyficzne komunikaty uszeregowane w kolejce dla APM będą ściśle zależeć od natury systemu komputerowego. Procedura Nadzorcza również zwraca Kod Zwrotny APM „Normalne Wznowienie” lub Kod Zwrotny APM „Żądanie Zawieszenia”.
Odnosząc się teraz do fig. 9B - przedstawiona jest na niej sieć działań Procedury APM Działania Nad Ostatnim Żądaniem, począwszy od etapu 961. Odpowiednio do wydanego powyższego „Ostatniego Żądania”, procedury gospodarowania APM BlOS-a ponownie uruchamiają w mikrosterowniku U2 w etapie 962, czasomierz odporny na uszkodzenia i czasomierz
180 098
APM zawieszenia spowodowanego przez uszkodzenie oraz ponownie uruchamiają czasomierz 15-sekundowego okresu nie załatwienia zawieszenia, aby zapobiec wydaniu żądania krytycznego zawieszenia, w trakcie oczekiwania przez gospodarowanie APM systemu SO na przygotowanie systemu do zawieszenie w etapie 963 i powrotu w etapie 964.
Odnosząc się teraz do fig. 9C, przedstawiona jest na niej sieć Procedury APM - Odrzucenie Ostatniego Żądania, poczynając od etapu 965. Odpowiednio do wydanego powyższego „Odrzucenia Ostatniego Żądania”, procedury gospodarowania APM system BIOS-u ponownie uruchamiają w mikrosterowniku U2 w etapie 966, czasomierz odporny na uszkodzenie i czasomierz APM zawieszenia spowodowanego uszkodzeniem oraz ustawiają Znacznik Krytycznego Zawieszenia, wymuszając tym samym natychmiastowe zawieszenie, w etapie 967 i powrót w etapie 968.
Procedury Włączenia Zasilania i Wznowienia najlepiej zrozumie się wraz z informacjami dotyczącymi Procedury Zawieszenia. Zatem wyraża się przekonanie, że opis procedur gospodarowania APM BlOS-a najlepiej zostanie zbadany w następujący sposób : przegląd procedury Włączania Zasilania (fig. 8), Procedury Nadzorczej (fig. 9), Procedury Zawieszenia (fig. 10), procesu Włączania Zasilania (fig. 11), Procedury Wznowienia (fig. 12), Procedury Zapamiętania Stanu CPU (fig. 13) Procedury Odtworzenia Stanu CPU (fig. 14) oraz Procedury Zachowania Stanu 8259 (fig. 15).
Wyraża się przekonanie, że chociaż większość procedur oddziałuje na inne, a proces zawieszenia/wznowienia jest ciągłym cyklem, to jednak dyskusja o Procedurze Zawieszenia (fig. 10) przed Procedurą Inicjowania (fig. 11) będzie bardzo przydatna. Odnosząc się teraz do fig. 10 - przedstawiono na niej sieć działań Procedury Zawieszenia. Przynajmniej, że po wykonaniu albo procedury normalnego inicjowania 204 do 210, albo procedury wznowienia inicjowania w etapach 214 do 220, system komputerowy 10 jest w normalnym stanie operacyjnym 150. Ponadto, jak wzmiankowano powyżej w odniesieniu do fig. 8, czy nastąpiło normalne inicjowanie systemu komputerowego w etapach 214 do 220, czy też nastąpiło wznowienie inicjowania, to po zakończeniu dowolnej z nich, sterownik APM SO uwzględnia takie procedury BIOS APM, jak Procedura Nadzorcza, przedstawiona na fig. 8. W rezultacie, APM odpytuje Procedurę Nadzorczą co około jedną sekundę.
Procedura Zawieszenia przedstawiona jest na fig. 10 i zaczyna się w etapie 250. Procedura Zawieszenia wywołana jest przez APM w odpowiedzi na zwrócenie przez Procedurę Nadzorczą do APM Kodu Zwrotnego APM „Żądanie Zawieszenia”. Ponadto Procedura Zawieszenia jest wywołana i częściowo wykonania, gdy system przechodzi przez Punkt Kontrolny, jak jest to pełniej objaśnione w tekście towarzyszącym fig. 17 i fig. 18. Po pierwsze przebieg Procedury Zawieszenia zależy, od tego czy jednostka CPU 40 jest częścią S wyposażoną w mechanizm przerwań SMI, sprawdzone w etapie 970. Jeśli tak, to jednostka CPU 40 powoduje, że mikrosterownik U2 generuje przerwanie SMI z powrotem do jednostki CPU 40, w etapie 972. Odpowiednio do przerwania SMI, mikrorozkaz w jednostce CPU 40 zapamiętuje stan jednostki CPU 40 w strukturze danych segmentu E000H w etapie 974, jak jest to znane fachowcom w przedmiotowej dziedzinie.
Z drugiej strony, jeśli jednostka CPU 40 nie jest częścią S, wykorzystującą przerwanie SMI, to wywoływana jest Procedura Zapamiętania Stanu CPU, jak przedstawiono w etapie 252. Procedura Zapamiętania Stanu CPU będzie uszczegółowiona w opisie towarzyszącym fig. 13. Wystarczy teraz powiedzieć, że niezależnie w jakim trybie znajduje się jednostka CPU 40, kiedy Procedura Zawieszenia jest pierwotnie wywołana, to pozostałość Procedury Zawieszenia będzie wykonana Trybie Rzeczywistym jednostce CPU 40 i, stąd może być wykonana bez obawy generowania błędów, które mogłyby być spowodowane przy próbie wykonywania instrukcji spoza dopuszczalnej przestrzeni adresowej lub przy' próbie wykonania instrukcji uprzywilejowanej.
Procedura Zapamiętania Stanu CPU zwraca sterowanie programem do Procedury Zawieszenia w etapie 253, w unikatowy sposób. „Powrót od Procedury Zapamiętania Stanu CPU do Procedury Zawieszenia pociąga za sobą ustawienie w stan początkowy jednostki
180 098 centralnej CPU, przy czym jest to dokładniej objaśnione poniżej w opisie towarzyszącym etapom 630 i 632 z fig. 13. Ważnym szczegółem w odniesieniu do Procedury Zawieszenia jest to, że zawartość rejestrów CPU została zapisana w strukturze danych segmentu E000H i obecnie jednostka CPU 40 znajduje się w Trybie Rzeczywistym.
Po powrocie Procedury Zapamiętania Stanu CPU lub po zapamiętaniu przez jednostkę CPU swojego własnego stanu odpowiednio do mechanizmu przerwania SMI, Procedura Zawieszenia następnie upewnia się, czy przełącznik 21 został naciśnięty w etapie 254. Zamknięcie przełącznika 21 podlega sprawdzeniu, jak opisano to w odniesieniu do fig. 6 i fig. 7. Jeśli przełącznik 21 nie został naciśnięty, to realizowane zawieszenie - jest zawieszeniem programowym i Znacznik Zawieszenia Programowego jest ustawiony w pamięci CMOS NVRAM 96. Uzyskuje się przez to, że zawieszenie programowe nie jest mylone z zawieszeniem sprzętowym, wywołanym przez zamknięcie przełącznika. Wszystkie zawieszenia programowe są zamieniane na zawieszenia sprzętowe poprzez ustawiania bitu w mikrosterowniku U2. Następnie zamknięcie przełącznika po zamianie zawieszenia programowego na zawieszenie sprzętowe przerywa zawieszenie.
Następny etap 262 ma na celu ustawić stos w segmencie E000H.
Po ustawieniu stosu Procedura Zawieszenia sprawdza - w etapie 264 - sterownik DMA 72, adapter dyskietek 84 i sterownik dysków IDE 86, aby zobaczyć, czy bieżąco realizowane są odowiednio, transfery typu DMA, transfery z napędów dyskietek lub transfery plików z dysków stałych. Jeśli tak, to zawieszenie nie może być dokonane, ponieważ charakterystyki właściwe dla tych trzech typów transferów zapobiegają wykonaniu wystarczającego zawieszenia, np. jeśli plik z dysku stałego podlega transferowi z napędu dysku stałego 31, przy czym dane zostały już odczytane przez sterownik IDE, lecz nie zostały jeszcze przekazane do pamięci systemowej 53. Dane te nie mogą być należycie udostępnione jednostce centralnej CPU, a zatem dane te mogłyby być stracone, jeśli system byłby zawieszony w środku odczytu pliku z dysku stałego. Stąd, jeśli dowolny z tych trzech typów transferów jest w trakcie realizacji, to zawieszenie jest odraczane do następnego „APM - Podaj Zdarzenie”, kiedy to sterowniki DMA i dyskietek są badane pod względem aktywności jeszcze raz.
Zatem, zadanie wykonywane w etapach 252, 260 i 262 muszą zostać odwrócone tak, że sterowanie może być z powrotem zwrócone do APM. Po pierwsze, system BIOS podlega zmianie z odzytu/zapisu na tylko odczyt, jak przedstawiono w etapie 265. Uzyskuje się to przez „zamknięcie” segmentu E000H, który nadal zawiera dane lustrzane. Stos utworzony w etapie 262 podlega pobraniu i odtworzeniu. W końcu, stan CPU jest odtwarzany przez Procedurę Otworzenia Stanu CPU, w etapie 266, zanim sterownie zostanie przekazane z powrotem do APM w etapie 267. Procedura Zawieszenia będzie ponownie odpytywana przez APM w przybliżeniu za około sekundę podczas następnego „Podaj Zdarzenie”. Do tego czasu, transfer(y), który(e) zapobiegają) procesowi zawieszenia będą prawdopodobnie zakończone, umożliwiając kontynuowanie [procesu] zawieszenia.
Wracając teraz do etapu 264, jeśli nie podlegają na bieżąco realizacji transfery typu DMA, z napędu dyskietek lub z pliku dyskowego, to zawieszenie może być wykonane. Procedura Zawieszenia podlega kontynuacji w etapie 268. Przypomnijmy, ża Czasomierz Odporny Na Uszkodzenia nieprzerwanie dokonuje odliczania (liczy w dół) i spowoduje, że system sam się wyłączy, jeśli nastąpi wyczerpanie zakresu odliczania tego Czasomierz przy stanie przełącznika 21 wyłączony/zwolniony. Stąd pierwszym zadaniem jest ustawić stan początkowy Czasomierz Odpornego Na Uszkodzenia, opisanego w tekście związanym z fig. 6A i fig. 19, jak to przedstawiono w etapie 268.
Następnie, zapamiętuje się stan koprocesora 8042 104, w etapie 270. Jednostka CPU 40 jest w stanie bezpośrednio odczytywać te rejestry, a ich wartości są zapisywane do struktury danych w segmencie E000H.
Następnie, w etapie 272 zapamiętuje się stan sterownika przerwań 92. Procedura Zawieszenia wywołuje Procedura Zachowania Stanu 8259, co będzie szczegółowo przedstawione w opisie towarzyszącym fig. 15. Wystarczy powiedzieć, że Procedura Zachowania
180 098
Stanu 8259 sprawdza zawartość nieznanych rejestrów sterownika przerwań 92, pomimo że niektóre rejestry są tylko do zapisu. Wartości rejestrów są zapisywane bezpośrednio do struktury danych w segmencie E000H.
Po zapamiętaniu stanu sterownika przerwań 92, musi nastąpić zmiana konfiguracji sterownika przerwań 92 do stanu znanego, umożliwiającego prawidłowe funkcjonowanie różnych zadań sterowanych przerwaniami, wykonywanych przez Procedurę Zawieszenia. Dlatego następuje wymiana Obszarów Danych BIOS i Tabeli Wektorów w etapie 274. Procedura Zawieszenia kopiuje zawartość stanu obecnego Obszaru Danych BIOS i Tabela Wektorów w segmencie 0000H do lokacji w segmencie E000H. Następnie zawartość Obszaru Danych BIOS w stanie znanym i Tabeli Wektorów jest kopiowana ze struktury danych do segmentu E000H podczas etapu 414 Procedury Inicjowania, przedstawionej na fig. 11, której działanie jest przedstawione poniżej. Na końcu Obszar Danych BIOS w stanie obecnym i Tabela Wektorów są kopiowane z segmentu 000H do struktury danych w segmencie E000H. Po skończeniu tej procedury w etapie 274, wszystkie przerwania takie, jak przerwanie 13H (odczyt/zapis dysku) i przerwanie 10H (dostęp wizji) będą funckonować zgodnie z oczekiwaniem.
Następnie zapamiętuje się stan czasomierzy 102, w etapie 276. Rejestry czasomierzy są dobrze znane w przedmiotowej dziedzinie techniki. Jednostka CPU 40 jest w stanie bezpośrednio odczytywać wszystkie te rejestry, a ich wartości są zapisywane do struktury danych w segmencie E000H. W etapie 276 zapamiętuje się również stan sterownika dyskowego IDE 86. Jednostka CPU 40 jest w stanie bezpośrednio odczytywać wszystkie te rejestry, a ich wartości są zapisywane do struktury danych w segmencie E000H.
Następny krok to przygotowanie pamięci systemowej do zapisu jej zawartości w Pliku Zawieszania na dysku stałym 31. Pamięć systemowa obejmuje pamięć systemową RAM 53, która obejmuje i pamięć główną i pamięć rozszerzoną oraz pamięć wizji 58. W tym przypadku, części pamięci RAM 53 mogą być w zewnętrznej pamięci podręcznej 60. Pamięć podręczna jednostki centralnej CPU opróżniona w etapie zadania 628, które będzie omawiane w związku z fig. 13. Następnie zostaje opróżniona zewnętrzna pamięć podręczna 60 w etapie 286 oraz uaktywniona do szybkiego zapisu na dysk stały 31.
Kod wykonujący się w systemie komputerowym 10 mógłby wprowadzić sterownik IDE 86 do nieznanego stanu. Zatem, następnym krokiem jest zainicjowanie sterownika IDE 86, aby znalazł się w znanym stanie w etapie 292. Uzyskuje się to przez zapisanie wartości bezpośrednio do rejestrów, znajdujących się w sterowniku IDE 86.
Następnie uruchamia się tor równoległy sterowany przerwaniami do odczytu i zapamiętania stanu modemów w strukturze danych E000H, w etapie 976. Procedura przechwytuje przerwania odpowiadające stanowi portu COMM, stowarzyszonego z określonym modemem, przesyła polecenia do modemu, aby spowodować, żeby modem sekwencyjnie przesyłał z powrotem zawartość swoich rejestrów, procedura odbiera z modemu transmisje z zawartością rejestrów, zapamiętuje wartości rejestrów do struktury danych w segmencie E000H. Procedura ta przesyła pierwsze polecenie do modemu, a następnie odpowiada w sposób sterowany przerwaniami, odbiera odpowiedź modemu i przesyła następne polecenie do modemu odpowiednio do przerwania z portu COMM, aż wszystkie rejestry modemu zostana zapamiętane. Jeśli procedura nie jest wykonana jako tor równoległy, to procedura mogłaby dodać kilka sekund (3-5 sekund na modem, zależnie od określonego modemu i bieżącej przepływności danych cyfrowych) do czasu, który przeznacza się na zawieszenie systemu. Będąc torem równoległym sterowanym przerwaniami, dodaje on drobne odcinki czasu (lub ich nie dodaje) do czasu zawieszenia w przypadku, gdy kończy on swe wykonywanie, zanim stan systemu zostanie zapisany na dysku stałym 31.
Po uruchomieniu procedury zapamiętania stanu modemu, jako toru równoległego sterowanego przerwaniami, Plik Zawieszenia musi być ulokowany na dysku stałym, znajdującym się w napędzie dysku stałego 31, w etapie 294. Numer głowicy, sektora i cylindra Pliku Zawieszenia zapamiętuje w pamięci CMOS 96. Po zlokalizowaniu Pliku Zawieszenia
180 098 odczytuje się rozmiar pliku oraz podpis. W korzystnym przykładzie wykonania wynalazku podpis jest kodem ASCII o arbitralnie ustalonej długości, który wskazuje na obecność Pliku Zawieszenia. Inne alternatywne warianty podpisu są dopuszczalne takie, jak użycie łańcuchów binarnych o sekwencjach, których prawdopodobieństwo przypadkowego znalezienia w systemie plików stałych jest bardzo małe.
Odczytawszy rozmiar pliku oraz podpis Pliku Zawieszenia, następnym krokiem będzie zapewnić poprawność podpisu i rozmiaru pliku w etapie 296. Jeśli ani podpis nie jest poprawny, wskazując, że może inny program zmodyfikował Plik Zawieszenia, ani rozmiar pliku nie jest poprawny, wskazując, że rozmiar Pliku Zawieszenia został zmodyfikowany, to Procedura Zawieszenia wywołuje Procedurę Fatalnego Błędu Zawieszenia, który uruchamia się w etapie 652 z fig. 13, w etapie 298. Jeśli użytkownik naciśnie przełącznik 17, aby wyjść z Procedury Fatalnego Błędu Zawieszenia, to sterowanie programami przechodzi z etapu 299 do etapu 506.
Z drugiej strony, jeśli podpis jest poprawny a Plik Zawieszenia wystarczająco duży, to Procedura Zawieszenia może kontynuować zapisywanie stanu systemu komputerowego do pamięci.
Przed zapisaniem stanu systemu komputerowego 10 na dysk stały, jednostka centralna CPU 40 poleca mikrosterownikowi U2 ponownie uruchomić (ustawić stan początkowy) czasomierz odporny na uszkodzenia i zapytuje mikrosterownik U2, aby określić, czy przełącznik 21 został naciśnięty ponownie, w etapie 297. Jeśli przełącznik 21 nie został naciśnięty ponownie, to zawieszenie powinno być kontynuowane. Z drugiej strony, jeśli przełącznik 21 został naciśnięty ponownie, to proces zawieszenia przerywa się. Ponownie uruchamia się czasomierz odporny na uszkodzenia oraz sprawdza się przełącznik 21 na zamknięcie w kilku punktach w Procedurze Zawieszenia. Etap 297 ma tylko charakter ilustrujący, gdyż projektanci układów będą w stanie określić dopuszczalny okres czasu między ponownymi uruchomieniami czasomierza odpornego na uszkodzenia. Procedura Zawieszenia powinna ustawić w stan początkowy czasomierz odporny na uszkodzenia, zanim wyczerpie się powodując, że mikrosterownik U2 doprowadzi do wyłączenia zasilacza 17. Podobnie przy tej okazji powinien zostać sprawdzony przełącznik 21. Jeśli przełącznik 21 został naciśnięty ponownie, wskazując, że użytkownik żąda przerwania procesu zawieszenia, to kod powinien skoczyć do odpowiedniego punktu w Procedurze Wznowienia, to jest do punktu „nie-zawieszony” i powrócić z częściowego zawieszenia.
Podobnie, użycie klawiszy Ctrl-Alt-Del przerywa stan zawieszenia, w etapie 350. Naciśnięcie klawiszy Ctrl-Alt-Del (równoczesne naciśnięcie klawiszy Ctrl, Alt i Del) jest dobrze znanym sposobem ustawiania w stan początkowy (zerowania) typowych systemów komputerowych, opartych na systemie BIOS oraz na rodzinie jednostek centralnych CPU Intel 80x86. System komputerowy 10 obsługuje przerwanie od klawiszy Ctrl-Alt-Del wraz z programem obsługi Przerwania 1 systemu BIOS, jak jest to znane w stanie techniki. System komputerowy 10 ma lekko zmodyfikowany program obsługi Przerwania 1, w etapie 350, który zeruje Znacznik Zawieszenia w pamięć CMOS 96, w etapie 352, i przechodzi do Procedury Inicjowania przy ustawieniu stan początkowy systemu, w etapie 354.
W systemie komputerowym 10 według niniejszego wynalazku, naciśnięcie klawiszy Ctrl-Alt-Del podczas wykonywania Procedury Zawieszenia powoduje wejście systemu komputerowego do zawieszenia 154. Zachodzi to dlatego, że po zamknięciu przełącznika 21, naciśnięcie klawiszy Ctrl-Alt-Del powoduje wywołanie Procedury Inicjowania i Procedura Inicjowania inicjuje mikrosterownik U2 do stanu, w którym wyczerpał się czasomierz odporny na uszkodzenia a przełącznik 21 jest jeszcze w stanie wyłączony/zwolniony. Stąd naciśnięcie klawiszy Ctrl-Alt-Del powoduje wejście systemu komputerowego 10 do stanu wyłączenia 156.
Odnosząc się teraz do etapu 300, Plik Zawieszenia ponownie jest zlokalizowany na dysku stałym 31, przy czym fraza podpisu podlega zapisywaniu w pierwszych bitach Pliku Zawieszenia w etapie 300. Następnie całe 64 kilobajtów danych z segmentu E000H podlega zapisaniu do Pliku Zawieszenie, w etapie 302. Ta kopia 64 KB danych segmentu E000H ma
180 098 rzeczywiście na celu zatrzymanie miejsca i będzie ponownie zapisana do tej samej lokacji przy końcu Procedury Zawieszenia.
Następnie zapamiętuje się stan sterownika wizji 56 w etapie 303. Jednostka centralna CPU jest w stanie odczytywać wszystkie te rejestry a ich wartości są zapisywane do struktury danych w E000H.
Następnie do Pliku Zawieszenia zapisuje się pamięć systemową. Uzyskuje się to przez system buforów bliźniaczych, za pomocą którego odczytuje się dane z pamięci systemowej, dokonuje kompresji i zapisuje dane do segmentu E000H oraz na końcu zapisuje skompresowane dane z segmentu E000H do Pliku Zawieszenia. Dwie procedury działają w trybie multipleksowania czasu: jedna dokonuje kompresji danych i zapisuje do segmentu E000H, a druga zapisuje dane do Pliku Zawieszenia. Pierwsza z nich wykonuje się na pierwszym planie, natomiast druga jest procedurą sterowaną przerwaniami, działającą w tle. Oczywiście, ze względu na to, że jest tylko jedna jednostka centralna CPU, to tylko jedna procedura może 'wykonywać się w danej jednostce czasu. Ponieważ jednak druga procedura jest sterowana przerwaniami, to może ona przerwać wykonywanie pierwszej procedury, gdy wymaga tego optymalizacja szybkości transferu danych do Pliku Zawieszenia. Każdy z tych buforów ma po 8 kilobajtów pojemności, co powinno pozwolić na optymalizację czasu transferu na napęd dyskowy 31.
Proces ten rozpoczyna się w etapie 304 wraz z odczytem, kompresją i zapisem danych do segmentu E000H z wystarczającą ilością danych do zapełnienia pierwszego z buforów o pojemności 8 KB. Dane te podlegają kompresji przy użyciu metody kodowania grupowego. W tym czasie Procedura Zapisu z Bufora, która ogólnie wskazywana jest w etapie 307, zaczyna się w etapie 306. Procedura Zapisu z Bufora jest procedurą sterowaną przerwaniami, która działa w tle i obejmuje etapy 308 do 310. Procedura Kompresji, ogólnie wskazywana w etapie 311, obejmuje etapy 312 do 318 i jest procedurą pierwszoplanową. Po pierwsze, Procedura Zapisu z Bufora w etapie 307 przepisuje zawartość bufora, właśnie zapełnionego w etapie 304, do Pliku Zawieszenia, w etapie 308. Podczas gdy Procedura Zapisu z Bufora w etapie 307 przepisuje zawartość tego bufora do Pliku Zawieszenia, to Procedura Kompresji w etapie 311 kontynuuje czytanie następnych bajtów z pamięci systemowej, dokonuje ich kompresji i zapisuje skompresowane dane do drugiego z dwóch buforów 8 KB, w etapie 312. Po zapełnieniu przez Procedurę Kompresji w etapie 311 tego buforu skompresowanymi danymi, następnym krokiem jest określenie, czy cała pamięć systemowa została już poddana kompresji, w etapie 314.
Sterownik IDE 86 nie może bardzo szybko zapisywać danych na dysk stały 31. W konsekwencji Procedura Kompresji w etapie 311 będzie zawsze kończyć zapełnianie bufora 8 KB bez zapisu na dysk stały 31, zanim Procedura Zapisu z Bufora w etapie 307 skończy przepisywanie zawartości bufora na dysk stały 31. Zatem Procedura Kompresji w etapie 311 musi czekać, aż Procedura Zapisu z Bufora z etapu 307 skończy przepisywanie zawartości bufora na dysk stały 31. Jeśli Procedura Kompresji z etapu 311 nie skończyła kompresji i zapisywania całej pamięci systemowej, to Procedura Kompresji z etapu 311 czeka na Procedurę Zapisu z Bufora z etapu 307, w etapie 316. Procedura Kompresji z etapu 311 i Procedura Zapisu z Bufora z etapu 307 komunikują się poprzez ustawiania znaczników. Kiedy Procedura Zapisu z Bufora z etapu 307 kończy przepisywanie zawartości bieżącego bufora do Piku Zawieszenia, to Procedura z etapu 307 przełącza następnie znaczniki bufora, wskazując Procedurze Kompresji w etapie 311, że może rozpocząć napełnianie skompresowanymi danymi bufora, którego zawartość została właśnie przepisywana do Pliku Zawieszenia. Następnie czasomierz odporny na uszkodzenia C2 jest ustawiony w stan początkowy, a przełącznik 21 podlega sprawdzeniu czy wystąpiło zdarzenie jego zamknięcia, w etapie 309, w sposób objaśniony w opisie towarzyszącym etapowi 297.
Z kolei Procedura Zapisu z Bufora z etapu 307 decyduje, czy bufor, którego zawartość została właśnie przepisana do Pliku Zawieszenia jest ostatnim buforem z zawartością, która ma być przepisana, w etapie 310. Jeśli nie, to Procedura Zapisu z Bufora w etapie 307 przepisuje do Pliku Zawieszenia bufor, właśnie zapełniony przez Procedurę Kompresji w etapie 311. W międzyczasie Procedura Kompresji 311 poprzez zbadanie znaczników buforowych, określa,
180 098 czy bufor jest gotowy na odbiór skompresowanej zwartości pamięci systemowej. Oznacza to, że Procedura Kompresji z etapu 311 czeka w etapie 316 aż Procedura Zapisu z Bufora w etapie 307 skończy zajmować się bieżącym buforem, podczas tego oczekiwania kontynuowana jest pętla kompresowania, w etapie 312. Należy zauważyć, że pamięć wizji 58 jest kompresowana, jeśli wspomagane jest liniowe buforowanie ramek, lecz pamięć ta nie jest kompresowana przy dostępie stronami VESA. Pamięć wizji o dostępie stronami VESA podlega raczej odczytowi poprzez sterownik 56, przy użyciu odwołań VESA i jest zapisywana bez kompresji, przy użyciu systemu buforów bliźniaczych, objaśnionego bardziej szczegółowo powyżej.
Procedura Kompresji z etapu 311 skończywszy kompresję całej pamięci systemowej, oczekuje w etapie 318 na zakończenie przepisywania przez Procedurę Zapisu z Bufora w etapie 307 zawartości drugiego bufora do Pliku Zawieszenia. Procedura Zapisu z Bufora w etapie 307 po skończeniu swego działania, rozgałęzia się na etapy od 310 do 318 i przestaje istnieć. W tym czasie nie są wykonywane w tle żadne procedury, a główny program kontynuuje swe działanie w etapie 320.
Następnie, w etapie 320, zapamiętuje się stan jednostki DMA 71 (sterownik DMA 72 i Główny Arbiter 82) stan sterownika dyskietek 82077 84 i stan układów UART RS-232 94. Urządzenia te mają rejestry. Wszystkie rejestry w ramach sterownika dyskietek 84 i układów UART 94 są bezpośrednio odczytywane przez jednostkę centralną CPU, a odczytywane wartości są zapisywane bezpośrednio do struktury danych w segmencie E000H. Jednostka DMA nie ma odczytywalnych rejestrów. Normalnie raczej rejestry tylko do zapisu są ustawiane przez każdym transferem typu DMA. Z tej przyczyny Procedura Zawieszenia zatrzymuje proces zawieszenia, jeśli wykonuje się transfer typu DMA.
Następnie, w etapie 978 Procedura Zawieszenia bada, czy zakończyła się procedura sterowana przerwaniami zapamiętania stanu modem, opisana w tekście towarzyszącym etapowi 976. Jeśli nie, to czeka na jej zakończenie.
Wyraża się przekonanie, że korzystnie jest mieć możliwość wykrywania nieumiejętnego manipulowania Plikiem Zawieszenia, gdy system komputerowy 10 wejdzie do stanu zawieszenia 150, np. możliwe, że ktoś wygeneruje zmodyfikowany Plik Zawieszenia, przesunie Plik Zawieszenia na dysku sztywny lub spróbuje odtworzyć system komputerowy 10 w różnym stanie od tego zapamiętanego. Przy końcu, umieszcza się wartość pseudolosową w strukturze danych segmentu E000H. Jak przedstawiono w etapie 328, po skończeniu procedury sterowanej przerwaniami zapamiętania stanu modemu, odczytuje się 16-bitowy stempel czasowy z jednego z szybkich czasomierzy 102. Ten stempel czasowy jest z kolei zapisywany w strukturze danych segmentu E000H.
Następnie oblicza się 16-bitową sumę kontrolną dla całego segmentu E000H poprzez dodawanie do siebie każdego 16-bitowego słowa w segmencie E000H zawsze bez uwzględniania bitu przeniesienia, Suma kontrolna podlega zapisaniu w strukturze danych segmentu E000H, w etapie 330 i jest zapisywany w pamięci NVRAM CMOS, w etapie 332. Po tym, wszystkie zmienne robocze są przepisywane z jednostki centralnej CPU do segmentu E000H segmentu danych, w etapie 334, przy czym cały segment E000H jest ponownie przepisywany do Pliku Zawieszenia, rozpoczynając zapis po frazie podpisu Pliku Zawieszenia (bezpośrednio po podpisie), w etapie 336. Następnie ustawiony jest Znacznik Zawieszenia w pamięci NVRAM CMOS 96, w etapie 338, informując system 10, że stan systemu komputerowego został zapamiętany w Pliku Zawieszenia.
Następnie, Procedura Zawieszenia określą czy zaliczono Punkt Kontrolny w etapie 980. Jeśli tak, to system nie powinien być wyłączony z zasilania, raczej działanie systemu musi być wznowione do koniecznego zakresu, aby odtworzyć go z częściowego zawieszenia, które właśnie zostało wykonane. Dlatego, jeśli zaliczono Punkt Kontrolny, w etapie 982, to Procedura Zawieszenia przechodzi do etapu 484 Procedury Wznowienia, która następnie wykonuje częściowe wznowienie.
Jeśli Punkt Kontrolny nie jest zaliczony, to jednostka centralna CPU 40 „wyłącza” zasilacz poprzez wydanie polecenia mikrosterownikowi U2, aby wymusił sygnał ON do logicznego 0,
180 098 powodując przez to, że podstawowa jednostka regulacyjna 172 zasilacza 17 przestanie dostarczać regulowane napięcie na szynach ± 5 i ± 12. Zanik napięcie spadnie do około zera, mija kilka sekund, dając jednostce centralnej CPU czas na wykonanie wielu poleceń. Zatem jednostka CPU 40 wykonuje nie kończącą się pętlę, w etapie 342, gdy czeka aż napięcie zasilania systemowego generowane przez zasilacz 17 zaniknie na tyle, że CPU jednostka 40 przestanie funkcjonować.
Odnosząc się teraz do fig. 11, gdzie przedstawione są szczegóły Procedury Inicjowania. Proces inicjowania został omówiony w odniesieniu do fig. 8. Procedura Inicjowania rozpoczyna się w etapie 380, gdy jednostka CPU 40 wykonuje kod wskazany przez Wektor Zerowania (Wektor Ustawiania W Stan Początkowy). Następuje to za każdym razem, gdy włącza się zasilanie jednostki centralnej CPU 40 oraz zawsze, gdy ustawiony jest stan początkowy poprzez skok do kodu programowego wskazanego przez ten wektor.
Pierwsze zadanie to testowanie i inicjowanie sterownika pamięci 46, w etapie 382. Jednostka CPU 40 podlega testowaniu przez procedurę POST. Część testu CPU ma na celu określenie, czy CPU jest częścią „S” wyposażoną w jednostkę SMI. Jeśli tak, to ustawia się znacznik wskazujący ten fakt. Sterownik pamięci 46 podlega zainicjowaniu przez procedurę POST.
Następnie Procedura Inicjowania testuje, w etapie 986, czy funkcjonuje mikrosterownik U2. Aby to zrobić, jednostka CPU 40 sekwencyjnie czyta port stanu układu gospodarowania zasilaniem 106 i oczekuje na przejście ze stanu WYSOKI na NISKI i z powrotem ze stanu NISKI na WYSOKI. Takie przejścia wskazują, że układ wykrywania kolizji mikrosterownika U2 funkcjonuje; zatem jednostka CPU 40 może kontynuować proces inicjowania, przy założeniu, że mikrosterownik U2 funkcjonuje zgodnie z oczekiwaniem.
Jeśli jednostka CPU 40 nie wykryje przejścia w porcie statusu, w określonym wcześniej okresie czasu, np. w ciągu jednej lub dwóch sekund, to mikrosterownik U2 nie ma układu wykrywania kolizji i jednostka CPU 40 poleca ustawić w stan początkowy pierwszy układ PAL UL w etapie 988, jak objaśniono powyżej. Następnie jednostka CPU 40 oczekuje ponownie na przejście portu stanu ze stanu WYSOKI do stanu NISKI, w etapie 990. Jeśli jednostka CPU 40 ponownie nie wykryje przejścia w porcie stanu, w przeciągu jednej lub dwóch sekund, to mikrosterownik U2 nie ma układu wykrywania kolizji i jednostka CPU 40 blokuje właściwości gospodarowania zasilaniem tu opisane, w etapie 992, przy założeniu, że mikrosterownik U2 jest w takim stanie, że nie może być ustawiony w stan początkowy (wyzerowany).
Z drugiej strony, jeśli funkcjonuje mikrosterownik U2, to jednostka CPU 40 odświeża w mikrosterowniku U2 liczbę minut do pobudzenia alarmowego, w etapie 994. Podstawa czasu zegara czasu rzeczywistego RTC 98 jest dokładniejsza niż podstawa czasu mikrosterownika U2. Zatem, aby pokonać to ograniczenie bez wyposażenia mikrosterownika U2 w dokładniejszą podstawę czasu, lecz bez dużych wydatków, system BIOS synchronizuje mniej dokładną podstawę czasu poprzez dokładniejszą oraz aktualizuje liczbę minut do pobudzenia alarmowego w mikrosterowniku U2, przy użyciu bardziej dokładnej liczby, pobieranej z zegara czasu rzeczywistego RTC 98, przy każdym inicjowaniu systemu. W celu osiągnięcia tego, jednostka CPU 40 odczytuje absolutną datę alarmu i czas z pamięci CMOS 96, oblicza liczbę minut do pobudzenia alarmowego i zapisuje ją w mikrosterowniku U2.
Zatem, jeśli mikrosterownik U2 nie funkcjonuje, powodując, ze dokonuje się zablokowania właściwości gospodarowania zasilaniem, to Procedura Inicjowania określa, czy system został zainicjowany odpowiednio do podania mocy do zasilacza 17, w etapie 996. Korzystnie, zasilacz 17 zawsze pobiera zasilanie AC poprzez swoją podstawową jednostkę regulacyjną 172, natomiast sterowania regulowaną mocą na jego szynach ± 5 i ± 12 V dokonuje się poprzez wejście ON#. Tym sposobem zasilacz 17 może stale zapewniać napięcie z linii zasilającej AUX5, potrzebne do zasilania układów gospodarowania zasilaniem 106 oraz być sterowanym przez układy gospodarowania zasilaniem 106, bez włączania samemu zasilania AC.
Jednakże, niektórzy użytkownicy przedkładają zasilanie swoich systemów komputerowych za pomocą listwy zasilającej z przełącznikiem, wyłączając i włączając zasilanie AC
180 098 całego systemu pojedynczym przełącznikiem. Stwarza to pewne problemy przed układami gospodarowania zasilaniem 106, ponieważ mkrosterownik U2 i inne urządzenia są skonfigurowane tak, że muszą być stale zasilane poprzez linię zasilającą AUX5. Zatem, system musi być wyposażony w metodę określania, że był on zasilany przez podania zasilania AC i zachowywać się stosownie do tego.
Jednakże linia AUX5 podlega również zanikom napięcia w sieci (zanikowi zasilania) i ograniczeniom poboru mocy. Po zaniku napięcia w sieci lub ograniczeniu poboru mocy, podukład zerowania 920 ustawia mikrosterownik U2 w stan początkowy, aby zapobiec zawieszeniu z uwagi na przekroczenie tolerancji napięcia. Zatem system musi być w stanie określić dalej, czy mikrosterownik U2 został pobudzony po ograniczeniu poboru mocy lub po podaniu zasilania AC.
Zatem, w etapie 996, jednostka CPU 40 przepytuje mikrosterownik U2 o zdarzenie, które powoduje, że zasilacz 17 ma być włączony. Mikrosterownik U2 może zwrócić jedną dowolną z czterech odpowiedzi: (1) być wyzerowany, a zatem spowodować, że zasilacz 17 rozpoczyna dostarczanie regulowanej mocy na szynach ± 5 i ± 12 V, (2) wyczerpały się minuty do pobudzenia alarmowego, (3) pojawił się sygnał dzwonka (sygnał wywołania) albo na wejściu dzwonkowym RS-232 albo na wejściu dzwonkowym z transoptora O PTI i/lub (1) został naciśnięty przełącznik 21. Przy użyciu programów aplikacyjnych można bezpośrednio odczytać z mikrosterownika U2 przyczynę, dla której włącza się zasilanie systemu, programem takim może być program planujący, który mógłby wykonywać pewne programy, odpowiednio do konkretnej przyczyny, która spowodowała włączenie zasilania systemu. Alternatywnie, przyczynę włączenia zasilania systemu można uzyskać przez jedno lub więcej wywołań systemu BIOS.
Poza ustawianiem w stan początkowy przez jednostkę CPU 40, mikrosterownik U2 podlega ustawianiu w stan początkowy wyłącznie przez podukład ustawiania w stan początkowy 920, który ustawia mikrosterownik U2 w stan początkowy, kiedykolwiek podana jest linia AUX5. Zatem, jeśli nastąpiło ustawienie mikrosterownika U2 w stan początkowy lub mikrosterownik U2 zwrócił niepoprawny kod pobudzenia, testowanie w etapie 997, to jednostka CPU 40 musi wtedy określić, czy zasilacz 17 powinien kontynuować regulowanie zasilania na szynach ± 5 i ± 12 V lub nie, w etapie 998. Na końcu używa się znacznika w NVRAM CMOS, zwanego DEFAULT_ON. Jeśli znacznik ten jest ustawiony, to zasilacz 17 powinien kontynuować dostarczanie regulowanego zasilania, po ustawieniu mikrosterownika U2 w stan początkowy. Z drugiej strony, jeśli znacznik DEFAULT_ON nie jest ustawiony, to zasilacz 17 powinien zaprzestać dostarczanie regulowanego zasilania na szynach ± 5 i ± 12 V, po ustawieniu mikrosterownika U2 w stan początkowy, w etapie 1000. Zatem zanikanie napięcia do około zera zajmuje kilka sekund, dając jednostce CPU 40 czas na wykonanie licznych poleceń. Zatem, jednostka CPU 40 wykonuje nie kończącą się pętlę w etapie 1002, gdy czeka aż napięcie zasilania systemowego generowane przez zasilacz 17 zaniknie na tyle, że jednostka CPU 40 przestanie funkcjonować, w etapie 1005. Jak wzmiankowano powyżej, mikrosterownik U2 jest korzystnie zasilany przez linię AUX5 i kontynuuje wykonywaniem zaprogramowanych procedur.
Zatem, jeśli mkrosterownik zwróci prawidłowy kod pobudzenia, w etapie 997 lub jeśli mikrosterownik U2 został ustawiony w stan początkowy, lecz system ma pozostać zasilany, w etapie 998, to jednostka CPU 40 poleca mikrosterownikowi U2. w etapie 1004, generować zwrotny sygnał przerwania SMI do jednostki CPU 40 zanim spowoduje to zaprzestanie dostarczania regulowanej mocy na szynach ± 5 i ± 12 V w przypadku, gdy mikrosterownik U2 uzna, że zasilanie powinno być wyłączone. Również, w etapie 1004, jednostka CPU 40 ustawia bit sygnału DEFAULT ON w pamięci NVRAM CMOS tak, jakby ulegało zanikowi zasilanie AC, przy czym system włączy się z powrotem sam po ponownym podaniu zasilania AC.
Następnie, Procedura Inicjowania wykonuje pierwsze przejście rozpoznania alokacji zasobów, w etapie 1006, dla potrzeb Włącz i Pracuj (Pług & Play).
180 098
Następnie pamięć zwierciadlana podlega testowaniu, a system BIOS jest kopiowany z pamięci ROM 88 do części pamięci zwierciadlanej RAM 53. Przebieg realizacji kodu wykonawczego zależy od tego, czy Znacznik Zawieszenia jest ustawiony w pamięci NVRAM CMOS 96. Jeśli Znacznik Zawieszenia jest ustawiony, to system komputerowy 10 jest w stanie zawieszenia 150 i system komputerowy 10 powinien być odtworzony do stanu, w którym on się znajdował, kiedy został zawieszony. Pamięć systemowa RAM 53 w segmentach E000H i F000H podlega skróconemu testowaniu. W celu skrócenia czasu, który zużywa komputer do wznowienia swojej pracy, pamięć jest po prostu sprawdzana na okoliczność odpowiedniej wielkości oraz zapisywana zerami (każda lokacja podlega zapisaniu wartością 000H).
Z drugiej stronym jeśli Znacznik Zawieszenia jest wyzerowany w pamięci NVRAM CMOS 96, to pamięć systemowa RAM 53 z segmentach E000H i F000H, poddana jest standardowemu dogłębnemu testowi pamięci, obejmującemu: test na sklejone bity, dwu bitowy test pamięci, test liniowy adresowania krzyżowego. Testy te są dobrze znane w przedmiotowej dziedzinie techniki.
Po przetestowaniu segmentów E000H i F000H, wykonuje się zwierciadlane odbicie przepisywanie systemu BIOS, które obejmuje kopiowanie zawartości systemu ROM BIOS 88 do pamięci systemowej RAM 53 oraz konfigurowanie sterownika pamięci, przy czym odbicie to służy do wykonywania systemu BIOS z pamięci RAM. Zwierciadlane odbicie systemu BIOS wykonuje się w celu przyśpieszenia działania systemu; wydajność systemu ulega poprawie, ponieważ BIOS działa raczej w oparciu o szybszą pamięć systemową RAM 53 (typowy czas dostępu wynosi 80 nanosekund) niż wolniejszą pamięć ROM 88 (typowy czas dostępu wynosi 250 nanosekund. Wykonywania zwierciadlanego odbicia systemu BIOS obejmuje ładowanie programu kopiującego pod adres w pamięci niższej, kopiowanie systemu BIOS do segmentu E000H i F000H pamięci systemowej RAM 53 oraz uaktywnienie odzwierciedlonej pamięci RAM.
Następnie podlega testowaniu i inicjowaniu sterownik wizji 56, testuje się również pamięć wizji 58, oba testowania w etapie 584. Testy te oraz inicjacje są dobrze znane w przedmiotowej dziedzinie techniki.
Następnie, Procedura Inicjowania wykonuje drugie przejście rozpoznanie alokacji zasobów, w etapie 1008, dla potrzeb Włącz i Pracuj (Pług & Play).
Przepływ działania kodu wykonawczego zależy od tego, czy Znacznik Zawieszenia jest ustawiony w pamięci CMOS NVRAM, w etapie 386. Jeśli Znacznik Zawieszania jest ustawiony, to pozostała pamięć systemowa RAM 53 jest po prostu sprawdzana pod względem wielkości oraz zerowana, podobnie jak w etapie 383. Jeśli, jednakże, Znacznik Zawieszania jest wyzerowany w pamięci CMOS NVRAM 96, to pozostała pamięć systemowa RAM 53 jest testowana w etapie 398 przy użyciu dogłębnego testu trzystopniowego, opisanego w odniesieniu do etapu 383.
Po przetestowaniu pamięci, urządzenia pomocnicze - włączając w to układ 8259, układy UART, układy 8042 oraz dowolne inne - podlegają testowaniu i inicjowaniu, w etapie 400. Sterownik dysku stałego podlega inicjowaniu w etapie 408.
Przepływ kodu wykonawczego zależy od tego, czy Znacznik Zawieszenia jest ustawiony w pamięci CMOS NVRAM 96, w etapie 409. Jeśli Znacznik Zawieszania jest ustawiony, wskazuje, że stan systemu został poprawnie zapamiętany, kiedy nastąpiło wyłączenie zasilania ostatnim razem, to Procedura Inicjowania przeskakuje test sterownika dysku stałego 86 oraz napędu dysku stałego 31. Z drugiej strony, jeśli Znacznik Zawieszania jest wyzerowany w pamięci CMOS NYRAM 96, wskazuje, że stan systemu nie został poprawnie zapamiętany, kiedy nastąpiło wyłączenie zasilania ostatnim razem to Procedura Inicjowania wykonuje kompletny test sterownika dysku stałego 86 oraz napędu dysku stałego 31, a w etapie 410.
Następnie dokonuje się testowania oraz inicjowania sterownika napędu dyskietek 84, w etapie 412.
W tym czasie inicjowane są wszystkie urządzenia a wektory wskazują znane lokacje tak, że wszystkie procedury przerwań będą działać zgodnie z oczekiwaniem. Zatem Procedura
180 098
Inicjowania wykonuje zdjęcie Obszaru Danych Systemu BIOS i Tabeli Wektorów, w etapie 414, poprzez zapisywanie kopii Obszaru Danych Systemu BIOS i Tabeli Wektorów do struktury danych w segmencie E000H. Tę kopię Obszaru Danych Systemu BIOS i Tabeli Wektorów wykorzystuje Procedura Zawieszenia w etapie 274, do umieszczenia systemu komputerowego 10 w znanym stanie, ze wszystkimi przerwaniami, działającymi zgodnie z oczekiwaniem.
Następnie dokonuje się „skanowania” dowolnych rozszerzeń systemu BIOS i inicjowania w etapie 416, jak jest to dobrze znane w przedmiotowej dziedzinie techniki. Rozszerzenia systemu BIOS są blokami kodu systemu BIOS dodanymi do systemu przez adaptery peryferyjne takie, jak adaptery sieciowe. Rozszerzenia systemu BIOS lokowane są typowo w segmentach C000H i D000H na magistrali ISA 76 i mają skojarzone „podpisy” do identyfikacji rozszerzenia systemu BIOS, jako takiego,. Jeśli wykryje się rozszerzenie systemu BIOS, to następuje sprawdzenie długości oraz wyliczenie i sprawdzenie sumy kontrolnej. Jeśli wszystko - podpis, długość i suma kontrolna - wskazuje, że istnieje prawidłowe rozszerzenie systemu BIOS, to sterowanie programami przechodzi do rozkazu, znajdującego się trzy bajty za podpisem i rozszerzenie systemu BIOS może wykonywać dowolne wymagane zadanie takie, jak inicjowanie adaptera perferyjnego. Po skończeniu działania przez rozszerzenie systemu BIOS, sterowanie powraca z powrotem do Procedury Inicjowania, która poszukuje dalszych rozszerzeń. Dowolne dalsze rozszerzenia systemu BIOS są obsługiwane jak powyższe rozszerzenie systemu BIOS. Jeśli nie nastąpi wykrycie dalszych rozszerzeń systemu BIOS, to Procedura Inicjowania przechodzi z kolei do etapu 417.
Następnie, w etapie 1010, jednostka CPU odczytuje przyrost godzin włączenia zasilania systemu i dodaje ją do wartości zapamiętanej w specjalnej partycji na dysku stałym 31 oraz ponownie zapisuje nową zsumowaną liczbę godzin włączenia zasilania, z powrotem do specjalnej partycji na dysku stałym 31. Jak zostanie to objaśnione w innym miejsc, zanim mikrosterownik U2 wyłączy zasilanie systemu, to przerywa on pracę CPU przez wystawienie linii przerwania SMI. Zatem jednostka CPU wykonuje pewne zadania przy założeniu, że wkrótce będzie wyłączone zasilanie systemu. Korzystnie, pociąga to za sobą zapamiętanie pewnych informacji w pamięci CMOS NVRAM takich, jak godzin włączenia zasilania, zmierzony przez zegar upływających godzin z włączonym zasilaniem. Zatem, jednostka CPU zezwala mikrosterownikowi U2 na wyłączenie zasilania systemu.
W etapie 417 Procedura Inicjowania poszukuje partycji na dysku stałym 31, która ma figurować, jako partycja specjalnie alokowana dla Pliku Zawieszania. Jeśli w tablicy partycji zostanie znaleziona partycja o wystarczającej wielkości z identyfikatorem PS/1 „FE” lub partycja hibernacji z identyfikatorem „84”, aby pomieścić Plik Zawieszenia dla konkretnego systemu, to Plik Zawieszenia wykorzysta tę partycję. Zatem w pierwszych bajtach tego obszaru zapisuje się Podpis Pliku Zawieszenia, a początkowe numery głowicy, sektora i cylindra tego obszaru zapisuje się w pamięci CMOS NVRAM 96.
Działanie kodu wykonawczego rozgałęzia się następnie, zależnie od tego, czy Znacznik Zawieszania jest ustawiony w pamięci CMOS NVRAM 96. Jeśli Znacznik Zawieszania jest wyzerowany, to Procedura Inicjowania przekazuje sterowanie do procedury PBOOT w etapie 420. Procedura PBOOT jest procedurą znaną w przedmiotowej dziedzinie techniki, a jest odpowiedzialna za ładowanie systemu operacyjnego (SO) oraz interpretera zleceń albo z dyskietek, albo z dysku stałego 31. Jeśli nie została znaleziona partycja dla Pliku Zawieszania, to w etapie 417, system SO wykonuje specyficzny program obsługi opisany w opisie związanym fig. 16, który sprawdza, czy partycja została znaleziona i jeśli nie, to dokonuje alokacji pliku w przyległych sektorach (jeśli potrzeba to dokonuje się defragmentacji obszaru) w tablicy FAT (FAT - File Allocation Table), zapisuje podpis w pierwszych bajtach Pliku Zawieszania, a początkowe numery głowicy, sektora i cylindra Pliku Zawieszania zapisuje w pamięci CMOS NVRAM 96.
Niezależnie od tego, kiedy następuje alokacja Pliku Zawieszania, to powinien on obejmować przyległe sektory, aby umożliwić szybki zapis na dysk i szybki odczyt z dysku, odpowiednio podczas zawieszeń i wznowień.
180 098
System SO dokonuje następnie konfiguracji systemu w oparciu o polecenia znalezione w pliku CONFIG.SYS. Na końcu system SO wykonuje plik AUTOEXEC.BAT, który przekazuje wreszcie sterowanie wykonywaniem z powrotem do systemu operacyjnego. Jeśli Znacznik Zawieszania jest wyzerowany w pamięci CMOS NVRAM 96, wskazując, że stan systemu nie został zapamiętany, gdy ostatnim razem zanikło zasilanie, to program RESSUME.EXE, który pełniej jest objaśniony w opisie do etapu 421, zostaje pominięty.
Odnosząc się z powrotem do etapu 418, jeżeli Znacznik Zawieszania jest ustawiony w pamięci CMOS NVRAM 96, wskazuje, że stan systemu został poprawnie zapamiętany, kiedy nastąpiło wyłączenie zasilania ostatnim razem, to przepływ wykonywanego kodu rozgałęzia się, zależnie od tego, czy ustawiony jest Znacznik Ponownej Inicjacji Adapterów w pamięci CMOS NVRAM 96, w etapie 419. Jeśli ustawiony jest Znacznik Ponownej Inicjacji Adapterów, to Procedura Inicjowania przekazuje sterowanie do Procedury PBOOT w etapie 421. Podobnie jak zwykła Procedura PBOOT, Procedura PBOOT według wyanalzku ładuje system operacyjny, który dokonuje konfiguracji systemu, zgodnie z poleceniami znajdującymi się w pliku CONFIG.SYS i AUTOEXEC.BAT, przy czym powodują one między innymi ładowanie sterowników i konfigurowanie systemu, jak jest to dobrze znane w przedmiotowej dziedzinie techniki.
Polecenia w plikach CONFIG.SYS i AUTOEXEC.BAT mogą inicjować karty adapterów w danym systemie. Niniejsze zgłoszenie domniemywa istnienie trzech typów kart adapterów: adaptery Typu I nie potrzebują inicjowania, adaptery Typu II wymagają niej o wania, lecz są umieszczane w znanym stanie pracy rozszerzenie systemu BIOS lub sterowniki załadowane poprzez pliki CONFIG.SYS i AUTOEXEC.BAT, adaptery Typu III są modyfikowane przez kod wykonujący się w systemie. Systemy obejmujące adaptery Typu I i Typu II mogą być zawieszane i odtwarzane. Jednakże systemów, które obejmują adaptery Typu III oraz zawierają wiele adapterów sieciowych nie wolno odtwarzać, dopóki karty maja stowarzyszony sterownik urządzenia, uwzględniający APM oraz który dokonuje ponownej inicjacji adaptera po wystąpieniu pewnych warunków takich, jak usunięcie zasilania systemu. Systemy mogą zawieszać karty Typu III, które mają sterownik urządzenia, uwzględniający APM.
Plik RESUME.EXE dodaje się do pliku AUTOEXEC.BAT w korzystnym przykładzie wykonania wynalazku, przy czym jest on odpowiedzialny za transferowanie sterownia programami z systemem SO do Procedury Wznowienia. System SO w etapie 420 pomija obecność pliku RESUME.EXE. Jednakże system SO w etapie 421 wykonuje plik RESUME.EXE, który przekazuje sterowanie do Procedury Wznowienia, po skończeniu inicjowania adapterów Typu II przez sterowniki urządzeń, załadowanych przez system SO z plików CONFIG.SYS i AUTOEXEC.BAT.
Odnosząc się z powrotem do etapu 419, jeśli Znacznik Ponownej Inicjacji Adapterów jest wyzerowany w pamięci CMOS 96, to system SO przekazuje sterowanie wykonywaniem do Procedury Wznowienia poprzez program RESUME.EXE. Procedura Wznowienia odtwarza stan systemu na podstawie Pliku Zawieszenia z dysku stałego, przy czym jest to opisane szczegółowo w opisie do fig. 12.
Odnosząc się teraz do fig. 12, przedstawia ona sieć działań Procedury Wznowienia oraz etapy od 450 do 530. Po pierwsze jednostka CPU 40 podlega testowaniu w etapie 451. Jeśli jednostka CPU 40 wyposażona jest w technikę SMI, to generowany jest sygnał „CPU wznowienie SMI”, który umieszcza jednostki CPU w tym trybie, przy czym następuje przejście do etapu 454, Jeśli jednostka CPU nie jest wyposażona w technikę SMI, to zachodzi wznowienie zamykania systemu, w którym dokonuje się zerowania, a program obsługi zerowania przeskakuje do kodu w etapie 454. Podczas procesu konfiguracji - Obszar Danych Systemu BIOS i Tablica Wektorów podlega prawdopodobnie modyfikacji do nieznanego stanu, zatem podstawowe procedury systemu BIOS mogą, lecz nie muszą funkcjonować zgodnie z oczekiwaniem. Procedura Wznowienia odblokowuje segment E000H ze stanem odczyt/zapis, w etapie 454 oraz wywołuje Procedurę Wymiany Obszaru Danych Systemu BIOS i Tablicy Wektorów w etapie 456. Procedura ta wymierna - znany, prawidłowy Obszar Danych Systemu
180 098
BIOS i Tablicę Wektorów, które były skopiowane do segmentu E000H w etapie 414 - ze zmodyfikowanym Obszarem Danych Systemu BIOS i Tablicą Wektorów, które są właśnie aktywne w segmencie 0000H. Po skończeniu tej procedury, znany Obszar Danych Systemu BIOS i Tablica Wektorów są aktywne w segmencie 0000H, a zmodyfikowany Obszar Danych Systemu BIOS i Tablica Wektorów są w segmencie E000H, a procedury systemu BIOS funkcjonują zgodnie z oczekiwaniem.
Następnie Procedura Wznowienia blokuje wszystkie przerwania z wyjątkiem tych wspierających działanie klawiatury i dysku stałego, w etapie 458. Następnie Procedura Wznowienia umieszcza Plik Zawieszenia na dysku stałym 31 w etapie 460, i odczytuje rozmiar pliku oraz podpis, który, jak objaśniono powyżej jest wielobajtowym identyfikatorem dla Pliku Zawieszenia. Przepływ wykonywanego kodu rozgałęzia się w etapie 462, zależnie od tego, czy Plik Zawieszenia ma poprawny rozmiar oraz podpis. Jeśli Plik Zawieszenia nie ma poprawnego rozmiaru oraz podpisu, to Procedura Wznowienia zeruje Znacznik Zawieszenia w pamięci CMOS 96, w etapie 464, a sterowanie programami podlega przekazaniu do kodu w lokacji wskazanej przez Wektor Ustawiania W Stan Początkowy, w etapie 466, powodując tym samym, że ładowanie systemu odbywa się, jakoby system nigdy nie był zawieszony. Z drugiej strony, jeśli Plik Zawieszenia ma poprawny rozmiar oraz podpis, to Procedura Wznowienia kontynuuje wznawianie systemu poprzez czytanie 64 KB bloku z Pliku Zawieszenia, znajdującego się za podpisem (część Pliku Zawieszenia odpowiadająca informacji o segmencie E000H) z przeznaczeniem do segmentu 1000H, w etapie 468.
Następnie obliczana jest suma kontrolna bloku w 1000H w etapie 470, przy czym odczytuje się poprzednio zapamiętaną sumą kontrolną z trwałej pamięci CMOS 96, w etapie 472, zaś przepływ kodu wykonywanego, rozgałęzia się w etapie 474, zależnie od tego, czy suma kontrolna w etapie 470 jest taka sama, jak suma kontrolna obliczona w etapie 330. Jeśli suma kontrolna obliczona w etapie 470 nie jest taka sama, jak suma kontrolna obliczona w etapie 330, to Plik Zawieszenia trochę się „rozpłynął” (np. mógł ulec manipulacji), a sterowanie przekazuje się do etapu 464, które zeruje Znacznik Zawieszenia, przy czym system ustawia w stan początkowy, jak objaśniono w opisie do etapów 464 i 466. Jeśli suma kontrolna obliczona w etapie 470 jest taka sama, jak suma kontrolna obliczona w etapie 330, to domniemywa się, że Plik Zawieszenia jest tym samym zapisanym przez Procedurę Zawieszenia, a dane z segmentu 1000H są kopiowane do segmentu E000H, w etapie 476.
Teraz Procedura Wznowienia zapisuje na ekranie, w etapie 478, specjalny ekran sygnalizujący, aby poinformować użytkownika, że system podlega odtworzeniu oraz, że użytkownik powinien nacisnąć klawisze Ctrl-Alt-Del w celu przerwania wznowienia. Jak przy Procedurze Zawieszenia, naciśnięcie klawiszy Ctrl-Alt-Del zeruje Znacznik Zawieszenia, w etapie 526 i [powoduje] ponowne załadowanie systemu w etapie 528. Stąd po naciśnięciu klawiszy Ctrl-Alt-Del ponowne ładowanie systemu przebiega normalnie i wykonuje się Procedura Wznowienia.
Następnie odtwarzane są stany sterownika dyskietek 82077 84 oraz jednostki DMA 71 poprzez przepisanie wartości z segmentu E000H struktury danych do odpowiadających im rejestrów, odpowiednio w etapie 480 i 482.
Następnie, w etapie 1020 rozpoczyna działanie tor równoległy sterowany przerwaniami do odtwarzania stanu modemów na podstawie struktury danych segmentu E000H. Jak przy działaniu procedury w etapie 976, procedura odtworzenia stanu modemu przechwytuje przerwania odpowiadające portowi COMM, skojarzonemu z konkretnym modemem, odczytuje wartości ze struktury danych segmentu E000H, przesyła polecenia i wartości do modemu, aby spowodować odtworzenie w nim stanu rejestrów. Procedura ta przesyła pierwsze polecenie do modemu, a następnie odpowiada w trybie sterowania przerwaniami, odbierając odpowiedź modemu i przesyłając następną wartość do modemu odpowiednio do każdego przerwania z portu COMM, aż do chwili odtworzenia rejestrów modemu. Podobnie jak z procedurą zapamiętania stanu modemu, jeśli nie jest ona wykonywana jako tor równoległy, to procedura może dodać kilka sekund do czasu, który zajmuje wznowienie systemu. Będąc torem równo
180 098 ległym sterowanym przerwaniami, nie przedłuża on lub przedłuża o bardzo mało czas niezbędny do wznowienia systemu, jeśli tylko w pełni wykona on swe funkcje zanim nastąpi odczyt stanu systemu z dysku stałego 31.
Po uruchomieniu procedury sterowanej przerwaniami w torze równoległym do odtwarzania stanu modemów w etapach od 486 do 500, pamięć systemowa podlega odtworzeniu na podstawie Pliku Zawieszenia, przy użyciu procedury buforów bliźniaczych podobnej do procedury objaśnionej w opisie do etapów od 304 do 318 Procedury Zawieszenia. System buforów bliźniaczych odczytuje skompresowane dane z Pliku Zawieszenia, zapisuje je do segmentu E000H, dokonuje ich dekompresji i zapisuje w pamięci systemowej. Dwie procedury działają w trybie multipleksowania czasu: jedna odczytuje dane z Pliku Zawieszenia i zapisuje je do segmentu E000H, druga dokonuje dekompresji danych i zapisuje do pamięci systemowej. Ta druga procedura wykonuje się na pierwszym planie natomiast pierwsza, będąca procedurą sterowaną przerwaniami, działa w tle. Oczywiście, ze względu na to, że jest tylko jedna jednostka centralna CPU, to'tylko jedna procedura może wykonywać się w danym okresie czasu. Jednakże, ponieważ pierwsza procedura jest sterowana przerwaniami, to może ona przerwać wykonywanie drugiej procedury, gdy wymaga się optymalizacji szybkości transferu danych z Pliku Zawieszenia. Każdy z tych buforów ma 8 kilobajtów pojemności, co powinno pozwolić na optymalizację czasu transferu.
Proces ten rozpoczyna się w etapie 486 odczytem z Pliku Zawieszenia i zapisem do segmentu E000H ilości danych wystarczającej do zapełnienia pierwszego z buforów o pojemności 8 KB. W tym czasie Procedura Odczytu z Bufora, która ogólnie wskazywana jest przez etap 489, zaczyna się w etapie 306. Procedura Odczytu z Bufora jest procedurą sterowaną przerwaniami, które działa w tle i obejmuje etapy 490 do 498. Procedura Dekompresji, ogólnie wskazywana przez etap 493, obejmuje etapy 494 do 498 i procedurą pierwszoplanową. Po pierwsze, w trakcie 490, Procedura Odczytu z Bufora z etapu 489 rozpoczyna czytanie następnych 8 KB danych z Pliku Zawieszenia i zapisywanie ich do drugiego bufora, będącego teraz buforem bieżącym. Podczas gdy Procedura Odczytu z Bufora z etapu 489 odczytuje następnych 8 KB danych z Pliku Zawieszenia i zapisywanie ich bufora bieżącego, to Procedura Dekompresji z etapu 493 czyta bufor zapełniony w etapie 486, dokonuje dekompresji skompresowanych danych i zapisuje je do pamięci systemowej, w etapie 494. Po dokonaniu dekompresji przez Procedurę Dekompresji z etapu 493 wszystkich danych z tego bufora, następnym krokiem jest określenie, czy już cała pamięć systemowa została poddana dekompresji, w etapie 494.
Sterownik IDE 86 nie może bardzo szybko odczytywać danych z dysku stałego 31. W konsekwencji Procedura Dekompresji z etapu 493 zawsze będzie kończyć dokonywanie dekompresji bufora 8 KB nie zapisanego na dysk stały 31, zanim Procedura Odczytu z Bufora z etapu 489 skończy odczytywanie danych z dysku stałego 31 do bufora bieżącego, zatem Procedura Dekompresji z etapu 493 musi czekać, aż Procedura Odczytu z Bufora 489 skończy odczytywanie danych z dysku stałego 31. Jeśli Procedura Dekompresji z etapu 493 nie skończyła dekompresji i zapisywania całej pamięci systemowej, to Procedura Dekompresji z etapu 493 czeka na Procedurę Odczytu z Bufora z etapu 489, w etapie 498. Procedura Dekompresji z etapu 493 i Procedura Odczytu z Bufora z etapu 489 komunikują się poprzez ustawiania znaczników. Kiedy Procedura Odczytu z Bufora z etapu 489 kończy odczytywanie danych z Pliku Zawieszenia do bieżącego bufora, to Procedura z etapu 489 przełącza następnie znaczniki buforowe, w etapie 490, wskazując Procedurze Dekompresji z etapu 493, że może rozpocząć dekompresję danych w buforze, które zostały właśnie odczytane z Pliku Zawieszenia. Następnie Procedura Odczytu z Bufora z etapu 489 decyduje, czy blok 8 KB pozostaje do odczytu z Pliku Zawieszenia, w etapie 492,. Jeśli nie to, Procedura Odczytu z Bufora z etapu 489 odczytuje pozostałe dane z Pliku Zawieszenia i zapisuje je do bieżącego bufora, w etapie 502. Procedura Odczytu z Bufora z etapu 489 przestaje działać w tle, czekając faktycznie na zakończenie przez Procedurę Dekompresji z etapu 493 dokonywania dekompresji ostatniej pamięci.
180 098
W międzyczasie Procedura Dekompresji z etapu 493, poprzez zbadanie znaczników buforowych, określa czy bufor jest gotowy do dekompresji pamięci systemowej. Oznacza to, że Procedura Dekompresji z etapu 493 czeka w etapie 498, aż Procedura Odczytu z Bufora z etapu 489 skończy operację z bieżącym buforem, w którym to czasie kontynuowana jest pętla dekompresji, w etapie 494.
Po skończeniu dekompresji całej pamięci systemowej przez Procedurę Dekompresji z etapu 493, jedyną procedurą działającą w tle jest procedura sterowana przerwaniami odtworzenia stanu modemu, objaśniona w tekście towarzyszącym do etapu 1020, przy czym główny program kontynuuje swe działanie w etapie 504.
Następnie odtwarzane są stany sterownika wizji 56 i sterownika IDE 86 w etapie 504 i 506 poprzez przepisanie wartości z segmentu E000H struktury danych do rejestrów znajdujących się w obrębie każdego z tych dwóch urządzeń. Etap 504 wskazuje również punkt, do którego przechodzi Procedura Zawieszenia (patrz etap 1024), jeśli zaliczany jest Punkt Kontrolny.
Następnie, w etapie 1022, Procedura Wznowienia sprawdza, czy nastąpiło zakończenie procedury sterowanej przerwaniami odtworzenia stanu modemu, opisanej w tekście towarzyszącym etapowi 1020. Jeśli nie, to oczekuje ona na jej zakończenie.
Jak przedstawiono w etapie 508, po skończeniu procedury sterowanej przerwaniami odtworzenia stanu modemu, pamięć podręczna 41 jednostki centralnej CPU oraz systemowa pamięć podręczna 60 są uaktywniane poprzez zapisywanie właściwych wartości odpowiednio do jednostki CPU 40 i sterownika pamięci podręcznej 62. Następnie Procedura Wznowienia odtwarza stan sterownika czasomierza 102, mikroprocesora 8042 interfejsu klawiatury 104 oraz sterownika przerwań 8259 92 poprzez zapisanie wartości z segmentu E000H struktury danych do rejestrów znajdujących się w obrębie odpowiednich urządzeń, w trakcie etapów od 510 do 514.
Następnie stany układów U ART 94 są odtwarzane poprzez przepisanie wartości z segmentu E000H struktury danych do ich odpowiednich rejestrów, w etapie 484.
Następnie Procedura Wznowienia wywołuje Procedurę Wymiany Obszaru Danych Systemu BIOS i Tablicy Wektorów, w etapie 516. Przed wywołaniem tej procedury, znany Obszar Danych Systemu BIOS i Tablica Wektorów jest aktywny w segmencie 0000H, przy czym odczytany z Pliku Zawieszenia, Obszar Danych Systemu BIOS i Tablica Wektorów jest nieaktywny w strukturze danych segmentu E000H. Po wymianie znany Obszar Danych Systemu BIOS i Tablica Wektorów jest nieaktywny w segmencie E000H, a Obszar Danych Systemu BIOS i Tablica Wektorów, która byłą zapamiętana przez Procedurę Zawieszenia jest aktywny w segmencie 0000H.
W końcu Procedura Wznowienia przechodzi do Procedury Odtworzenia Stanu CPU, w etapie 518, która odtwarza stan jednostki CPU 40 do stanu zanim został on zawieszony. Procedura Odtworzenia Stanu CPU będzie pełniej objaśniona w opisie do fig. 14. Procedura Odtworzenia Stany CPU przekazuje w końcu sterowanie wykonywaniem z powrotem do gospodarowania zasilaniem APM.
Ostatecznie, jednostka CPU 40 wykonuje instrukcję RETURN, powodującą że system wraca do APM. System kontynuuje teraz wykonywanie kodu, jakby system nigdy nie był zawieszony. Dla wszystkich praktycznych celów system nie podlega oddziaływaniu przez procedurę zawieszenie/wznowienie.
Odnosząc się teraz do fig. 13, przedstawia ona sieć działań Procedury Zapamiętania Stanu CPU. Procedura zawieszenia przechodzi do Procedury Zapamiętania Stanu CPU w etapie 600. Należy zauważyć, że udoskonalone gospodarowania zasilaniem APM uaktywnia segmenty E000H i F000H, z których działają te procedury, z dostępem typu odczyt/zapis. Ponadto EFLAGS oraz osiem rejestrów ogólnego przeznaczenia było zapamiętanych przez APM, jak wskazano w etapie 602. Na początku Procedura Zapamiętania Stanu CPU oczekuje na dostęp typu DMA, aby zakończyć i zsynchronizować się z pakietem danych myszki 13, w etapie 604, aby zapewnić, że procedura ta wykona się między transmisjami pakietów z da
180 098 nymi myszki (pakietu myszki). Następujące kroki umożliwiają DMA zakończenie i synchronizację pakiem z danymi z myszki: (1) odblokowanie przerwań, (2) oczekiwanie 7 milisekund na zakończenie dowolnego dostępu DMA, (3) zablokowanie przerwań, (4) oczekiwanie 5 milisekund na granicę pakiem myszki, (5) odblokowanie przerwań, (6) oczekiwanie dalszych 5 milisekund na przybycie pakiem myszki (7) zablokowanie przerwań. Po wykonaniu tych kroków, kod może być bezpiecznie wykonany między pakietami myszki.
Następnie, w etapie 606, na Stosie umieszcza się stan Linii Adresowej 20 (port we/wy 92H).
Przepływ wykonywanego kodu rozgałęzia się następnie, w etapie 1030, zależnie od tego, czy CPU jednostka 40 jest częścią „S” wyposażoną w przerwanie SMI. Jeśli tak, to jednostka CPU 40 poleca mikrosterownikowi U2 wygenerować z powrotem do jednostki CPU 40 przerwanie SMI, w etapie 1032. W odpowiedzi na to przerwanie SMI, mikroprogram w jednostce CPU 40 zapamiętuje stan CPU 40 w E000:FE00H w strukturze danych segmentu E000H, w etapie 1034. Zatem, jednostka CPU 40 zapamiętuje stan koprocesora zmiennoprzecinkowego, w etapie 1036 i wywołuje Procedurę Zawieszenia (fig. 10), w etapie 1038. Jak to objaśniono w innym miejscu, następuje powrót Procedury Zawieszenia, w etapie 1040 oraz odtworzenie stanu koprocesora zmiennopozycyjnego, również w etapie 1040. Zatem w etapie 1042 instrukcja RSM (wznowienie) odtwarza stan jednostki CPU 40 i rozgałęzia się do etapu 732.
Z drugiej strony, jeśli jednostka CPU 40 nie jest wyposażona w przerwanie SMI, to stan jej musi być zapamiętany przy użyciu pozostałego z fig. 13 kodu, przy czym stan koprocesora matematycznego 44 umieszcza się na Stosie, w etapie 608. Następnie, w etapie 610, znacznik ustawia się lub zeruje, aby wskazać, czy CPU działa w trybie 32-bitowym, czy 16-bitowym, odpowiednio.
Przepływ wykonywanego kodu rozgałęzia się następnie, w etapie 612, zależnie od tego, czy jednostka CPU 40 działa w Trybie Chronionym, czy nie. Jeśli jednostka CPU 40 nie działa w Trybie Chronionym, to musi działać w Trybie Rzeczywistym, przy czym rejestry mogą być zapamiętane w bardzo prosty sposób. Po pierwsze, wartości w słowie statusu maszyny i CR3 są zapisywane do segmentu E000H struktury danych w obszarach odpowiadających wartości TR oraz LDTR, ponieważ wartości TR oraz LDTR mają wartość zero w Trybie Rzeczywistym.
Kod ten następnie łączy się z ogólną ścieżką w etapie 616, kiedy to wartości zapamiętane w GDRT i LDRT są zapisywane w strukturze danych segmentu E000H. Następnie przepływ wykonywanego kodu rozgałęzia się, w etapie 618, zależnie od tego, czy jednostka CPU 40 działa w Trybie Wirtualnym procesora 8086, czy nie. Jeśli jednostka CPU 40 nie działa w Trybie Wirtualnym procesora 8086, to kod kontynuuje ruch w dół ogólną ścieżką do etapu 620, gdzie rejestry do usuwania błędów z programu DR7, DR6, DR3, 4R2, DR1 i DR0 są umieszczane na Stosie. Rejestry te są używane przez programy uruchomieniowe oraz inne procedury. Następnie DS, ES, FS i GS są umieszczane na Stosie, w etapie 622. Z kolei wartości z CS, SS i ESP są zapisywane do segmentu E000H struktury danych.
W tym punkcie, wszystkie wartości, które miały być zapisane do segmentu E000H struktury danych zostały zapisane tak, że atrybut segmentów E000H i F000H struktury danych, stanowiących Zwierciadlane Odbicie Pamięci RAM może zostać zmieniony z powrotem na „tylko-odczyt”, w etapie 626. Z kolei, pamięć podręczna 41 CPU zostaje opróżniona przy użyciu polecenia Zapis Powrotny i Unieważnienie Pamięci Podręcznej, w etapie 628.
Na końcu, ustawiony jest Znacznik Zamknięcia Systemu w pamięci trwałej CMOS 96, w etapie 630. Wreszcie Procedura Zapamiętania Stanu CPU „Powraca” w istocie do Procedury Zawieszenia, w etapie 632. „Powrót” ten jest faktycznie operacją WYZERUJ (ustaw w stan początkowy), po której następuje rozgałęzienie kodu. Jednostka CPU 40 ustawia w stan początkowy poprzez skok do kodu wskazanego przez Wektor Ustawiania W Stan Początkowy. Ustawianie w stan początkowy jednostki CPU 40 wymusza przejście jednostki CPU 40 do Trybu Rzeczywistego, w którym wszystkie urządzenia i lokacje pamięci mogą być udostę
180 098 pniane bez obawy wygenerowania błędu ochrony. Po tej chwili, stan jednostki CPU 40 został już zapamiętany a Procedura Zawieszenia musi zapamiętać stan pozostałej części systemu.
W obrębie kodu wskazanego przez Wektor Ustawiania W Stan Początkowy, sterowanie programami rozgałęzia się, zależnie od tego, czy ustawiony jest Znacznik Zamknięcia Systemu w pamięci trwałej CMOS 96. Jeśli Znacznik Zamknięcia Systemu jest wyzerowany, to system ładuje się tak, jakby uczynił to normalnie. Z drugiej strony, jeśli Znacznik Zamknięcia Systemu jest ustawiony, to kod rozgałęzia się do pozostałej części Procedury Zawieszenia zaś sterowanie wykonywaniem, przechodzi do etapu 253 na fig. 10 w obrębie Procedury Zawieszenia, która kończy zawieszenie systemu 10. Stąd Procedura Zapamiętania Stanu CPU skutecznie „Powraca” do Procedury Zawieszenia w etapie 632.
Odnosząc się z powrotem do etapu 612, jeśli jednostka CPU 40 jest w Trybie Chronionym, to kod rozgałęzia się, w trakcie 634, zależnie od tego, czy jednostka CPU jest w Trybie Wirtualnym procesora 8086, czy nie. Jeśli jednostka CPU 40 nie jest w Trybie Wirtualnym procesora 8086, to kod ponownie rozgałęzia się, w etapie 636, zależnie od tego, czy poziom bieżącego przywileju równa się zero. Jeśli poziom bieżącego przywileju jest różny od zera, to procedura bez odpowiedniego przywileju wykonuje Procedurę Zapamiętania Stanu CPU oraz wy woły wana jest Procedura Fatalnego Błędu Zawieszenia (rozpoczyna się w etapie 652). Poniżej przedyskutuje się Procedurę Fatalnego Błędu Zawieszenia. Jeśli sterowanie programami powraca z Procedury Fatalnego Błędu Zawieszenia, to jednostka CPU musi być przywrócona do swych warunków sprzed wywołania Procedury Zapamiętania Stanu CPU tak, że wykonywanie programu rozgałęzia się na etapie 794, na fig. 14, który wykonuje częściowe odtworzenie stanu CPU. Wymagane jest jedynie częściowe odtworzenie, ponieważ bardzo mało zostało zmodyfikowane w jednostce centralnej CPU.
Odnosząc się z powrotem do etapu 636, jeśli wywołany kod ma prawidłowy poziom przywileju, to zapamiętywanie jest kontynuowane, w etapie 642, przy czym wartości CR0, CR3, TR i LDTR są zapamiętane w strukturze danych segmentu E000H. Następnie ten kod łączy się z ogólną ścieżką w etapie 616, kiedy to wartości w GDTR i IDTR są zapamiętane w strukturze danych segmentu E000H, jak objaśniono powyżej. Od tego miejsca, realizacja kodu podąża ścieżką od etapu 618 do etapu 632, co było objaśnione powyżej, skutkując „Powrotem” (zerowanie wraz z rozgałęzieniem) do pozostałej części kodu Procedury Zawieszenia.
Odnosząc się z powrotem do etapu 634, jeśli jednostka CPU 40 jest w Trybie Wirtualnym procesora 8086, to wykonywanie kontynuuje się w etapie 644, kiedy to wartość słowa statusowego maszyny (mniej znaczące 16 bitów CR0) zapamiętuje się w strukturze danych segmentu E000H, przy czym Znacznik w strukturze danych segmentu E000H jest ustawiony, wskazując, że jednostka CPU 40 jest w Trybie Wirtualnym procesora 8086. Kod ten łączy się z ogólną ścieżką w etapie 616 poprzez transfer przez etapy 646 i 648. W etapie 618, jeśli CPU była w Trybie Wirtualnym procesora 8086, to sterowanie rozgałęzia się na etap 650, kiedy to wartości DS, ES, FS i GS są zapamiętane w segmencie E000H struktury danych. Kod ponownie łączy się z ogólnym kodem w etapie 624. Od tego miejsca realizacja kodu podąża ścieżką od etapu 624 do etapu 632, co było objaśnione powyżej, skutkując „Powrotem” (zerowanie wraz z rozgałęzieniem) do pozostałej części kodu Procedury Zawieszenia.
W trakcie etapów od 652 do 664 napotyka się Procedurę Fatalnego Błędu Zawieszenia, przy czym wywołuje się ją w etapie 638, jeśli kod z niepoprawnym poziomem przywileju dokonuje prób zapamiętania stan CPU. Po pierwsze, w etapie 654 zeruje się Czasomierz Odporny Na Uszkodzenia. Następnie głośnik brzęczy pewną liczbę razy ze słyszalną częstotliwością, np. trzy razy z częstotliwością 886 Hz w ciągu 0,25 sekundy z 1/6 sekundy przerwy między brzęczeniami, w etapie 656. Trzy brzęczenia (sygnały akustyczne) zwracają uwagę użytkownika, że próbowane zawieszenie nie nastąpiło. Po brzęczeniu, Czasomierz Odporny Na Uszkodzenia ponownie podlega wyzerowaniu w etapie 658, aby dać użytkownikowi kolejne 15 - 18 sekund zanim wyczerpie się Czasomierz Odporny Na Uszkodzenia i nastąpi przez to zamknięcie zasilacza 17.
180 098
Następnie, Procedura Fatalnego Błędu Zawieszenia wielokrotnie sprawdza, czy Przełącznik 21 był naciśnięty przez użytkownika, w etapie 660 i 662, co by wskazywało, że użytkownik chce przerwać proces zawieszenia. Przełącznik podlega sprawdzaniu przez jednostkę CPU 40 na okoliczność zamknięcia, poprzez odpytywanie mikrosterownika U2, czy nastąpiło zdarzenie zamknięcia. Jeśli użytkownik naciśnie przycisk 21, to sterowanie wykonywaniem wraca do etapu 640, jak wyżej. Jeśli użytkownik nie naciśnie przycisku 21 w przeciągu 15-18 sekund, to Czasomierz Odporny Na Uszkodzenia wyczerpie się i zasilacz 17 zostanie „wyłączony” przez mikrosterownik U2, przy czym oczywiście całe wykonywanie kodu przez CPU 40 będzie zakończone, gdy napięcie w systemie przekroczy [zakres] tolerancji.
Odnosząc się teraz do fig. 14, przedstawia ona rozpoczęcie w etapie 700 przepływu działań Procedury Odtwarzania Stanu CPU. Procedura ta wywoływana jest przez Procedurę Wznowienia, po odtworzeniu [stanu] pozostałej części sprzętu oraz pamięci do ich stanu sprzed zawieszania. Po pierwsze, jeśli segment E000H struktury danych nie ma jeszcze atrybutu odczyt/zapis, to [taki atrybut] powinien być nadany w etapie 702.
Następnie przepływ kodu wykonawczego rozgałęzia się, zależnie od tego, czy jednostka CPU 40 działała w Trybie Wirtualnym procesora 8086, gdy została zawieszona, w etapie 704. Jeśli jednostka CPU 40 działała w Trybie Wirtualnym procesora 8086, gdy system 10 został zawieszony, to odtwarza się kod w etapach 706 do 728, unikatowych dla Trybu Wirtualnego CPU 8086. Z kolei kod łączy się z ogólna ścieżką, w etapach od 730 do 748.
Jeśli jednostka CPU 40 była w Trybie Wirtualnym procesora 8086, gdy stan ten został zapamiętany, to do CR3, LDTR i TR nie mogła mieć dostępu Procedura Zachowania Stanu CPU, aby zapamiętywać ich wartości w strukturze danych segmentu E000H. Zatem CR3, LDTR i TR podlegają oszacowaniu, odpowiednio w etapach 706, 708 i 710. Ogólnie podlegają one oszacowaniu przez poszukiwanie w pamięci systemowej RAM 53 struktur, na które wskazują CR3, LDTR i TR, np. poprzez znalezienie wejścia do LDT w GDT, umożliwia się określenie LDTR.
CR3 podlega oszacowaniu w etapie 706. CR3 utrzymuje Rejestr Podstawowy Katalogu Stron PDBR (Page Directory Base Register), który zawiera adres ramki strony katalogu stron, utrzymuje bit Zablokowania Pamięci Podręcznej Poziomu Stron PCD (Page-Level Cache Disable) oraz bit Jednoczesnego Zapisu Pamięci Podręcznej Poziomu Stron PCD (Page-Level) WriteThrough) Oszacowanie PDBR wykonuje się, wiedząc, że katalog stron musi rozpoczynać się od granicy 4 K w pamięci systemowej RAM 53 oraz znając wartości dla IDTR i GDTR, które zostały zapamiętane w strukturze danych segmentu E000H przy wykorzystaniu Procedury Zapamiętania Stanu CPU i przy założeniu, że kod systemu BIOS wykonuje się z segmentu F000H. Założenie to jest uzasadnione, ponieważ kod systemu BIOS jest już odzwierciedlony w pamięci Zwierciadlanej RAM, dla poprawy szybkości jego działania. Jeśli system operacyjny skopiował kod systemu BIOS do innego obszaru, to oszacowanie CR3 zakończy się błędem.
Według powyższych założeń, każda strona 4 K pamięci fizycznej podlega sprawdzeniu, czy występuje tablica translacji stron, odpowiadająca segmentom kodu systemu BIOS. To jest adres efektywny 03C0H na stronie zawierałby wartości 000F0XXX, OOOF1XXX, 000F2XXX,...000FEXXX. Po zlokalizowaniu strony, system pamięci RAM 53 poszukuje katalogu stron, którego pierwsze wejście odpowiada fizycznemu adresowi tablicy stron, która została zlokalizowana powyżej. Fizyczny adres katalogu stron jest popranym „odgadnięciem” wartości PDBR.
Przypuszczalna wartość PDBR podlega następnie weryfikacji, aby upewnić się, że PDBR dokona poprawnej translacji adresów dla GDTR i IDTR. To wykorzystuje się PDBR do translacji adresu liniowego GDTR, a pierwsze wejście GDT podlega weryfikacji na zero (pierwszych osiem bajtów GDT ma zawartość 00H w dowolnym trybie CPU). Następnie fizyczny adres, który jest zwracany, podlega weryfikacji, czy mieści się w granicach pamięci fizycznej. Do przeprowadzenia translacji z liniowej na fizyczną, wykorzystuje się procedurę, która imituje metodę translacji CPU. Adres który poddany został translacji, zwracany jest do
180 098
ESI, a znacznik przeniesienia CF zeruje się, jeśli strona fizyczna występuje w pamięci fizycznej oraz CF ustawia się, jeśli strona fizyczna nie występuje w pamięci fizycznej. Przy użyciu procedury translacji odczytuje się pierwszy bajt GDT z pamięci 53. Jeśli pierwsze wejście GDT jest puste, to hipotetyczny PDBR przeszedł przez swój pierwszy test, dlatego podlega ponownemu testowaniu. Następnie wykorzystuje się PDBR do translacji IDTR, aby odnaleźć IDT, za pomocą procedury translacji. Następnie fizyczny adres, który jest zwracany, podlega weryfikacji, czy znajduje się w granicach fizycznej pamięci. Jeśli pierwsza lokacja IDT znajduje się w fizycznej pamięci, to PDBR przeszedł swój drugi test.
Jeśli hipotetyczny PDBR dokonuje poprawnie translacji na GDTR i IDTR, to domniema się, że wartość odpowiada PDBR i zapisuje się ją do obszaru CR3 w obrębie struktury danych segmentu E000H. Jeśli, z drugiej strony, hipotetyczny CR3 doprowadza test do błędu, to procedurę rozpoczyna się ponownie, w poszukiwaniu, w systemowej pamięci, tablicy translacji stron segmentu kodu systemu BIOS, co może prowadzić do poprawnej wartości CR3.
Dla PCD i PWT zakłada się zawsze, że mają one ustalone wartości 00H przy normalnych operacjach planarnych. Wartości te są ustalone na zero i zapisywane w obrębie PDBR obszaru CR3 w strukturze danych segmentu E000H.
Po dokonaniu oszacowania CR3, szacuje się LDTR w etapie 708. LDTR może być oszacowany, ustalając, że CR3 został oszacowany, wiedząc, że LDT jest gdzieś w obrębie GDT i wiedząc, że LDT musi być obecny w pamięci. Do oszacowania LDTR, przeszukuje się GDT w poszukiwaniu LDT, który został zaznaczony jako obecny. Domniema się, że pierwszy LDT obecny w fizycznej pamięci (sprawdzony przy użyciu procedury translacji, objaśnionej w tekście towarzyszącym etapowi 706) i oznakowany jako obecny, jest tablicą na którą wskazuje LDTR. Fizyczny adres początku tablicy zapamiętany jest w obszarze LDTR w strukturze danych segmentu E000H.
Wyraża się przekonanie, że powyższa metoda oszacowania LDTR jest wystarczająco niezawodna, aby być przydatna, nawet pomimo to, że pod nadzorem systemu operacyjnego OS/2 może być zaznaczony więcej niż jeden LDT, jako obecny i być obecny w pamięci fizycznej. Popularną procedurę Trybu Wirtualnego procesora 8086 jest EMM386, ale może ona powodować pewne problemy. Jednakże CR3 i LDTR dla EMM386 mogą być łatwo oszacowane, ponieważ EMM386 ma tylko jeden CR3 i jeden LDTR.
Po dokonaniu oszacowania CR3 i LDTR, szacuje się TR w etapie 710. Istotnie, każę wejście selektora zadania w obrębie GDT i LDT prowadzi do poszukiwania selektora stanu zadania z ustawionym bitem zajętości. Sprawdza się pole typu dla każdego wejścia, aby zobaczyć, czy zajęty jest selektor stanu zadania 80286 lub zajęty jest selektor stanu zadania 80486. Pierwsze wejście z zajętym albo TSS 286, albo TSS 486 jest domniemanym adresem, który wskazuje TR. Fizyczny adres wejścia z zajętym TSS 286 lub TSS 486 zostaje zapamiętany w obszarze TR w obrębie segmentu E000H struktury danych. Jeśli żadne wejście nie ma zajętego TSS 286 lub TSS 486, to wartość zero zapamiętuje się w obszarze TR w obrębie struktury danych segmentu E000H.
Oszacowawszy CR3, LDTR i TR kontynuuje się działanie kodu w etapie 712. W etapie 712, jeśli TR wskazuje poprawny TSS, to zeruje się bit zajętości w TSS, wskazywanym przez TR, w etapie 714. Którakolwiek z dróg kontynuowania działania kodu w etapie 716, gdzie DS, ES, FS i GS są ładowane przez selektor jest poprawna dla GDT. Następnie CR3 i CR0 są ładowane wartościami ze struktury danych segmentu E000H, w etapie 718. Z kolei odblokowuje się stronicowanie, w etapie 720 tak, że jedynym obszarem, dla którego adresowanie liniowe równa się adresowaniu fizycznemu, jest obszar w segmentach E000H i F000H.
Następnie IDTR, GDTR, LDTR i TR są ładowane wartościami zapamiętanymi w strukturze danych segmentu E000H, w etapie 722.
Na końcu tworzy się Stos Przerwań Trybu Wirtualnego 8086 w etapie 724 i 726 przez umieszczenie odpowiadających wartości GS, FS, DS, ES, SS, ESP, EFLAGS (po ustawieniu bitu Trybu Wirtualnego) i CS ze struktury danych segmentu E000H na Stosie. Również, adres zwrotny, odpowiadający kodowi w etapie 730 umieszcza się na stosie w etapie 726. W końcu
180 098 wykonuje się instrukcję IRETD, aby umieścić jednostkę CPU 40 z powrotem w Trybie Wirtualnym procesora 8086 i dokonuje transferu wykonywania, do kodu odpowiadającego etapowi 730.
Etap 730 rozpoczyna się w ogólnym torze, używanym przez każdy z różnych torów na fig. 14. W etapie 730, stan koprocesora 44 odtwarza się na podstawie wartości zapamiętanych w strukturze danych segmentu E000H. Następnie ze Stosu pobierany jest stan Linii Adresowej 20 (port we/wy 92H), w etapie 732. Etap 732 jest również miejscem, do którego przechodzi procedura zapamiętania stanu CPU, wykorzystująca przerwanie SMI (patrz etap 1046). Następnie segment E000H Zwierciadlanej Pamięci RAM ustawia się ponownie na „tylko do odczytu”, w etapie 734. W etapie 736, gospodarowanie zasilaniem APM łączy się ze sprzętem poprzez ponowne uruchomienie czasomierza odpornego na uszkodzenia, jak pisano w tekście do opisu fig. 6A i 19. Następnie atrybut Zwierciadlanej Pamięci RAM w segmentach E000H i F000H struktury' danych ustawia się ponownie na „tylko-odczyt”, w etapie 738. W końcu, w etapie 740. Procedura Odtworzenia Stanu CPU ustawia znacznik, wskazujący, że zachodzi normalne wznowienie. Etapy 742, 744 i 746 nie są wykonywane przez Procedurę Odtworzenia Stanu CPU, lecz po prostu są używane do przedstawiania, że w pewnym okresie czasu poprzedzającym powrót do kodu, który był przerwany przez zdarzenie zawieszenia: pobieranych jest ze Stosu osiem rejestrów ogólnego przeznaczenia, zezwala się na przerwania maskowalne (jeśli były one dozwolone, gdy działanie kodu zostało przerwane) oraz pobiera się znaczniki ze stosu. W końcu Procedura Odtworzenia Stanu CPU powraca do Procedury Nadzorczej, która zwraca sterowanie z powrotem do gospodarowania zasilaniem APM, które aktualizuje przestarzałe wartości systemowe i zwraca sterowanie do kodu, który został przerwany.
Odnosząc się teraz z powrotem do etapu 704, jeśli jednostka CPU 40 nie była w Trybie Wirtualnym procesora 8086, kiedy wystąpiło przerwanie, to działanie kodu podąża ścieżką od etapu 750 do etapu 792, kiedy to kod łączy się z ogólnym torem zadań od etapu 730 do etapu 748. W etapie 750, jeśli wartość TR w strukturze danych segmentu E000H wskazuje na prawidłowy TSS, to bit zajętości w TSS ulega wyzerowaniu w etapie 752. W innym przypadku, z kolei w etapie 754, GDTR i CRO są ładowane wartościami z segmentu E000H struktury danych.
Następnie pusta tablica katalogu stron i tablica translacji stron są ładowane do segmentu E000H, w trakcie zadań etapów od 756 do 764. Po pierwsze segment E000H Zwierciadlanej Pamięć RAM ustawia się na odczyt/zapis, w etapie 756. Po drugie pod adresem 0E0000H tworzy się nową tablicę katalogu stron, w etapie 758. Po trzecie, pierwsze wejście do nowej tablicy katalogu stron podlega modyfikacji na OE1000H, w etapie 760. Po czwarte pod adresem 0E1000H tworzy się nową tablicę katalogu stron tak, że występują w niej adresy od 0E0000 do OFFFFF, przy czym adresy liniowe są równe adresom fizycznym dla tego zakresu adresów, w etapie 762. W końcu, podstawowy rejestr katalogu stron w CR3 podlega załadowaniu 0E0000H tak, że translacje adresów są wykonywane poprzez nowy pusty katalog stron i nową pustą tablicę translacji w 0E0000H. Stronicowanie podlega ponownemu uaktywnieniu (jeśli daje się zastosować), kiedy CRO został załadowany w trakcie etapu 754.
Następnie, segmenty E000H i F000H Zwierciadlanej Pamięci RAM ustawia się na zapis/odczyt, w etapie 766. Z kolei, jeśli jednostka CPU 40 wykonywała kod 16-bitowy, gdy została zawieszona, to było w Trybie 16-Bitowym i adres efektywny, wskazujący na ścieżkę kodu 16-bitowego zostaje zapamiętany w strukturze danych segmentu E000H, w etapie 770. Z drugiej strony, jeśli jednostka CPU 40 nie była Trybie 16-Bitowym, to była Trybie 32-Bitowym i adres efektywny, wskazujący na ścieżkę kodu 32-bitowego zostaje zapamiętany w strukturze danych segmentu E000H, w etapie 772, zamiast w kopii 16-bitowej. W każdym zdarzeniu, te ścieżki kodu są równoległe i różnią się tylko tym, że jedne używają 16-bitowych operandów a drugie 32-bitowych operandów. Etapy od 770 do 772 zwykle ustawiają adres efektywny na jedną z równoległych ścieżek. Do jednej z tych ścieżek (odpowiadającej adresowi efektywnemu) wchodzi się w etapie 782.
180 098
Następnie, w etapie 774, wartość CR3 ze struktury danych segmentu E000H ładuje się do EDX, wartość SS ze struktury danych segmentu E000H ładuje się do CX, wartość ESP ze struktury danych segmentu E000H ładuje się do EBP, wartość TR ze struktury danych segmentu E000H ładuje się do górnej połówki ESJ oraz wartość LDTG ze struktury danych segmentu E000H ładuje się do dolnej połówki ESI (SI). Wartości te są przesuwane do swoich właściwych lokacji, poniżej. Następnie GDTR, LDTR i CRO ładuje się ich wartościami ze struktury danych segmentu E000H, w etapie 776. W etapie 778, LDTR ładuje się wartością LDTR zapamiętaną w SI. Z kolei, kod skacze daleko do adresu efektywnego, umieszczonego albo w etapie 770, albo w etapie 772. Skok jest zakodowany poprzez bezpośrednio umieszczony opkod (kod operacyjny) w kodzie źródłowym oraz użyciu adresu efektywnego albo z etapu 770, albo z etapu 772. Następnie kod kontynuuje działanie albo poprzez ścieżkę opkodu 16-bitowego, albo poprzez ścieżkę opkodu 32-bitowego, w etapie 782.
Następnie CR3 ładuje się wartością CR3 zapamiętaną w EDX, DD ładuje się wartością SS zapamiętaną w CX i ESP ładuje się wartością ESP zapamiętaną w EBP, w etapie 784. Z kolei GS, FS, ES i DS są pobierane ze stosu, w etapie 786. W etapie 788, jeśli jednostka CPU 40 z przerwanym działaniem, wykonywała kod w trybie chronionym, to TR ładuje się wartością TR, zapamiętaną w górnej połówce ESI, w etapie 790. W innym przypadku, wykonywanie kodu kontynuuje się w etapie 792, kiedy to rejestry uruchomieniowe DR0, DR1, DR2, DR3, DR6 i DR7 są pobierane ze Stosu.
W tym punkcie, ta ścieżka kodu łączy się z ogólną ścieżką etapów od 730 do 748, które były objaśnione powyżej. W etapie 794, procedura usuwania błędów również łączy się z ogólną ścieżką od etapu 640 Procedury Zapamiętania Stanu CPU.
Odnosząc się teraz do fig. 15, przedstawia ona sieć działań Procedury Zapamiętania Stanu 8259, w etapie 800. Zapamiętanie stanów układów 8259 zachodzi poprzez zapamiętywanie wartości okresowych przerwań, używanych przez zegar czasu rzeczywistego 98, w etapie 802 oraz zapamiętanie wszystkich innych dających się czytać rejestrów, w etapie 804, w strukturze danych segmentu E000H. Architektura systemu komputerowego 10 wymaga pewnych rejestrów układu 8259 tylko do odczytu o ustalonych wartościach. Wartości te są dobrze znane i nie potrzebują być określane. Wartości układu 8259, które są trudne do uzyskania to adresy układu bazowego 8259, adresy układu podporządkowanego 8259 oraz dane, czy dwa układy 8259 są ustawione tak, aby przedstawiać przerwania nie załatwione lub będące w trakcie obsługi przez system SO.
Cztery powyższe pozycje podlegają sprawdzeniu z pozostałym kodem na fig. 15. W etapie 806 układ 8259 podlega maskowaniu, pozostawiając jedynie nie zamaskowane przerwania od klawiatury 12 i myszki 13.
Następnie, tablica wektorów przerwań jest zapamiętywana poprzez kopiowanie 1 K dolnej pamięci fizycznej do struktury danych segmentu E000H, w trakcie 808. Z kolei, w etapie 810, nowa „pusta” tabela wektorów przerwań podlega lądowaniu do 1 K dolnej pamięci fizycznej, poprzez ładowanie 256 unikatowych pustych wektorów, które wskazują na 256 pustych procedur obsługi przerwań, które rozpoczynają się w segmencie C800H. W etapie 812, w segmencie C800H generuje się 256 pustych procedur obsługi przerwań.
Następnie blokowane są przerwania od klawiatury 12 i myszki 13, w etapie 814. Dowolne nie potwierdzone przerwania od klawiatury 12 i myszki 13 są potwierdzane, w etapie 816.
Następnie generowane jest przerwanie od klawiatury, w etapie 818, przy czym przerwanie to podlega sprawdzeniu, czy podstawowy układ 8259 jest ustawiony w stan „nie załatwione” lub „w obsłudze”, w etapie 820. Wartość ta jest następnie zapisywana do struktury danych segmentu E000H. W etapie 822, kod oczekuje na obsłużenie przerwania. Przerwanie obsługuje się, w etapie 824, poprzez wywołanie jednej z pustych procedur obsługi. Poprzez wywołanie pustej procedury obsługi określa się adres układu podstawowego 8259 oraz czy układ 8259 nie był załatwiony lub w trybie obsługi. Adres układu podstawowego oraz tryb są zapamiętane w strukturze danych segmentu E000H.
180 098
Podobna procedura wykonywana jest dla układu podporządkowanego 8259 w etapach 826, 828, 830 i 832.
W etapie 834 odtwarzana jest tablica wektorów przerwań poprzez kopiowanie wartości ze struktury danych segmentu E000H z powrotem do 1 K dolnej pamięci fizycznej. Następnie segment E000H ponownie ustawia się w stan tylko do odczytu, w etapie 836, przy czym wszystkie przerwania są maskowane, w etapie 838, w przygotowaniu do powrotu do programu wywołującego, w etapie 840.
Odnosząc się teraz do fig. 16, przedstawia ona sieć działań procedury używanej do alokacji Pliku Zawieszenia. Jak wskazano w tekście towarzyszącym etapowi 1012, Plik Zawieszenia alokowany w tablicy FAT powinien zajmować przylegające sektory, aby umożliwić szybkie zapisywanie na dysk oraz szybkie odczytywanie z dysku odpowiednio podczas zawieszeń i wznowień. Jak jest to również oczywiste dla fachowców w przedmiotowej dziedzinie techniki, Plik Zawieszenia musi być wystarczająco duży, aby zachować skompresowaną zawartość dotyczącą stanu całego systemu.
Przy końcu, procedura do dynamicznej alokacji Zawieszenia rozpoczyna się w etapie 1050. Procedura ta wykonywana jest przez system SO za każdym razem, gdy system ładuje się bez wykonywania Procedury Wznowienia, przy czym powinna być wykonywana po dodaniu pamięci do systemu. Po pierwsze, Procedura Alokacji przedstawiona na fig. 16 bada, czy obecny jest układ gospodarowania zasilaniem, w etapie 1052, poprzez sprawdzenie znacznika w pamięci CMOS NVRAM. Jeśli nie występuje postać sprzętowa gospodarowania zasilaniem 106, to program wychodzi, w etap 1054. Jeśli występuje postać sprzętowa gospodarowania zasilaniem 106, to procedura sprawdza, czy Wznowienie nie jest załatwione, w etapie 1056. Jeśli nie, wtedy program wychodzi, w etap 1058.
Jeśli wznowienie jest załatwione, to następnie Procedura Alokacji bada, czy istnieje Partycja Zapamiętania Pliku, w etapie 1060. Jeśli Partycja Zapamiętania Pliku istnieje, to program wychodzi, w etap 1062, przy założeniu, że partycja jest wystarczająco duża, aby zachować stan całego systemu.
Jeśli nie istnieje Partycja Zapamiętania Pliku, to plik musi być alokowany w tablicy FAT dla Pliku Zapamiętania. Po pierwsze, określa się rozmiar pliku, w etapie 1064. Obliczenia te dokonuje się przez dodanie rozmiaru pamięci systemowej RAM 53, rozmiaru pamięci wizji 58, rozmiaru innych urządzeń, mających dużą pojemność pamięci nietrwałej oraz 64 kilobajtowego obszaru do składowania wartości z rejestrów różnych urządzeń, takich jak jednostka CPU 40.
Po obliczeniu wymaganego rozmiaru Pliku Zapamiętania, dokonuje się następnie prób alokacji Pliku Zapamiętania w tablicy FAT, w etapie 1066. Jeśli nie ma wystarczającej przestrzeni do składowania, dostępnej na dysku stałym 31, to Procedura Alokacji wywołuje procedurę, w etapie 1070, aby zwiększyć rozmiar dostępnej przestrzeni na dysku stałym 31, jeśli jest to możliwe.
Wywołania systemu DOS nie gwarantują przylegania sektorów w pliku. Zatem, jeśli dysk stały 31 ma wystarczającą przestrzeń do zachowania Pliku Zapamiętania, to Procedura Alokacji określa następnie, czy przestrzeń jest zwarta, w etapie 1072. Jeśli Plik Zapamiętania jest pofragmentowany (nie jest zwarty), to Procedura Alokacji wywołuje procedurę, w etapie 1074, aby dokonać defragmentacji dysku stałego w celu zapewnienia zwartości Pliku Zapamiętania, jeśli jest to możliwe.
Jeśli Plik Zapamiętania nie jest pofragmentowany, to następnie Procedura Alokacji zapisuje podpis („PS/1 Power Managment”) do pierwszego sektora Pliku Zapamiętania, w etapie 1076. Z kolei Procedura Alokacji dokonuje konwersacji DOS-owego programu obsługi dla pliku na fizyczny cylinder, głowicę i sektor dla systemu BIOS i zapisuje te wartości do pamięci CMOS NVRAM, w etapie 1078. Na końcu Procedura Alokacji wychodzi, w etapie 1080.
Procedura do defragmentacji dysku stałego 31, która rozstała wywołana w etapie 1074, rozpoczyna się w trakcie etapu 1082 i trwa do etapu 1094. Na początku testuje się dysk stały 31,
180 098 w etapie 1084, aby określić, czy jest on skompresowany przy użyciu jednej z procedur kompresowania dysków stałych.
Jeśli dysk stały 31 nie jest skomplikowany, to z kolei dokonuje się defragmentacji całego dysku stałego 31, w etapie 1094, przy użyciu narzędzi defragmentujących. Zatem, procedura powraca, w trakcie 1088, aby rozpocząć od nowa część alokacji Procedury Alokacji, w etapie 1090.
Jeśli dysk stały 31 jest skompresowany, to z kolei minimalizowana jest skompresowana część dysku stałego 31, w etapie 1092. Zatem, nie skompresowana cześć dysku stałego 31, w etapie 1094, podlega defragmentacji, przy użyciu narzędzi defragmentujących. Zatem następuje powrót procedury w etapie 1088, aby rozpocząć od nowa część alokacyjną Procedury Alokacji, w etapie 1090.
Procedura, która została wywołana w etapie 1070 do zwiększenia przestrzeni dostępnej na dysku stałym 31 rozpoczyna się w etapie 1100 i trwa do etapu 1110. Po pierwsze podlega testowaniu dysk stały 31, w etapie 1102, aby okreslć, czy jest on skompresowany przy użyciu jednej z procedur kompresowania dysków stałych.
Jeśli dysk stały 31 nie jest skompresowany oraz dysk stały 31 nie ma wystarczająco dużo przestrzeni, dostępnej dla Pliku Zapamiętania, a zatem wyświetlany jest komunikat, w etapie 1104, informujący użytkownika że, aby skorzystać z właściwości zawieszenia i wznowienia, użytkownik musi albo dodać dodatkową pojemność dyskową, albo skasować pliki z dysku stałego 31.
Jeśli dysk stały 31 jest skompresowany, to z kolei zwiększa się rozmiar nieskompresowanej części dysku stałego 31, jeśli jest to możliwe, w etapie 1108. Zatem, procedura powraca, w etapie 1110, aby rozpocząć od nowa część alokacyjną Procedury Alokacji, w etapie 1090.
Odnosząc się teraz do fig. 17, przedstawiona jest na niej sieć działań Procedury Wyjścia ze Stanu Gotowości, w etapie 1120. Zrozumiałe jest, że gdy system wychodzi ze stanu gotowości 152, to system odwraca zmiany spowodowane przechodzeniem systemu z normalnego stanu operacyjnego 150 do stanu gotowości 152. W skrócie, gdy system wychodzi ze stanu gotowości 152, to system odtwarza sygnał wizji, rozświetla diodę LED 23, rozpędza dysk stały znajdujący się w obrębie napędu dysku stałego 31, odtwarza stan zegara systemowego, blokuje wywołania Stanu Jałowego CPU, wyposażonej w APM tak, że wywołania Stanu Jałowego CPU ze sterownika APM nie zatrzymują dłużej jednostki CPU 40 oraz zeruje znacznik, wskazujący, że system 10 jest w Stanie Gotowości 152.
Po pierwsze, procedura sprawdza, w etapie 1122, czy Punkt Kontrolny był wygenerowany, gdy system wszedł do stanu gotowości 152. Jeśli tak, to bit zaliczenia Punktu Kontrolnego jest zerowany, w etapie 1124, wskazując przez to, że Punkt Kontrolny nie jest dłużej ważny. W tym konkretnym przykładzie wykonania wynalazku, Punkt Kontrolny traci swoją ważność, gdy system wychodzi ze stanu gotowości. Dane z Punktu Kontrolnego są używane wyłącznie do wznowienia systemu, kiedy system zachowa się niepoprawnie, będąc w stanie gotowości 152, ponieważ większość systemów wykorzystuje pliki wirtualnej wymiany na dysku stałym, to dokonuje wznowienia na podstawie danych z Punktu Kontrolnego można byłoby wprowadzić maszynę do stanu, w którym plik wymiany będzie całkowicie odmienny od oczekiwanego, przez stan systemu zachowany jako dane z Punktu Kontrolnego. W pewnym przypadku, dane z Punktu Kontrolnego mogą być unieważnione po następnym dostępie dyskowym. W innym przypadku, dane z Punktu Kontrolnego mogłyby być unieważnione po dostępie dyskowym do pliku, który mógłby spowodać problemy systemowe, jeśli system byłby wznowiony na podstawie tych danych z Punktu Kontrolnego. Jeszcze w innym przypadku, dane z Punktu Kontrolnego mogłyby być dostępne dla użytkowników przez cały czas, ze zrozumieniem, że wznowienie na podstawie danych z Punktu Kontrolnego może spowodować, że pewne lub wszystkie dane na dysku stałym 31 będą stracone.
Zatem, jeśli nie był zaliczony Punkt Kontrolny, to jednostka CPU 40, w etapie 1126, poleca mikrosterownikowi U2 spowodać, żeby: (i) sterownik wizji rozpoczął jeszcze raz ge
180 098 nerowanie sygnału wizji, (ii) syntezator zegarowy 906 wznowił generowanie wyższej częstotliwości zegara systemowego (25 MHz lub 33 MHz) i (iii) rozświetlił diodę LED 23. Następnie, w etapie 1128, jednostka CPU 40 zapisuje prawidłową wartość od sterownika dysku stałego 86, aby spowodować, że napęd dysku stałego 31 rozpocznie rozpędzanie się. Następnie, blokowane są wywołania Stanu Jałowego CPU, wyposażonej w APM tak, że zatrzymania CPU nie wystąpią, w etapie 1130. Na końcu, zeruje się Znacznik Gotowości, w etapie 1132, wskazując, że system 10 jest w normalnym stanie operacyjnym 150, a procedura wraca do programu wywołującego, w etapie 1140.
Odnosząc się teraz do fig. 18, przedstawia ona sieć działań procedury Wejścia do Stanu Gotowości, rozpoczynającą się w etapie 1140. W skrócie, gdy system wchodzi do stanu gotowości 152, to system gasi sygnał wizji, powoduje miganie diody LED 23, zwalnia obroty napędu dysku stałego 31, spowalnia zegar systemowy, zezwala na wywołania Stanu Jałowego CPU wyposażonej w APM tak, że wywołania Stanu Jałowego CPU ze sterownika APM zatrzymują CPU oraz ustawia znacznik, wskazują, że system 10 jest w Stanie Gotowości 152.
Po pierwsze procedura sprawdza, w etapie 1142, czy Punkt Kontrolny jest zaliczany. Jeśli tak, to wykonuje się większą część Procedury Zawieszenia, w etapie 1144 tak, że stan systemu komputerowego 10 składuje się na dysku stałym 31. W niniejszym przykładzie wykonania wynalazku, Punkt Kontrolny jest zaliczany, gdy system wchodzi do stanu gotowości. Alternatywnie, Punkt Kontrolny może być okresowo zaliczany i wykorzystywany do wznawiania systemu, z uwzględnieniem uwag przedyskutowanych w tekście towarzyszącym fig. 17. Następnie, w etapie 1146, wykonuje się wystarczającą część Procedury Wznowienia, aby powrócić do normalnego stanu z częściowego Zawieszenia, które nastąpiło w etapie 1144. Następnie ustawiony jest bit zaliczenia Punktu Kontrolnego, w etapie 1148, aby wskazać, że zaliczony został prawidłowy Punkt Kontrolny. Należy pamiętać, że w tym przykładzie wykonania wynalazku, dane z Punktu Kontrolnego wykorzystywane są wyłącznie, gdy system zachowuje się niepoprawnie podczas stanu gotowości 152. W takim przypadku, gdy system podlega ładowaniu, to wznawia się go od zapamiętanego Punktu Kontrolnego.
W idealnym przypadku, Punkt Kontrolny powinien być całkowicie przejrzysty dla systemu. Jako taki, Punkt Kontrolny powinien być porzucony, jeśli wystąpi przerwanie sprzętowe, aby zapobiec utracie danych. Alternatywnie, przy normalnym zawieszeniu, ignorowane są dowolne przerwania sprzętowe.
Zatem, jeśli nie został zaliczony żaden Punkt Kontrolny, w etapie 1150, jednostka centralna CPU poleca mikrosterownikowi U2 spowodować, żeby: (i) sterownik wizji zatrzymał generowanie sygnału wizji, (ii) syntezator zegarowy 906 spowolnił zegar systemowy poprzez zmniejszenie jego wyższych częstotliwości (z 25 MHz lub 33 MHz) do 8 MHz i (iii) rozświetlił diodę LED 23. Następnie, w etapie 1152, jednostka CPU 40 zapisuje prawidłową wartość do sterownika dysku stałego 86, aby spowodować, że napęd dysku stałego 31 przestanie się obracać. Następnie, zezwala się na wywołania Stanu Jałowego CPU, wyposażonej w APM tak, że wywołania Stanu Jałowego CPU ze sterownika APM zatrzymują CPU, w etapie 1154. Na końcu, ustawia się Znacznik Gotowości, w etapie 1156, wskazując, że system 10 jest w stanie gotowości 152, a procedura wraca do programu wywołującego, w etapie 1158.
Ze względu na to, że niniejszy wynalazek został zilustrowany poprzez opis jego przykładu wykonania oraz ze względu na to, że przykłady wykonania wynalazku zostały opisane ze znaczną szczegółowością, nie jest zatem intencją zgłaszającego, aby zawężać lub w jakiekolwiek sposób ograniczać zakres zastrzeżeń patentowych do takich szczegółów. Dodatkowe korzyści i modyfikacje zadań wykonywanych przez układ gospodarowania zasilaniem 106, takich jak monitorowanie sprzętowe jednego lub większej liczby przerwań, może zostać wbudowanych w zestaw układów. Zatem, wynalazek nie jest ograniczony do specyficznych szczegółów, które zostały przedstawione i opisane. Zgodnie z powyższym, mogą być czynione odejścia od tych szczegółów bez odchodzenia od istoty wynalazku.
180 098
180 098
CIĄG DALSZY FIG. 3B
180 098
CIĄG DALSZY FIG. 3A
FIG. 3B
180 098
158
156
Użytkownik naciska przycisk mocy przy zabronionym zawieszeniu
Stan wyłączenia
150
160
166
Użytkownik naciska przycisk mocy lub zachodzi zdarz, zewn. (alarm, dzwonek itd.)
Normalny stan operacyjny
Użytkownik naciska przycisk mocy lub zachodzi zdarzenie zewn. (alarm, dzwonek itd.)
162
Wyczerpanie czasu nieaktywności stanu gotowości
164
152
Działanie użytkownika (naciśnięcie przycisku mocy przez użytkownika)
Stan gotowości
Koniec przerwy w aktywności stanu zawieszenia lub użytkownik naciska przycisk mocy, gdy dozwolony jest stan zawieszenia
168
170
Wyczerpanie czasu nieaktywności stanu zawieszenia
154
Stan zawieszenia
180 098
180 098
VCC
C4 1μ F
10-CHRDY#
PCD#
I0R#
IOW#
A(0)_____________3
PROCRDY 4
CMD STATE# 5
SD(4j RSTDRV
IRQ1
IRQ12 _6 _7
JL
18
I2
Ul
1M3ND 20-YCC
1/00 1/01 I/02 I/03
1/04 1/05 1/06 1/07
PAL16V8
20-PIN PLCC
RWDO
J4____NC
15_N£
IO_ STROBĘ#
RESET
J8_______________
ACTMTY#
SD(0)
CN $
Ó
N tn
Q ίο
180 098
IN 4148
IN 4148 , CR1
IN 4148
Wywołanie z COM 1
CR6 (pin 9 ze złącza D)
R14 10K
-wCR3
R10 220K
R11 180K
R5 f 470ΚΓ
U2
R 13 150
R1 470K
-L C6 UF
CIĄG DALSZY FIG. 6A1
SD(1)
SD(2)
SD(3)
RST751
OSC1
10.
OSC2 11
Y1 16MHz
C2 22pF _L C3 22pF
12-GND 24-AUX5
P1.0
P1.1
P1.2
PO.O
PO.1
SWITCH
EXT RING co
Ó
N co
P1.3
P1.4
P1.5/INT0
P1.6/1NT1
P1.7/T0
RST
X2
X1
PO.2
P3.0
P3.1
P3.2
P3.3
P3.4
P3.5
P3.6
P3.7
87C750
24-PIN DIP
AUX5
J_ C5
T UF
Dioda LED sprzężenia zwrotnego zasilania 6 EXT WAKEUP#
ON_______
PWR_GOOD
SMI_OUT#
CLK_SLOW#
DISP_BLANK
RSTCNTRL
LED_CNTRL
NC
AUX5
R3 820
IN4148
CR4
VCC
IN4148
CR5
R12
330 | PIN 39 ze złącza HDD
180 098
Q
O co 0
U3F
74LSO5
180 098
FIG. 6C
180 098
Przełącznik z eiminacją zakłóceń elektrycznych
74H132
R20 -W10K Ω
R21 W39Ω
Powergood
Q10 +5V - napięcie . logiczne z zasilacza
Q11
AUX5
180 098
FIG. 7
180 098
FIG. 8
180 098
CIĄG DALSZY FIG. 9A2
FIG. 9A1
180 098
CIĄG DALSZY FIG. 9A1
Wydaj Kod Zwrotny APM Normalne
Wznowienie (powoduje, że APM aktualizuje ,232
Powrót do APM pewne parametry systemowe)
FIG. 9A2
180 098
FIG. 9C
FIG. 9B
180 098
CIĄG DALSZY FIG. 10B
180 098
CIĄG DALSZY FIG. 10A
CIĄG DALSZY FIG 10C
180 098
FIG. 10C
180 098
CIĄG DALSZY FIG. 1OC
Zapisz całą 64K strukturę danych z segmentu EOOOH na dysk stały ^-304
Przeczytaj dane z pamięci systemowej, dokonaj kompresji i zapisz do bufora #1 w segmencie
EOOOH, przetwarzaj a wystarczającą ilość danych, aby zapełnić bufor #1
FIG. 10D
303
i.
306
Rozpocznij w Torze Równoległym Procedurę Sterowaną Przerwaniami Zapisu z Bufora Bliźniaczego do Bufora
Tor równoległy (Procedura Zapisu z Bufora)
307
312
308
Czytaj następne dane z pamięci systemowej, dokonaj kompresji i zapisz do nie zapisywanego właśnie bufora w segmencie EOOOH oraz do Pliku Zawieszenia. Przetwarzaj ilość danych, wystarczającą do zapełnienia bufora
316
Czekaj na zakończenie zapisywania bieżącego bufora do Pliku Zawieszenia przez Procedurę Zapisu z Bufora Zapisz bieżący bufor do Pliku Zawieszenia, uczyń drugi bufor buforem bieżącym
314
NIE
TAK
Czy wykonano i pamięci
WIZJI przetwarzanie całej pamięci systemowej (pamięci głównej, pamięci rozszerzonej
Wyzeruj czasomierz odporny na uszkodzenia i upewnij się, że przełącznik nie był naciśnięty ponownie
309
NIE
TAK
Czy dokonano do P iku
Zawieszenia?
zapisu ostatniego bufora
CIĄG DALSZY FIG. 10E
180 098
CIĄG DALSZY FIG. 10D
CIĄG DALSZY FIG. 10F
180 098
CIĄG DALSZY FIG. 1OE
180 098
Procedura Inicjowania: CPU skacze do Wektora Zerowania przy włączeniu zasilania lub zerowaniu
382
Test CPU: dokonaj konfiguracji sterownika pamięci
986
Nie lak
994 funkaonuie ?
Czy mikrosterownik
Dokonaj inicjowania konfiguracji pobudzenia: oblicz liczbę minut do pobudzenia alarmowego i zapisz ją w mikrosterowniku U3
988
Zeruj mikrosterownik
Tak
Zablokuj właściwości gospodarowania zasilaniem
Czy mikrosterownik funkcjonuje ?
992
Czy system ma
DEFAULT ON?
przyczyny?
Tak
Czy system załadował się po podaniu zasilania AC ?
(czy mikrosterownik U3 został wyzerowany?)
Czy system został włączony z uzasadnionej pozostać włączony?
(czy jest ustawiony bit
1000
Przekaz mikrosterownikowi U3, aby spowodował zaprzestanie podawania zasilania przez zasilacz, skutkiem tego dokonać wyłączenia zasilania systemu
CIĄG DALSZY FIG. 11B
180 098
CIĄG DALSZY FIG. 11A
CIĄG DALSZY FIG. 11C
180 098
CIĄG DALSZY FIG. 11B
FIG. 11C
CIĄG DALSZY FIG. 11D
180 098
CIĄG DALSZY FIG. 11C
FIG. 11D
180 098
CIĄG DALSZY FIG. 12B
180 098
CIĄG DALSZY FIG. 12A
CIĄG DALSZY FIG. 12C
180 098
CIĄG DALSZY FIG. 12B
Odtwórz stan sterownika dyskietek 8277 poprzez zapisanie wartości z segmentu E000H do rejestrów 8277
Odtwórz stan, sterownika DMA poprzez zapisanie wartości z segmentu E000H do regestrów tego sterownika
524
480
1020
Naciśnięcie Ctrl-Alt-Delete powoduje przeskok w to miejsce
Tor równoległy
486
Rozpocznij Równoległą Procedurę Sterowaną
Przerwaniami odczytu wartości rejestrów ze struktury danych E000H oraz wyślij je do modemów
Zeruj znacznik zawieszenia w pamięci CMOS
Odczytaj blok 8K z Pliku Zawieszenia do bufora #1 w segmencie E000H
488
Rozpocznij w Torze RównoległymProcedurę Sterowaną Przerwaniami Czytania do Bufora z Bufora Bliźniaczego
494
------a-----Przejdź do wektora zerowania, a skutkiem tego załaduj system w normalny sposób
Procedura Równoległego Czytania do Bufora
Czytaj dane z bufora w segmencie E000H, do którego na bieżąco nie dokonuje się zapisu, dokonaj ich dekompresji i zapisz do pamięci systemowej, przetwarzaj wszystkie dane znajdujące się w tym buforze
498
Czekaj aż Procedura Czytania do Bufora zakończy czytanie z Pliku Zawieszenia do bufora bieżącego
490
Czytaj następne 8K z Pliku Zawieszenia i zapisz je do bufora bieżącego, uczyń drugi bufor buforem bieżącym
CIĄG DALSZY FIG. 12D
180 098
CIĄG DALSZY FIG. 12C
180 098
CIĄG DALSZY FIG. 12D
180 098
CIĄG DALSZY FIG. 13B
180 098
CIĄG DALSZY FIG. 13A
180 098
CIĄG DALSZY FIG. 13B
FIG. 13C
180 098
FIG. 13D
180 098
Ciąg dalszy na FIG. 14B
FIG. 14A
180 098
Ciąg dalszy z FIG. 14A
Ciąg dalszy na FIG. 14C
FIG. 14B
180 098
Ciąg dalszy z FIG. 14B
Ciąg dalszy na FIG. 14D
FIG. 14C
180 098
Ciąg dalszy z FIG. 14C
FIG. 14D
180 098
Ciąg dalszy na FIG. 15B
FIG. 15A
180 098
Ciąg dalszy z FIG. 15A
Ciąg dalszy na FIG. 15C
FIG. 15B
180 098
Ciąg dalszy z FIG. 15B
FIG. 15C
180 098
Ciąg dalszy na FIG. 16B
FIG. 16A
180 098
Ciąg dalszy z FIG. 16A
FIG. 16B
180 098
FIG. 16C
180 098
FIG 160
180 098
FIG. 17
180 098
FIG. 18
180 098
Ciąg dalszy na FIG. 19Β
180 098
Ciąg dalszy z FIG. 19A
FIG. 19B
180 098
Ciąg dalszy na FIG. 19D
FIG. 19C
180 098
Ciąg dalszy z FIG. 19C
FIG. 19D
180 098
Departament Wydawnictw UP RP. Nakład 70 egz. Cena 6,00 zł.
Claims (3)
- Zastrzeżenia patentowe1. Sposób sterowania systemem komputerowym, zawierającym jednostkę centralną do wykonywania kodu i uruchamiania co najmniej dwóch systemów operacyjnych, z których każdy ma związany z nim sterownik zaawansowanego zarządzania zasilaniem, sterujący wykonywaniem kodu w jednostce centralnej w danym czasie, przy czym system zawiera ponadto zasilacz, jednostkę zarządzania zasilaniem, przełącznik i urządzenie zewnętrzne, oraz działa w dowolnym, wybranym jednym z czterech stanów zarządzania zasilaniem, mianowicie w stanie normalnym, w którym kod jest wykonywany normalnie przez system komputerowy oraz zasilacz jest w pierwszym stanie i urządzenie zewnętrzne jest w stanie dużego zużycia energii elektrycznej, w stanie gotowości, w którym zasilacz jest w pierwszym stanie i urządzenie zewnętrzne jest w stanie małego zużycia energii elektrycznej, w stanie zawieszenia, w którym zasilacz jest w drugim stanie i w stanie wyłączenia, przy czym podczas sterowania zmienia się stany zarządzania zasilaniem systemu komputerowego przez jednostkę zarządzania zasilaniem w odpowiedzi na co najmniej jedno z wielu wstępnie wybranych zdarzeń, przerywa się odwracalnie wykonywanie kodu w jednostce centralnej przed wprowadzeniem stanu zawieszenia, tak że wykonywanie kodu w jednostce centralnej podejmuje się na nowo po zmianie stanu zasilacza na pierwszy stan, steruje się jednostką zarządzania zasilaniem i zmienia się stan systemu komputerowego na stan normalny w odpowiedzi na zamknięcie przełącznika, jeżeli jednostka zarządzania zasilaniem jest w stanie gotowości lub stanie zawieszenia lub stanie wyłączenia, po czym zmienia się stan zużycia energii w urządzeniu zewnętrznym pomiędzy stanem dużego zużycia energii elektrycznej i stanem małego zużycia energii elektrycznej w odpowiedzi na sygnał z jednostki zarządzania zasilaniem, znamienny tym, że koordynuje się przejścia pomiędzy stanami zarządzania zasilaniem przez jednostkę centralną (40) przy pomocy sterownika zaawansowanego zarządzania zasilaniem, sterującego wykonywaniem kodu w jednostce centralnej (40), realizuje się zmianę pomiędzy stanami zarządzania zasilaniem systemu komputerowego (10), podczas gdy co najmniej jeden sterownik zaawansowanego zarządzania zasilaniem systemu operacyjnego jest aktywny, opóźnia się zmianę pomiędzy stanami zarządzania zasilaniem systemu komputerowego (10) przez jednostkę zarządzania zasilaniem (174), podczas gdy żaden ze sterowników zaawansowanego zarządzania zasilaniem systemu operacyjnego nie jest aktywny podczas okresu czasu, gdy sterowanie wykonywaniem jest przenoszone pomiędzy systemami operacyjnymi, aż co najmniej jeden sterownik zaawansowanego zarządzania zasilaniem systemu operacyjnego stanie się aktywny, oraz zmienia się stan pomiędzy pierwszym i drugim stanem zasilacza (17) w odpowiedzi na sygnał z jednostki zarządzania zasilaniem (174), po czym przerywa się odwracalnie wykonywanie kodu w jednostce centralnej (40) przed wprowadzeniem stanu wyłączenia, zaś zasilacz (17) wprowadza się w drugi stan, jeżeli system komputerowy (10) działa w stanie wyłączenia.
- 2. Sposób według zastrz. 1, znamienny tym, że w systemie komputerowym (10) zawierającym urządzenie wizualnego sprzężenia zwrotnego z co najmniej czterema stanami wizualnego sprzężenia zwrotnego, mianowicie stanem aktywnym, stanem nieaktywnym, pierwszym stanem migotania, w którym zmienia się stan pomiędzy stanem aktywnym i stanem nieaktywnym przy pierwszej wstępnie określonej częstotliwości, oraz drugim stanem migotania, w którym zmienia się stan pomiędzy stanem aktywnym i stanem nieaktywnym przy drugiej wstępnie określonej częstotliwości, wybiera się stany wizualnego sprzężenia zwrotnego przez jednostkę zarządzania zasilaniem (174) i wiąże się każdy ze stanów zarządzania zasilaniem z jednym ze stanów wizualnego sprzężenia zwrotnego.180 098
- 3. Sposób według zastrz. 2, znamienny tym, że stan aktywny i stan nieaktywny sygnalizuje się diodą świecącą, która znajduje się w stanie świecenia lub stanie wygaszenia.* * *
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US08/302,147 US5630142A (en) | 1994-09-07 | 1994-09-07 | Multifunction power switch and feedback led for suspend systems |
PCT/GB1995/002055 WO1996007964A1 (en) | 1994-09-07 | 1995-08-31 | Control of transitions between power management states in a computer system |
Publications (2)
Publication Number | Publication Date |
---|---|
PL319043A1 PL319043A1 (en) | 1997-07-21 |
PL180098B1 true PL180098B1 (pl) | 2000-12-29 |
Family
ID=23166459
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
PL95319043A PL180098B1 (pl) | 1994-09-07 | 1995-08-31 | Sposób sterowania systemem komputerowym PL PL PL PL PL PL PL PL |
Country Status (9)
Country | Link |
---|---|
US (1) | US5630142A (pl) |
EP (1) | EP0780001B1 (pl) |
JP (1) | JP3197796B2 (pl) |
KR (1) | KR100232314B1 (pl) |
CN (1) | CN1214307C (pl) |
CA (1) | CA2156538C (pl) |
DE (1) | DE69514242T2 (pl) |
PL (1) | PL180098B1 (pl) |
WO (1) | WO1996007964A1 (pl) |
Families Citing this family (65)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6018804A (en) * | 1996-03-25 | 2000-01-25 | Thomson Consumer Electronics, Inc. | Data bus isolator |
KR0174711B1 (ko) * | 1996-04-24 | 1999-04-15 | 김광호 | 하드디스크 캐시의 제어방법 |
US5765001A (en) | 1996-04-29 | 1998-06-09 | International Business Machines Corporation | Computer system which is operative to change from a normal operating state to a suspend state when a power supply thereof detects that an external source is no longer providing power to said power supply at a predetermined level |
US5884022A (en) | 1996-06-03 | 1999-03-16 | Sun Microsystems, Inc. | Method and apparatus for controlling server activation in a multi-threaded environment |
US6000043A (en) * | 1996-06-28 | 1999-12-07 | Intel Corporation | Method and apparatus for management of peripheral devices coupled to a bus |
US5802269A (en) * | 1996-06-28 | 1998-09-01 | Intel Corporation | Method and apparatus for power management of distributed direct memory access (DDMA) devices |
US5845136A (en) * | 1996-10-02 | 1998-12-01 | Intel Corporation | Control of a function of a computer other than a power supply function using a system power switch |
US5941989A (en) * | 1997-01-07 | 1999-08-24 | Micron Electronics, Inc. | Apparatus for indicating power-consumption status in a computer system |
KR100252255B1 (ko) | 1997-04-15 | 2000-04-15 | 윤종용 | 휴대용 컴퓨터 시스템을 위한 전원 제어 방법 |
US6076133A (en) * | 1997-04-30 | 2000-06-13 | Compaq Computer Corporation | Computer interface with hardwire button array |
US5938772A (en) * | 1997-06-11 | 1999-08-17 | Compaq Computer Corporation | Responsive backlit hardwire button array providing illumination and user feedback in a computer |
US6137677A (en) | 1997-06-13 | 2000-10-24 | Compaq Computer Corporation | Ergonomic controls for a personal computer CPU |
KR100521252B1 (ko) * | 1997-06-16 | 2006-01-12 | 삼성전자주식회사 | 화면출력상태 제어기능을 갖는 컴퓨터 시스템 및 그 제어방법 |
KR100233550B1 (ko) * | 1997-07-22 | 1999-12-01 | 강중호 | 키토산을 이용한 농작물 선도유지방법 및 발효식품 장기저장방법 |
KR19990026189A (ko) * | 1997-09-23 | 1999-04-15 | 윤종용 | 바이오스 롬의 업데이트 방법 |
US6128732A (en) * | 1997-12-15 | 2000-10-03 | Compaq Computer Corporation | Implementing universal serial bus support with a minimum of system RAM |
US6097241A (en) * | 1998-07-21 | 2000-08-01 | International Business Machines Corporation | ASIC low power activity detector to change threshold voltage |
KR100345876B1 (ko) * | 1998-08-20 | 2002-10-31 | 삼성전자 주식회사 | 전원관리모드를갖는컴퓨터시스템및그제어방법 |
US6816934B2 (en) * | 2000-12-22 | 2004-11-09 | Hewlett-Packard Development Company, L.P. | Computer system with registered peripheral component interconnect device for processing extended commands and attributes according to a registered peripheral component interconnect protocol |
US7472215B1 (en) * | 1999-03-31 | 2008-12-30 | International Business Machines Corporation | Portable computer system with thermal enhancements and multiple power modes of operation |
CN1293461C (zh) * | 1999-07-30 | 2007-01-03 | 神基科技股份有限公司 | 一种将电脑***状态挂起的方法 |
KR100626359B1 (ko) * | 1999-09-10 | 2006-09-20 | 삼성전자주식회사 | 컴퓨터 시스템의 전원 관리 방법 |
US6625742B1 (en) | 1999-11-05 | 2003-09-23 | Hewlett-Packard Development Company, L.P. | Computer diagnostic having an LED to provide direct visual feedback as to the status of the standby power supply when power button is actuated |
US6438429B1 (en) * | 1999-12-03 | 2002-08-20 | 3Com Corporation | Sensing auxiliary power in various peripheral component interconnect environments |
AU2002258369A1 (en) * | 2000-12-19 | 2002-09-19 | Smal Camera Technologies, Inc. | Compact digital camera system |
US6862695B2 (en) * | 2001-03-30 | 2005-03-01 | Giga-Byte Technology Co., Ltd. | Method and device for identifying failed devices in computer |
US7395089B1 (en) | 2001-06-11 | 2008-07-01 | Palm, Inc | Integrated personal digital assistant device |
US7114086B2 (en) * | 2002-01-04 | 2006-09-26 | Ati Technologies, Inc. | System for reduced power consumption by monitoring instruction buffer and method thereof |
ATE382895T1 (de) * | 2002-04-03 | 2008-01-15 | Hewlett Packard Co | Datenverarbeitungsvorrichtung und -verfahren mit zustandsindikator |
TW594021B (en) * | 2002-04-30 | 2004-06-21 | Via Tech Inc | Main computer board on/off testing device, method and system |
US7013385B2 (en) * | 2002-06-04 | 2006-03-14 | International Business Machines Corporation | Remotely controlled boot settings in a server blade environment |
US7055046B2 (en) * | 2002-06-28 | 2006-05-30 | Microsoft Corporation | Power management architecture for defining component power states under a global power state and applying a new component power state when a new component power state is greater than a registered power state floor |
US7065659B2 (en) * | 2002-06-28 | 2006-06-20 | Microsoft Corporation | Power management architecture for defining component power states under a global power state and maintaining a power state floor for a specified component if a power state for the specified component under a new global power state is below the power state floor |
TWI261198B (en) * | 2003-02-20 | 2006-09-01 | Samsung Electronics Co Ltd | Simultaneous multi-threading processor circuits and computer program products configured to operate at different performance levels based on a number of operating threads and methods of operating |
CN1300794C (zh) * | 2003-03-11 | 2007-02-14 | 北京华旗资讯数码科技有限公司 | 一种视频播放器 |
CN1329795C (zh) * | 2003-11-24 | 2007-08-01 | 佛山市顺德区顺达电脑厂有限公司 | 电脑装置之电源状态自动测试方法 |
KR100643377B1 (ko) * | 2004-01-17 | 2006-11-10 | 삼성전자주식회사 | 휴대용 컴퓨터 및 그 제어방법 |
US7319404B2 (en) | 2004-06-29 | 2008-01-15 | Intel Corporation | Non-invasive, low cost method and apparatus for the transmission, display and detection of internal computer status |
US20060020856A1 (en) * | 2004-07-22 | 2006-01-26 | Anuez Tony O | Computer diagnostic interface |
KR100609498B1 (ko) * | 2004-11-10 | 2006-08-09 | 주식회사 잉카솔루션 | 대기전력 제어장치 |
CN1862358B (zh) | 2005-05-11 | 2012-03-21 | 华移联科(沈阳)技术有限公司 | 一种自动调焦装置 |
KR100633163B1 (ko) | 2005-06-23 | 2006-10-11 | 삼성전자주식회사 | 전자 디바이스 및 전자 디바이스 시스템 |
TWM282246U (en) * | 2005-08-08 | 2005-12-01 | Quanta Comp Inc | A power management device with remote control function |
US7716461B2 (en) * | 2006-01-12 | 2010-05-11 | Microsoft Corporation | Capturing and restoring application state after unexpected application shutdown |
US7574591B2 (en) | 2006-01-12 | 2009-08-11 | Microsoft Corporation | Capturing and restoring application state after unexpected application shutdown |
EP1977314A1 (en) * | 2006-07-21 | 2008-10-08 | Sony Service Centre (Europe) N.V. | Demodulator device and method of operating the same |
CN101206600B (zh) * | 2006-12-22 | 2011-08-24 | 和硕联合科技股份有限公司 | 测试装置与计算机***开关机测试方法 |
US20090013164A1 (en) * | 2007-07-06 | 2009-01-08 | Inventec Corporation | Computer system and method of using power button to switch from one BIOS to another |
US8589563B2 (en) | 2007-07-10 | 2013-11-19 | Cisco Technology, Inc. | System, method, and apparatus for maintaining call state information for real-time call sessions |
US8527816B2 (en) * | 2010-03-10 | 2013-09-03 | International Business Machines Corporation | Identifying a defective adapter |
JP5701399B2 (ja) * | 2010-12-21 | 2015-04-15 | インテル・コーポレーション | 電力管理のためのシステム及び方法 |
JP5780769B2 (ja) * | 2011-01-26 | 2015-09-16 | キヤノン株式会社 | データ処理装置、その制御方法およびプログラム、並びに記憶媒体 |
CN103064492B (zh) * | 2011-10-24 | 2015-06-03 | 英业达股份有限公司 | 具有一可调式电源开关的计算机及其电源效能调节方法 |
JP5715107B2 (ja) * | 2012-10-29 | 2015-05-07 | 富士通テン株式会社 | 制御システム |
WO2015116205A1 (en) * | 2014-01-31 | 2015-08-06 | Hewlett-Packard Development Company, L.P. | Determination of a zero watt state for implementation |
CN104007976A (zh) * | 2014-06-06 | 2014-08-27 | 山东超越数控电子有限公司 | 一种解决笔记本linux***lid功能的方法 |
TWI750109B (zh) | 2014-11-12 | 2021-12-21 | 香港商阿里巴巴集團服務有限公司 | 硬碟功耗、硬碟功耗管理服務控制方法及裝置 |
CN104991629B (zh) * | 2015-07-10 | 2017-11-24 | 英业达科技有限公司 | 电源失效侦测***与其方法 |
US9818458B1 (en) * | 2015-09-23 | 2017-11-14 | Intel Corporation | Techniques for entry to a lower power state for a memory device |
US10126724B2 (en) * | 2016-03-07 | 2018-11-13 | Haier Us Appliance Solutions, Inc. | Low power management system |
US10198059B2 (en) | 2016-04-20 | 2019-02-05 | Microsoft Technology Licensing, Llc | Adaptive doze to hibernate |
US11755372B2 (en) | 2019-08-30 | 2023-09-12 | Microstrategy Incorporated | Environment monitoring and management |
US11714658B2 (en) | 2019-08-30 | 2023-08-01 | Microstrategy Incorporated | Automated idle environment shutdown |
US11858649B2 (en) * | 2020-02-04 | 2024-01-02 | The Boeing Company | Controlling multiple aircraft external power sources with a single external power switch |
US11971766B2 (en) | 2020-03-18 | 2024-04-30 | Sony Group Corporation | Information processing apparatus and information processing method for power saving |
Family Cites Families (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2779813B2 (ja) * | 1988-09-06 | 1998-07-23 | セイコーエプソン株式会社 | コンピューター |
US4980836A (en) * | 1988-10-14 | 1990-12-25 | Compaq Computer Corporation | Apparatus for reducing computer system power consumption |
US5241680A (en) * | 1989-06-12 | 1993-08-31 | Grid Systems Corporation | Low-power, standby mode computer |
US5239495A (en) * | 1989-06-23 | 1993-08-24 | Kabushiki Kaisha Toshiba | Power supply control system for a portable computer |
US5142684A (en) * | 1989-06-23 | 1992-08-25 | Hand Held Products, Inc. | Power conservation in microprocessor controlled devices |
US5167024A (en) * | 1989-09-08 | 1992-11-24 | Apple Computer, Inc. | Power management for a laptop computer with slow and sleep modes |
US5396635A (en) * | 1990-06-01 | 1995-03-07 | Vadem Corporation | Power conservation apparatus having multiple power reduction levels dependent upon the activity of the computer system |
US5214782A (en) * | 1990-12-10 | 1993-05-25 | Generic Computer Services | Power supply monitor for personal computer |
US5414860A (en) * | 1991-01-29 | 1995-05-09 | International Business Machines Incorporated | Power management initialization for a computer operable under a plurality of operating systems |
US5410711A (en) * | 1991-02-14 | 1995-04-25 | Dell Usa, L.P. | Portable computer with BIOS-independent power management |
JP3701965B2 (ja) * | 1991-05-17 | 2005-10-05 | 日本電気株式会社 | 保護モードマイクロプロセッサ及びハードディスクのための中断/再開機能とアイドルモードの実現 |
US5355490A (en) * | 1991-06-14 | 1994-10-11 | Toshiba America Information Systems, Inc. | System and method for saving the state for advanced microprocessor operating modes |
US5410713A (en) * | 1992-01-02 | 1995-04-25 | Smith Corona/Acer | Power-management system for a computer |
US5408668A (en) * | 1993-07-28 | 1995-04-18 | Tornai; Richard | Method and apparatus for controlling the provision of power to computer peripherals |
-
1994
- 1994-09-07 US US08/302,147 patent/US5630142A/en not_active Expired - Lifetime
-
1995
- 1995-07-19 JP JP18299395A patent/JP3197796B2/ja not_active Expired - Fee Related
- 1995-08-18 CA CA002156538A patent/CA2156538C/en not_active Expired - Fee Related
- 1995-08-31 DE DE69514242T patent/DE69514242T2/de not_active Expired - Fee Related
- 1995-08-31 CN CNB951168185A patent/CN1214307C/zh not_active Expired - Lifetime
- 1995-08-31 EP EP95930601A patent/EP0780001B1/en not_active Expired - Lifetime
- 1995-08-31 PL PL95319043A patent/PL180098B1/pl unknown
- 1995-08-31 WO PCT/GB1995/002055 patent/WO1996007964A1/en active IP Right Grant
- 1995-09-05 KR KR1019950028931A patent/KR100232314B1/ko not_active IP Right Cessation
Also Published As
Publication number | Publication date |
---|---|
JPH0887361A (ja) | 1996-04-02 |
KR100232314B1 (ko) | 1999-12-01 |
JP3197796B2 (ja) | 2001-08-13 |
US5630142A (en) | 1997-05-13 |
EP0780001A1 (en) | 1997-06-25 |
PL319043A1 (en) | 1997-07-21 |
CA2156538A1 (en) | 1996-03-08 |
WO1996007964A1 (en) | 1996-03-14 |
DE69514242D1 (de) | 2000-02-03 |
CN1139771A (zh) | 1997-01-08 |
DE69514242T2 (de) | 2000-06-08 |
CA2156538C (en) | 2000-02-29 |
CN1214307C (zh) | 2005-08-10 |
EP0780001B1 (en) | 1999-12-29 |
KR960011695A (ko) | 1996-04-20 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
PL180098B1 (pl) | Sposób sterowania systemem komputerowym PL PL PL PL PL PL PL PL | |
PL180369B1 (pl) | Sposób sterowania systemem komputerowym PL PL PL PL PL PL | |
KR100218613B1 (ko) | 컴퓨터시스템및글리치회로 | |
KR100196883B1 (ko) | 컴퓨터 시스템 | |
KR100190736B1 (ko) | 컴퓨터 시스템 | |
JP4028605B2 (ja) | Sormセッションを有するコンピュータ・システム及び方法 | |
US5551043A (en) | Standby checkpoint to prevent data loss | |
KR0167810B1 (ko) | 컴퓨터 시스템 및 그의 상태 보관방법 | |
KR100288664B1 (ko) | 컴퓨터시스템 | |
KR0128275B1 (ko) | 컴퓨터 시스템과그의 전력사용 관리방법, 인터럽트 제어기의 베이스 어드레스 상태 확인방법과 씨피유 상태보존 및 복원방법 | |
US5758174A (en) | Computer system having a plurality of stored system capability states from which to resume | |
KR100188501B1 (ko) | 다수의 사용자 및 윈도에 기초한 컴퓨터 시스템 및 다수의 사용자에 기초한 컴퓨터 시스템을 제공하는 방법 | |
JP3341970B2 (ja) | コンピュータ・システム | |
US5581692A (en) | Automatic clearing of power supply fault condition in suspend system | |
EP0749063A2 (en) | Method and apparatus for suspend/resume operation in a computer | |
KR100207884B1 (ko) | 컴퓨터 시스템, 코드 실행 제어 방법, 및 컴퓨터 시스템 전력 관리 방법 |