KR0134146B1 - 컴퓨터 시스템에서 보호 모드로 코드를 실행중인 cpu의 상태 보존 및 복원 방법과 페이지 디렉토리 베이스 레지스터 값 평가 및 평가 값 검증 방법 - Google Patents
컴퓨터 시스템에서 보호 모드로 코드를 실행중인 cpu의 상태 보존 및 복원 방법과 페이지 디렉토리 베이스 레지스터 값 평가 및 평가 값 검증 방법Info
- Publication number
- KR0134146B1 KR0134146B1 KR1019940014723A KR19940014723A KR0134146B1 KR 0134146 B1 KR0134146 B1 KR 0134146B1 KR 1019940014723 A KR1019940014723 A KR 1019940014723A KR 19940014723 A KR19940014723 A KR 19940014723A KR 0134146 B1 KR0134146 B1 KR 0134146B1
- Authority
- KR
- South Korea
- Prior art keywords
- cpu
- routine
- state
- memory
- pause
- Prior art date
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/14—Error detection or correction of the data by redundancy in operation
- G06F11/1402—Saving, restoring, recovering or retrying
- G06F11/1415—Saving, restoring, recovering or retrying at system level
- G06F11/1441—Resetting or repowering
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/14—Error detection or correction of the data by redundancy in operation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/4401—Bootstrapping
- G06F9/4418—Suspend and resume; Hibernate and awake
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Quality & Reliability (AREA)
- Computer Security & Cryptography (AREA)
- Power Sources (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
- Storage Device Security (AREA)
- Stored Programmes (AREA)
Abstract
컴퓨터 시스템상에서 보호 모드(protected mode)로 코드를 실행하는 CPU 상태를 저장 및 복원(saving and restoring)하는 방법이 개시되어있다. 저장방법은 CPU 상태를 저장하는 동안, 선형 어드레스(linear address)와 물리적 어드레스(physical address)가 동일한 영역에 위치한 섀도우 RAM에서 동작하는 BIOS를 이용한다. 메모리에 직접 저장될 수 없는 레지스터들은 시스템 메모리를 검색하여 이들 특정 레지스터에 대응한 데이타 구졸를 검색하므로써 결정된다. 복원 방법은 보호 폴트의 발생없이 CPU를 보호 모드로 재진입하도록 허용하기 위해 섀도우된 BIOS를 지시하는 더미 페이지 테이블(dummy page table)을 이용한다.
Description
제 1 도는 본 발명을 구체화한 퍼스널 컴퓨터의 사시도
제 2 도는 섀시, 커버, 전자기계적 직접 액세스 저장 장치 및 플래너 보드를 포함하는 제 1 도에 도시된 퍼스널 컴퓨터의 특정 구성요소의 분해 사시도로서, 이들 구성요소간의 구체적 관계를 도시한 도면
제 3 도는 제 1 도 및 2 도에 도시된 퍼스널 컴퓨터의특정 구성요소의 블럭도
제 4 도는 4개의 시스템 상태, 즉, 정규 상태, 대기 상태, 일시중지 상태 및 오프 상태를 도시하는 본 발명에 따른 컴퓨터 시스템의 상태도
제 5 도는 파워 서플라이의 관련 부분을 도시하는 블럭도
제 6 도는 본 발명의 단일 스위치 일시중지/재개시 기능을 성취하는데 필요한 하드웨어의 전기적 개략도로서, 다른 도면으로의 다양한 인터페이스를 도시하는 도면
제 7 도는 제 6 도에 도시된 프로그램가능 어레이 로직(PAL) 장치(U2)의 상태 머신중 하나의 상태도
제 8 도는 본 발명의 파워-업 루틴을 전반적으로 도시한 흐름도
제 9 도는 APM에 의해 대략 매초마다 호출되는 감시 루틴의 세부를 도시하는 흐름도
제 10 도는 본 발명의 일시중지 루틴의 세부를 도시하는 흐름도
제 11 도는 본 발명의 부트-업 루틴의 세부를 도시하는 흐름도
제 12 도는 본 발명의 재개시 루틴의 세부를 도시하는 흐름도
제 13 도는 본 발명의 CPU 상태 보존 루틴의 세부를 도시하는 흐름도
제 14 도는 본 발명의 CPU 상태 복원 루틴의 세부를 도시하는 흐름도
제 15 도는 본 발명의 8259 상태 보존 루틴의 세부를 도시하는 흐름도
*도면의 주요 부분에 대한 부호의 설명*
10 : 컴퓨터 시스템11 : 모니터
12 : 키보드13 : 마우스
14 : 프린터21 : 스위치
27 : 플로피 디스크 드라이브31 : 하드 디스크 드라이브
40 : 마이크로프로세서44 : 수치연산 코프로세서
46 : 제어 유닛53 : 랜덤 액세스 메모리
56 : 비디오 제어기60 : 버스 캐쉬
62 : 캐쉬 제어기64,68,74 : 버퍼
70 : 버스 제어기72 : DMA 제어기
82 : 중앙 중재기
본 발명은 전반적으로 컴퓨터 시스템 아키텍쳐(computer system architecture)에 관한 것으로, 보다 구체적으로는, 보호 모드로 코드를 실행중인 CPU의 상태를 보호 오류를 발생하지 않고 보존하기 위한 방법에 관한 것이다.
퍼스널 컴퓨터 시스템은 당 분야에 잘 공지되어 있다. 통상의 퍼스널 컴퓨터 시스템과 특히 IBM 퍼스널 컴퓨터는 오늘날의 현대 사회의 많은 부분에 컴퓨터 능력을 제공하기 위해 광범위하게 이용되기에 이르렀다. 퍼스널 컴퓨터는 통상 데스크탑, 플로어 스탠딩, 또는 휴대형 마이크로컴퓨터로서 정의될 수 있으며, 단일의 중앙 처리 장치(Central Processing Unit;CPU) 및 모든 RAM 및 BIOS ROM을 포함하는 연관된 휘발성 및 비휘발성 메모리를 구비한 시스템 유닛, 시스템 모니터, 키보드, 하나 이상의 가요성 디스켓 드라이브, 고정된 디스크 저장 드라이브(하드 드라이브로도 알려짐), 소위 마우스 포인팅 장치, 및 선택 사양적인 프린터로 이루어진다. 이들 시스템의 두드러진 특징중 하나는 이들 구성요소들을 전기적으로 함께 접속하기 위해 마더보드 또는 시스템 플래너를 사용한다는 것이다. 이들 시스템은 주로 단일의 사용자에게 독립된 컴퓨팅 능력을 제공하도록 설계되며, 개인 또는 중소기업에 의해 저렴하게 판매된다. 이러한 퍼스널 컴퓨터 시스템의 예로 IBM사의 퍼스널 컴퓨터 AT 및 IBM사의 퍼스널 시스템/1(IBM PSI1)이 있다.
퍼스널 컴퓨터 시스템은 통상 워드 프로세싱, 스프레드-시트를 통한 데이터 조작, 데이터베이스내 데이터의 수집 및 관련, 그래픽의 디스플레이, 시스템-설계 소프트웨어를 사용한 전기적 또는 기계적 시스템의 설계 등과 같은 다양한 동작을 수행하도록 소프트웨어를 실행시키는데 사용된다.
IBM PS/1 및 PS/2는 단일의 위치에서 사용되도록 설계된 데스크탑 컴퓨터이다. 예를 들면, 오늘날의 사회에서 다수의 개인은 자신의 데스크 또는 방에 컴퓨터-지원 데스크 전용의 데스크탑 컴퓨터를 갖고 있다. 데스트탑 컴퓨터는 통상 한 위치에서 셋업되며, 컴퓨터를 결코 이동시키지 않고 하나 이상의 다수의 사용자에 의해 사용된다.
데스크탑 시스템은 또한 네트워크형 및 비네트워크형 컴퓨터 시스템으로 분류될 수 있다. 네트워크형 컴퓨터 시스템은 대형 컴퓨터 시스템의 일부로서 다른 컴퓨터에 접속되거나 근거리 통신망(Local Area Networks;LANs) 또는 광역 통신망(Wide Area Networks;WANs)을 통해 서비스한다. 이러한 네트워크는 특정의 인터페이스 및 프로토콜을 사용하여 컴퓨터가 효율적인 방법으로 데이터 및 프로그램을 공유하도록 한다. 사업상 사용되는 데스크탑 컴퓨터 시스템은 통상 네트워크형 컴퓨터 시스템이다. 다른 한편, 비네트워크형 컴퓨터는 어떤 다른 컴퓨터에 접속되지 않는다. 한 컴퓨터로부터 다른 컴퓨터로의 데이터 전송은, 한 위치의 컴퓨터에 의해 가요성 디스켓에 데이터를 기입하고 다른 위치의 컴퓨터에 의해 데이터를 판독하므로써 이루어진다. 가정의 데스크탑 컴퓨터는 통상 비네트워크형 컴퓨터이다.
단일 위치에 유지되도록 설계된 데스크탑 컴퓨터와 달리, 그들의 사이즈에 따라 랩탑 컴퓨터(laptop computers) 또는 노트북 컴퓨터(notebook computers)로도 알려진, 예를 들면, IBM사의 PS/2 L40 Think Pad와 같은 휴대용 컴퓨터는 임의의 위치에서 사용자에 의해 처리 및 사용되도록 설계된다. 예를 들면, 판매원은 자신의 데스크에서 고안된 판매계획에 대한 보고서를 작성하기 위해 노트북 컴퓨터를 사용할 수 있다. 이 때 판매원이 데스크로부터 미팅으로 호출되면, 판매원은 현재의 데스크를 일시중지한 후 노트북을 들고 미팅에 참석할 수 있다. 일단 미팅에 참석하면, 판매원은 컴퓨터를 꺼내어 소프트웨어 실행을 재개시하고 미팅중에 정보를 기록하거나 호출해낼 수 있다. 다른 예로서, 학생이 수업 시간이 될 때까지 집에서 학기말 논문을 작성하고 있다가 수업 시간이 되면 노트북 컴퓨터를 가지고 수업에 들어가 기록을 할 수 있다.
휴대형 컴퓨터는 사무실에서 사용될 경우 몇몇 사용자가 그들의 휴대형 컴퓨터를 사무용 LAN에 접속하지만, 이 휴대형 컴퓨터는 통상 비네트워크형 컴퓨터이다.
휴대형 컴퓨터는 다수의 측면에서 데스크탑 컴퓨터와 다르다. 휴대형 컴퓨터는 통상 재충전가능한 배터리에 의해 파워공급된다. 사용자는 벽에 설치된 플러그로 부터의 전기를 사용하여 배터리를 충전하며, 배터리가 재충전을 요구할 때까지 컴퓨터를 사용한 후, 배터리를 재충전한다. 배터리가 재충전되는 동안, 휴대형 컴퓨터는 이동될 수 없고, 컴퓨터의 이동은 파워 코드의 길이에 의해 제한된다. 따라서, 배터리가 충전되고 있는 컴퓨터는 사실상 배터리가 충분히 충전될 때까지 그의 휴대성을 잃게 된다. 회중전등 또는 다른 배터리에 의해 파워 공급되는 장치와 마찬가지로, 휴대형 컴퓨터가 소비하는 파워가 크면 클수록, 배터리 재충전을 요구하기 전에 사용자가 휴대형 컴퓨터를 이용할 수 있는 사용시간은 짧아진다. 따라서, 파워 소비량은 사용자가 휴대형 컴퓨터를 구입할 때 고려해야 하는 요인이며, 놀랄 필요도 없이 휴대형 컴퓨터 산업분야에서 중요한 문제이다. 그러므로 컴퓨터 산업은 가능한한 전력을 덜 소모하는 휴대형 컴퓨터를 설계하는데 많은 시간과 돈을 투자해왔다.
그러나 저파워형 컴퓨터를 사용하면, 다른 요인과 트레이드 오프(trade-off)된다. 즉, 저파워형 컴퓨터는 보다 비싼 저파워 구성요소를 사용하며, 이러한 비싼 저파워 구성요소는 컴퓨터 커맨드를 보다 빠른 고파워의 구성요소만큼 신속히 실행할 수 없다. 또한, 더욱 비싼 구성요소를 이용하는데 부가하여, 휴대형 시스템는 통상 보다 복잡한 설계를 사용하므로써 휴대형 컴퓨터 시스템의 비용에 부가된다.
비교를 위해 살펴보면, 데스크탑 컴퓨터는 통상 벽에 설치된 플러그로 부터의 전기를 사용하여 파워공급된다. 즉, 데스크탑 컴퓨터는 전압이 낮아지는 배터리를 갖지 않는다(재충전없이 수년동안 지속되는, 실시간 클럭을 백업하는데 사용되는 초소형 배터리를 제외함). 결과적으로, 데스크탑 컴퓨터는 보다 빠른 고파워의 보다 싼 구성요소를 사용할 수 있다. 즉, 휴대형 컴퓨터는 보다 덜 전력을 소모하지만, 통상, 보다 많은 전력을 소모하는 데스크탑 컴퓨터 만큼 계산적으로 강력하지 않다.
오늘날과 같이 에너지 절약을 고려하고 있는 사회에서, 데스크탑 컴퓨터를 온종일 파워공급된 채로 두는데 대한 간단한 대안이 있다. 한가지 방법은 휴대형 컴퓨터 측면에서 발견되는 기술이다. 휴대형 컴퓨터가 특정 시간, 통상 다수의 분동안 동작하지 않으면, 컴퓨터는 자동으로 고정된 디스크 저장 장치내의 고정된 디스크를 회전시키는 것을 멈추고 컴퓨터의 디스플에이를 발생하는 것을 정지한다. 이러한 동작은 파워를 절약한다.
휴대형 컴퓨터는 또한 배터리 파워를 절약하는 다른 더욱 복잡한 방법을 갖는다. 시스템이 주어진 시간동안 동작하지 않으면, 몇몇 휴대형 컴퓨터는 데이터 손실이 전혀없이 복구될 수 있는 방식으로 구성요소의 턴오프를 개시하도록 설계된다. 메모리를 손실되지 않게 하기 위하여 휴대형 컴퓨터는 CPU 및 다른 회로에는 파워를 공급하지 않고 메모리로의 파워를 유지하기 위한 특수 배터리 회로를 구비한다. 이러한 특수 배터리 회로는 인쇄 회로 기판의 비용 및 복잡도를 증가시키며, 시스템 구성요소의 수를 증가시킨다. 일시중지/재개시 기능을 구현하기 위한 다른 방법은 SL 패밀리로 불리는 특수 프로세서 패밀리의 구성요소인 CPU를 사용하는 것이다. SL CPU는 상이하게 설계되며, 설계자가 배터리 파워 절약 기능을 용이하게 구현할 수 있도록 특수 커맨드를 구비한다. 그러나 SL 패밀리는 더 비싸며, SL 패밀리로 부터의 프로세서는 통상 표준 프로세서만큼 계산적으로 강력하지 않다. 또한, 휴대형 시스템은 통상적으로 전형적인 컴퓨터 시스템에서 발견되는 다수의 기입 전용 레지스터를 보존하기 위해 비싼 섀도우(shadow) 레지스터를 구비한다. 이러한 특수 기능은 인쇄 회로 기판 설계에 복잡도 및 비용을 가중시키며, 컴퓨터 시스템내 구성요소의 수를 증가시킨다. 더욱이, 일반적으로 비-SL 80386 또는 80486의 상태를 보존하는 것이 중요한 것으로 알려져 있다.
휴대형 컴퓨터와 데스크탑 컴퓨터간의 많은 차이점으로 인해, 소비자는 랩탑 및 노트북 컴퓨터가 데스크탑 컴퓨터보다 더 값어치가 있으리라고 기대한다. 소비자는 데스크탑 컴퓨터가 계산적으로 매우 강력하면서 그다지 비싸지 않으리라고 기대한다. 따라서, 휴대형 컴퓨터에서 사용되는 비싸고 복잡한 기법을 사용하여 일시중지/재개시 방법을 구현하는 데스크탑 컴퓨터는 데스크탑 시장에서 판매하기에는 너무 비싸게 된다. 그러므로 데스크탑 설계시에 있어서는 어떤 파워 절약 구현은 통상 기존의 구성요소를 사용하거나 적어도 데스크탑 시스템에서 사용되는 표준 구성요소 만큼 강력한 새로운 구성요소를 사용한다.
또한, 네트워크형 및 비네트워크형 데스크탑 시스템은 상이한 요건을 갖는다. 몇몇 LAN 프로토콜은 컴퓨터 시스템내의 LAN 하드웨어에 파워가 공급된 채로 유지되어야 할 것을 요구하며, 그렇지 않으며, 네트워크가 고장을 일으킬 수 있다. 비네트워크형 데스크탑 시스템은 LAN 하드웨어를 갖지 않을 것이 분명하므로, 비네트워크형 시스템에서 LAN 고장은 문제가 되지 않는다.
그러므로 휴대형 시스템과 유사하거나 그보다 우수한 파워 관리 특징을 갖는 데스크탑 컴퓨터 시스템을 제공하는 것이 바람직할 것으로 믿어진다.
또한, 유사한 특징을 갖는 휴대형 컴퓨터 시스템에서 사용되는 보다 복잡한 설계 및 비싼 구성요소를 사용하지 않고 파워 관리 기능을 갖는 데스크탑 시스템을 제공하는 것이 바람직할 것으로 믿어진다.
또한, 유사한 특징을 갖는 휴대형 컴퓨터 시스템에서 사용되는 보다 복잡한 설계 및 비싼 구성요소를 사용하지 않고 비-SL 80386 또는 80486의 상태를 보존하는 것이 바람직할 것으로 믿어진다.
EPA는 에너지 효율 컴퓨터에 대한 지침을 발표했다. EPA는 녹색(Green), 즉, 에너지 효율이 높은 것으로 간주되기를 희망하는 컴퓨터 시스템에 대한 EPA 에너지 스타 요건(Energy Star requirements)을 마련하였다. 컴퓨터가 30와트 미만의 파워를 소비하는 모드를 갖거나 모니터가 30와트 미만의 파워를 소비하는 경우, 또는 컴퓨터와 모니터가 각각 30와트 미만의 파워를 소비하는 경우, 컴퓨터에 EPA 에너지 스타 라벨을 부착할 수 있다. 개개의 제조업자에 의한 EPA 합의 각서(Memorandums of Understanding) 에는 파워 요건이 기재된다. 데스크탑 컴퓨터는 통상 이들 기능을 구비하도록 설계되어 있지 않다.
그러므로 녹색 표준을 만족시키는 데스트탑 컴퓨터를 제공하는 것이 바람직하다.
또한, 에너지 절약형 시스템 설계시에 컴퓨터 시스템이 네트워크형 데스트탑 컴퓨터인지 비네트워크형 데스크탑 컴퓨터인지를 고려하는 것이 바람직하다.
컴퓨터는 턴온되면, 통상 부팅(booting) 프로세스를 거친다. 컴퓨터는 부팅할 때, 우선, 컴퓨터가 올바르게 기능하고 있음을 보장하기 위한 다양한 테스트를 실행하는 것을 포함하는 파워-온 자기-테스트(a Power-On Self-Test; POST)를 수행한다. POST를 수행한 후, 컴퓨터는 통상, IBM사의 PC-DOS와 같은 오퍼레이팅 시스템(Operating System;OS)을 로드한다. OS가 로드된 후, 다수의 컴퓨터는 마이크로소프트상에 윈두우와 같은 그래픽 사용자 인터페이스(a Graphic User Interface;GUI)를 로드한다. 그리고 나서, 사용자는 응용 소프트웨어를 열고 작업 화일을 로드해야 한다. 이러한 전체 프로세스에는 몇몇 경우에 수 분에 이르는 아주 작은 시간이 걸린다.
이러한 수 분이 그다지 오랜 시간처럼 보이지 않지만, 컴퓨터 시스템을 부팅하고, OS를 로딩하며, GUI를 로딩하고, 응용 소프트웨어를 로딩하기를 기다리는 사용자에게, 이 시간은 비생산적이고 성가신 시간으로, 사용자가 컴퓨터를 턴오프하여 파워를 절약하는 것을 불편하게 하므로써 사실상 사용자로 하여금 파워를 절약하지 못하게 한다. 즉, 이러한 이용상의 결점에 의해 수동 파워 관리 방법이 비실용적이게 된다.
그러므로 중요한 이용성의 결점이 없는 파워 관리 기능을 갖는 데스크탑 컴퓨터 시스템을 제공하는 것이바람직하다. 즉, 파워 절약 모드를 갖고, 이후 허용가능한 길이의 시간내에 및 어떤 경우 컴퓨터 시스템을 재개시시키는데 걸리게 되는 시간 길이보다 짧은 시간내에 재개시될 수 있는 컴퓨터 시스템을 제공하는 것이 바람직하다.
종종, 사용자는, 컴퓨터상에 응용 프로그램이 실행되고 있는 동안 데스크탑 컴퓨터를 동작하지 않는 유휴상태(idle)로 둘 수 있다. 예를 들면, 사용자가 판매 보고서를 준비하기 위해 워드 프로세싱 프로그램과 스프레드시트 프로그램을 동시에 사용하고 있을 때 전화 벨이 울리거나 호출되어 사용자가 데스크를 떠나야 할 경우, 컴퓨터는 여전히 이들 응용 프로그램을 실행하고 있게 된다. 효율적인 파워 관리 장치라면 파워를 절약할 수 있어야 하고 동시에 사용자가 데이터를 잃어버리지 않게 해야 하며, 이것은, 예를 들면, 응용 프로그램중에 컴퓨터의 파워가 오프되는 경우에도 발생하게 된다. 더욱이, 현재의 소프트웨어 응용은 그들이 중단된 위치에서 재개시될 수 있도록 그들의 상태를 자동으로 보존하지 못한다.
그러므로 시스템상에 응용 소프트웨어가 실행되고 있는 동안, 파워-절약 모드로 들어갈 수 있는 컴퓨터 시스템을 제공하는 것이 바람직하다. 또한, 이러한 파워 절약 모드는 응용 소프트웨어에 영향을 주지 않고 동작하는 것이 바람직하다.
때때로, 데스크탑 컴퓨터 사용자는 컴퓨터가 잠시동안 필요없게 됨을 알고 있을 수 있다. 따라서, 사용자가 수동으로 컴퓨터를 파워 절약 모드로 들어가게 하여, 컴퓨터가 파워 절약 모드로 들어감을 보장하기에 충분한 긴 시간 유휴상태인 것으로 판단된 동안에 컴퓨터가 사용하게 될 파워를 절약할 수 있도록 하는 것이 바람직하다.
그러므로 우선 응용 프로그램을 빠져나올 필요없이 사용자가 수동으로 데스크탑 컴퓨터를 파워 절약 모드로 들어가게 하고 마치 컴퓨터가 턴오프되지 않았던 것처럼 응용 소프트웨어를 사용하여 재개시할 수 있도록 하는 것이 바람직하다.
전형적인 휴대형 컴퓨터는 컴퓨터로의 파워를 제어하기 위한 스위치와 일시중지/재개시 기능을 수행하기 위한 다른 스위치를 구비한다. 이것은 사용자에게 혼동을 일으킬 수 있고 휴대형 컴퓨터의 비용 및 복잡도를 증가시킬 수 있다. 따라서, 다수의 버튼을 사용하지 않고 데스크탑 컴퓨터 시스템에 앞서 언급된 파워 절약 기능을 제공하는 것이 바람직하다.
본 발명에 따르면, 비록 CPU가 보호 모드에서 코드를 실행 중 일지라도 80486 CPU의 상태가 보존되며, 일반적으로는 CPU가 보호 모드에서 코드를 실행중인 경우 80486 상태가 보존될 수 없는 것으로 알려져 있다. 본 컴퓨터 시스템은 인텔사의 80X86 마이크로프로세서 패밀리상에서 실행되도록 설계된 대부분의 오퍼레이팅 시스템에서 선진형 파워 관리 기능(Advanced Power Management Feature)을 이용한다.
본 컴퓨터 시스템은 4가지 상태, 즉, 정규 동작 상태, 대기 상태, 일시중지 상태, 및 오프 상태를 갖도록 설계된다.
본 발명에 따른 컴퓨터 시스템의 정규 동작 상태는 임의의 전형적인 데스크탑 컴퓨터의 정규 동작 상태와 사실상 동일하다. 사용자는 응용 프로그램을 사용할 수도 있고, 기본적으로 본 컴퓨터를 어떤 다른 컴퓨터처럼 취급할 수도 있다. 한가지 차이점은 사용자에게 투명하게 백그아운드(BIOS 및 오퍼레이팅 시스템)에서 실행되는 파워 관리 드라이버의 존재이다. 오퍼레이팅 시스템(OS)내 파워 관리 드라이버의 부분은 인텔사 및 마이크로소프트사에 의해 작성된 선진형 파워 관리(Advanced Power Management;APM) 고급 프로그래밍 인터페이스로서, 현재 인텔사의 80X86 프로세서 패밀리상에서 동작하도록 작성된 대부분의 오퍼레이팅 시스템내에 존재한다. BIOS(APM BIOS)내의 파워 관리 드라이버 부분은 본 발명의 고유하며, APM OS 드라이버와 통신한다. APM OS 드라이버 및 APM BIOS 루틴은 함께 다른 3개 상태로 및 3개 상태로부터의 컴퓨터의 천이를 제어한다.
제 2 상태인 대기 상태는 정규 동작 상태보다 파워를 덜 소모하지만, 임의의 응용 소프트웨어를 대기 상태가 아닌 경우와 마찬가지로 실행하게 한다. 일반적으로, 대기 상태에서는 장치를 그들의 제각기의 저파워 모드로 함으로써 파워가 절약된다. 예를 들면, 대기 상태에서는 하드 드라이브내의 고정된 디스크의 회전을 멈추어 비디오 신호의 발생을 중지함으로써 파워가 절약된다.
제 3 상태의 일시중지 상태이다. 일시중지 상태에서, 컴퓨터 시스템은 극히 작은 량의 파워를 소비한다. 일시중지된 파워는 벽의 콘센트로부터 파워를 거의 소비하지 않는다. 단지 소비되는 파워는 컴퓨터 시스템 내측의 베터리로부터 스위치 회로를 유지하기 위한 약간의 세류파워(trickle of power)(시스템이 벽의 콘센트에 플러그되지 않은 경우) 또는 파워 서플라이에 의해 발생된 약간의 세류 파워(시스템이 플러그되지 않은 경우)이다.
이와 같이 작은 량의 파워 사용은 파워 서플라이가 턴 오프(off)되기 전에 컴퓨터 시스템의 상태를 고정된 디스크 저장 장치(하드 드라이브)에 보존함으로써 성취된다. 일시중지 상태로 들어가기 위해서, 컴퓨터 시스템은 임의의 실행중인 코드를 인터럽트하고 컴퓨터의 제어를 파워 관리 드라이버로 전환한다. 파워 관리 드라이버는 컴퓨터 시스템의 상태를 알아내어 컴퓨터 시스템의 상태를 고정 디스크 저장 장치에 기입한다. CPU 레지스터, CPU 캐쉬, 시스템 메모리, 시스템 캐쉬, 비디오 레지스터, 비디오 메모리 및 다른 장치들의 레지스터의 상태는 모두 고정 디스크에 기입된다. 시스템의 전체 상태는 코드 응용 소프트웨어가 인터럽트에 의해 악영향을 받지 않게 복원될 수 있도록 보존된다. 그리고 나서, 컴퓨터는 시스템이 일시중지되었음을 표시하는 데이터를 비휘발성 CMOS 메모리에 기입한다. 마지막으로, 컴퓨터는 파워 서플라이로 하여금 파워 발생을 중지하게 한다. 컴퓨터의 전체 상태는 고정 디스크 저장 장치에 안전하게 보존되고, 시스템 파워가 이제 오프되므로, 컴퓨터는 이제 단지 파워 서플라이로부터 발생되는 약간의 세류 파워를 수신하여 스위치 회로에 공급한다.
CPU의 상태는 일시중지 상태로 들어갈 때 보존되어야 한다. 마찬가지로, CPU의 상태는 일시중지 상태가 해제될 때 복원되어야 한다.
제 4, 즉, 최종 상태는 오프 상태이다. 이 상태에서, 파워 서플라이는 컴퓨터 시스템에 조정된 파워를 공급하는 것을 중지하지만, 컴퓨터 시스템의 상태는 고정 디스크에 보존되지 않는다. 오프 상태는 사실상 통상의 데스크탑 컴퓨터가 통상의 방법으로 턴 오프되는 것과 동일하다.
상태간의 스위칭은 파워 관리 드라이버에 의해 수행되며, 통상 단일 스위치의 폐쇄, 플래그 및 2개의 타이머, 즉, 비활동 대기 타이머 및 비활동 일시중지 타이머에 기초한다.
CPU 상태의 보존은 선진형 파워 관리(APM) 스펙에 따른 오퍼레이팅 시스템의 도움으로 성취된다. APM은 인텔 및 마이크로소프트사에 의해 설계되었으며, 시스템이 일시중지를 요구하는지를 주기적으로 테스트하기 위한 루틴을 폴링하는 방법을 제공한다. 시스템이 일시중지를 필요로 하는 경우, APM은 시스템을 일시중지 하기 위해 제 2 루틴을 호출한다. CPU 상태를 보존하는 루틴은 바로 이 제 2 루틴내에 포함된다.
본 발명에 의하면, 비록 CPU 상태가 보호 모드로 동작중일지라도 CPU의 상태를 보존할 수 있다. 일단 다수의 루틴에 의해 시스템이 일시중지되어야 할지가 결정되면, CPU상의 코드 실행이 APM에 의해 인터럽트되며, CPU 상태를 보존하는 루틴이 APM에 의해 호출된다. 이 루틴이 호출되면, CPU는 미지의 상태가 된다. 이 루틴은 섀도우 RAM내의 BIOS로부터 실행되므로, 최고 가능한 우선순위 레벨을 가지며, BIOS 영역에 데이터가 기입될 수 있다. 또한 BIOS 영역내에서 선형 어드레스는 물리적 어드레스와 동일하며, 따라서 CPU가 미지의 상태에서 페이징을 행하여도 CPU의 실행에 악영향을 주지 않는다.
일반적으로, CPU 레지스터는 스택에 또는 BIOS가 실행중인 섀도우 RAM 영역에 보존된다. 몇몇 레지스터는 보호 오류를 발생하지 않고 액세스될 수 없다. 이들은 나머지 시스템의 상태로부터 결정된다. 일단 액세스될 수 있는 모든 레지스터가 스택 또는 섀도우 RAM에 저장되면, CPU는 리셋되고 기지의 상태에 놓인다. 바람직한 실시예에서, CPU는 80486이며, 이 CPU를 리셋하면 실 모드(Real Mode)가 된다.
CPU가 실모드가 되면, 보호 오류를 발생하지 않고 나머지 시스템이 확인될 수 있다. 확인된 시스템은 하드 드라이브에 기입되며, 파워 서플라이에는 시스템에 파워를 공급하는 것을 중지하라는 커맨드가 제공된다.
CPU의 상태는 다음과 같이 하드 드라이브로부터 복원된다. CPU가 기지의 상태로 리셋되며, 시스템은 기지의 상태로 부팅하도록 허용된다. 이 시점에서, 하드 드라이브와 같은 모든 장치는 액세스가능하다. 나머지 시스템의 상태가 복원된다. 그리고 나서, CPU의 상태가 복원된다. 더미 페이지 변환 테이블(Dummy Page Translation Tables)을 사용하면, 시스템이 그의 이전의 보호 상태로 복원될 수 있다. 코드 실행이 이러한 보호 상태로부터 APM으로 복귀하며, APM은 특정의 상태값을 갱신한다.
본 발명의 상기한 장점 및 다른 장점은 이후 본 발명의 상세한 설명으로부터 명백해진다.
이제부터 본 발명의 바람직한 실시예가 도시된 첨부된 도면을 참조하여 본 발명이 보다 상세히 설명되며, 이후의 상세한 설명을 시작함에 있어, 당분야에 숙련된 자라면 본 명세서에 개시된 본 발명을 수정하여 본 발명의 바람직한 결과를 성취할 수도 있음을 이해해야 한다. 따라서, 이후의 설명은 본 발명에 대한 제한으로서가 아니라 당분야에 숙련된 자에게 제공되는 광범위한 교시물로서 이해되어야 한다. 본 발명는 제한적이지는 않지만 컴퓨터 아키텍쳐 설계, 디지탈 서례, BIOS 설계, 보호 모드 80486 코드 설계, 응용 소프트웨어 코드 설계, 오퍼레이팅 시스템 코드 설계 및 선진형 파워 관리 고급 프로그래밍 인터페이스 용도를 포함하는 전체 컴퓨터 시스템 설계를 취급한다. 본 출원은 컴퓨터 시스템 설계의 모든 측면을 숙지하고 있는 자를 대상으로 하여 쓰여져 있다.
이제 더욱 구체적으로 도면을 참조하여 설명하면, 제 1 도에 본 발명을 구체화하는 마이크로컴퓨터 시스템이 도시되며, 전반적으로 참조 부호(10)로 표시된다. 앞서 언급된 바와 같이, 컴퓨터(10)는 연관된 모니터(11), 키보드(12), 마우스(13) 및 프린터 또는 플로터(14)를 구비할 수 있다. 컴퓨터(10)는, 섀시(19)와 함께 결합하여, 디지털 데이터를 처리 및 저장하기 위해 전기적으로 파워공급되는 데이터 처리 및 저장 구성요소를 수용하기 위한 밀폐된 용적을 형성하는 장식용 외측 부재(16)(도 2 참조) 및 내측 실드 부재(18)에 의해 형성된 커버(15)를 구비한다. 이들 구성요소중 적어도 특정 구성요소는, 섀시(19)상에 탑재되며, 앞서 언급된 구성요소를 포함하는 컴퓨터의 구성요소와, 플로피 디스크 드라이브, 다양한 형태의 직접 액세스 저장 장치, 부속 카드 또는 보드 등과 같은 다른 연관된 구성요소간을 전기적으로 상호접속하기 위한 수단을 제공하는 다층 플래너(20) 또는 마더보드상에 장착된다. 이후 보다 상세히 설명되는 바와 같이, 플래너(20)내에는 마이크로컴퓨터의 동작 구성요소 및 그로부터 입력/출력 신호를 전달하기 위한 설비가 마련된다.
컴퓨터 시스템은 파워 서플라이(17)와 이후 스위치(21)로도 언급되는 파워 버튼(21)을 구비한다. 전형적인 시스템에서 통상의 파워 스위치에서와는 달리, 파워 버튼(21)은 이후 설명되는 바와 같이 파워 서플라이(17)로 및 로부터의 무조정된 라인 파워를 스위치하지 않는다. 섀시(19)는 참조부호(22)로 표시된 베이스와, 참조부호(24)로 표시된 전면 패널과, 참조부호(25)로 표시된 후면 패널을 구비한다(도 2 참조). 전면 패널(24)은 자기 또는 광 디스크용 디스크 드라이브, 테입 백업 드라이브 등과 같은 데이터 저장 장치를 수용하기 위한 적어도 하나의 개방 베이(open bay)(예시된 형태의 경우 4개의 베이)를 정의한다. 예시된 형태에서는, 한 쌍의 상부 베이(26,28) 및 한 쌍의 하부 베이(29,30)가 제공된다. 하나의 상부 베이(26)는 1개 사이즈의 주변 드라이브(3.5인치 드라이브로서 공지된 것과 같은 드라이브)를 수용하기에 적합하고, 다른 하나의 상부 베이(28)는 2개 사이즈(예르 들면 3.5 인치와 5.25 인치)중 선택된 하나의 사이즈를 갖는 드라이브를 수용하기에 적합하며, 하부 베이는 단지 1개 사이즈(3.5 인치)의 드라이브를 수용하기에 적합하다. 제 1 도에는 참조부호(27)로 표시된 1개의 플로피 디스크 드라이브가 도시되며, 내부로 삽입되는 디스켓을 수용할 수 있고, 일반적으로 공지된 바와 같이 데이터를 수신, 저장 및 전달하기 위해 디스켓을 사용할 수 있는 착탈가능한 매체 직접 액세스 저장 장치이다. 참조부호(31)로 표시된 하나의 하드 디스크 드라이브는 일반적으로 알려진 바와 같이 데이터를 저장 및 운반할 수 있는 고정 매체 직접 액세스 저장 장치이다.
이상의 구조를 본 발명에 관련시키기에 앞서, 일반적인 퍼스널 컴퓨터 시스템(10)의 동작 개요를 살펴보는 것이 유리하다. 제 3 도를 참조하면, 플래너(20)상에 장착된 구성요소와 퍼스널 컴퓨터 시스템의 I/O 슬롯 및 다른 구성요소에 대한 플래너의 접속을 포함하는, 본 발명에 따른 시스템(10)과 같은 컴퓨터 시스템의 다수의 구성요소를 예시하는 퍼스널 컴퓨터 시스템의 블럭도가 도시된다. 플래너에는 본 명세서에서 CPU(40)로도 언급되는, 마이크로프로세서로 이루어진 시스템 프로세서(40)가 메모리 제어 유닛(46)을 통해 고속 CPU 로컬 버스(42)에 의해 접속되며, 메모리 제어 유닛(46)은 또한 휘발성 랜덤 액세스 메모리(RAM)(53)에 접속된다. 메모리 제어 유닛(46)은 메모리 제어기(48), 어드레스 멀티플렉서(50) 및 데이터 버퍼(52)로 이루어진다. 메모리 제어 유닛(46)은 또한 4개의 RAM 모듈(54)로 표시된 바와 같은 랜덤 액세스 메모리(53)에 접속된다. 메모리 제어기(48)는 RAM(53)의 특정 영역에 대해 마이크로프로세서(40)로 및 마이크로프로세서(40)로부터 어드레스를 매핑하기 위한 로직(logic)을 포함한다. 이 로직은 BIOS에 의해 이전에 점유된 RAM을 제사용하는데 사용된다. 또한, 메모리 제어기(48)에 의해 ROM(88)을 인에이블 또는 디스에이블시키는데 사용되는 ROM선택 신호(ROMSEL)가 발생된다. 시스템 프로세서(40)로 어떤 적절한 마이크로프로세서도 사용될 수 있지만, 한가지 적절한 마이크로프로세서는 인텔사에 의해 판매되는 80486이다. 인텍 80486은 내부 캐쉬를 가지며, 따라서 인텍 80486인 CPU(40)는 CPU 캐쉬(41)를 갖게 된다.
이후 본 발명이 제 3 도의 시스템 블럭도를 특히 참조하여 설명되지만, 후속하는 설명을 시작함에 있어, 본 발명에 다른 장치 및 방법은 플래너 보드의 다른 하드웨어 구성에서 사용될 수 있는 것으로 의도됨을 이해해야 한다. 예를 들어, 시스템 프로세서(40)는 인텔 80286 또는 80386 마이크로프로세서일 수 있다. 여기서 사용된 바와 같이, 80286 또는 80386 또는 80486이라 함은 일반적으로 인텔사로부터 획득된 마이크로프로세서임을 의미한다. 그러나 최근에 다른 제조업자들은 인텔 X86 아키텍쳐의 인스트럭션 세트를 실행할 수 있는 마이크로프로세서를 개발하였으며, 따라서 앞서 언급된 용어의 사용은 이러한 인스트럭션 세트를 실행할 수 있는 마이크로프로세서를 모두 포함하는 것으로 의도된다. 당분야에 숙련된 자라면 알고 있는 바와 같이, 초기의 퍼스널 컴퓨터는 통상 시스템 프로세서로서 당시 인기있었던 인텔 8088 또는 8086 마이크로프로세서를 사용하였다. 이들 프로세서는 1메가바이트의 메모리를 어드레스할 수 있는 능력을 갖는다. 더욱 최근에, 퍼스널 컴퓨터는 통상적으로, 저속 8086 마이크로프로세서를 에뮬레이트하기 위해 가상 또는 실 모드로 또는 몇몇 모델의 경우 어드레싱 범위를 1메가바이트로부터 4기가바이트까지 확장시키는 보호 모드로 동작할 수 있는, 고속 인텔 80286, 80386 및 80486 마이크로프로세서를 사용한다. 본질적으로, 80286, 80386 및 80486 프로세서의 실 모드 기능은 8086 및 8088 마이크로프로세서를 위해 작성된 소프트웨어와의 하드웨어 호환성을 제공한다. 상술된 인텔 패밀리 계열의 프로세서는 흔히 전체 형태 지명자중 단지 마지막 3자리 숫자, 예를 들어, 486과 같은 3자리 수에 의해 식별된다.
이제 제 3 도를 참조하면, CPU 로컬 버스(42)(데이터, 어드레스 및 제어 성분을 포함함)가 마이크로프로세서(40), 수치연산 코프로세서(44), 비디오 제어기(56), 시스템 캐쉬메모리(60) 및 캐쉬 제어기(62)의 접속을 위해 제공된다. 비디오 제어기(56)는 모니터(또는 비디오 디스플레이 터미널)(57) 및 비디오 메모리(58)와 연관된다. 또한, CPU 로컬버스(42)상에는 버퍼(64)가 결합된다. 버퍼(64)는, 또한 어드레스, 데이터 및 제어 성분을 포함하는 저속(CPU 로컬 버스(42)에 비교하여) 시스템 버스(66)에 접속된다. 시스템 버스(66)는 버퍼(64)와 또다른 버퍼(68) 사이에 연장된다. 시스템 버스(66)는 또한 버스 제어 및 타이밍 유닛(70)과 DMA 유닛(71)에 접속된다. DMA 유닛(71)은 중앙 중재기(82) 및 DMA 제어기(72)로 이루어진다. 부가의 버퍼(74)는 시스템 버스(66)와 산업 표준 아키텍쳐(Industry Standard Architecture;ISA) 버스(76)와 같은 선택사양적 기능 버스간에 인터페이스를 제공한다. 버스(76)에는 ISA 어댑터 카드(미도시됨)를 수용하기 위한 다수의 I/O 슬롯(78)이 접속된다. ISA 어댑터 카드는 I/O 슬롯(78)에 플러그에 의해 접속되면, 시스템(10)에 대해 부가의 I/O 장치 또는 메모리를 제공할 수도 있다.
중재 제어 버스(80)는 DMA 제어기(72)와 중앙 중재기(82)를 I/O 슬롯(78), 디스켓 어댑터(84) 및 집적형 드라이브 전자장치(an Integrated DriveElectronisc;IDE) 고정 디스크 제어기(86)에 결합한다.
마이크로컴퓨터 시스템(10)이 기본적인 4메가바이트의 RAM 모듈(53)을 갖는 것으로 도시되었지만, 선택사양적 고밀도 메모리 모듈(54)을 부가하므로써 제 3 도에 나타내어진 바와 같이 부가의 메모리가 상호접속될 수 있음을 알 수 있다. 단지 예시를 목적으로, 본 발명은 기본적인 4메가바이트의 메모리 모듈을 참조하여 설명된다.
래치 버퍼(68)는 시스템 버스(66)와 플래너 I/O 버스(90)간에 결합된다. 플래너 I/O 버스(90)는 제각기 어드레스, 데이터 및 제어 성분을 포함한다. 플래너 I/O 버스(90)를 따라 다수의 I/O 어댑터와, 디스켓 어댑터(84), IDE 디스크 어댑터(86), 인터럽트 제어기(92), RS-232 어댑터(94), NVRAM으로도 참조되는 비휘발성 CMOS RAM(96), CMOS 실시간 클럭(98), 병렬 어댑터(100), 다수의 타이머(102), 판독 전용 메모리(ROM)(88), 8042(104) 및 파워 관리 회로(106)와 같은 다른 구성요소가 결합된다. 참조부호(104)로 도시된 8042는 키보드(12) 및 마우스(13)와 인터페이스하는 슬레이브 마이크로프로세서이다. 파워 관리 회로(106)가 제 6 도에 도시되며, 제 6 도 및 제 7 도를 참조한 설명에서 더욱 상세히 설명된다. 판독 전용 메모리(88)는 I/O 장치와 마이크로프로세서(40)의 오퍼레이팅 시스템간을 인터페이스하는데 사용되는 BIOS를 포함한다. ROM(88)내에 저장된 BIOS는 RAM(53)내로 카피되어 BIOS의 실행 시간을 감소시킬 수 있다. ROM(88)은 또한 (ROMSEL 신호에 의해) 메모리 제어기(48)에 응답한다. ROM(88)이 메모리 제어기(48)에 의해 인에이블되면, BIOS가 ROM으로부터 페치되어 실행된다. ROM(88)이 메모리 제어기(48)에 의해 디스에이블되면, ROM은 마이크로프로세서(40)로 부터의 어드레스 질의에 응답하지 않는다(즉, BIOS가 RAM으로부터 페치되어 실행됨).
실시간 클럭(98)은 일시 계산(time of day calculations)용으로 사용되며, NVRAM(96)은 시스템 구성 데이터를 저장하는데 사용된다. 즉, NVRAM(96)은 시스템의 현재 구성을 기술하는 값을 포함하게 된다. 예를 들어, NVRAM(96)은 고정 디스크 또는 디스켓의 용량, 디스플레이의 형태, 메모리 량, 시간, 날짜 등을 기술하는 정보를 포함한다. NVRAM이, BIOS가 ROM으로부터 페치되어 실행되었는가 또는 RAM으로부터 페치되어 실행되었는가의 여부 및 BIOS RAM에 의해 사용되도록 의도된 RAM을 재사용할 것인지의 여부를 결정하기 위해 메모리 제어기(48)에 의해 사용되는 데이터(1비트일 수 있음)를 포함하게 된다는 것은 특히 중요하다. 더욱이, 이들 데이터는 SET 구성과 같은 특수구성 프로그램이 실행될 때마다 NVRAM에 저장된다. SET 구성 프로그램의 목적은 시스템의 구성을 특징화하는 값을 NVRAM에 저장하는 것이다.
앞서 설명된 거의 모든 장치는 휘발성 레지스터를 포함한다. 도면이 불필요하게 난잡해지는 것을 방지하기 위해 특정 장치의 레지스터는 해당 장치에 대해 참조된다. 예를 들어, CPU 레지스터는 CPU(40) 레지스터로서 참조되고, 비디오 제어기 레지스터는 비디오 제어기(56) 레지스터로서 참조된다.
앞서 언급된 바와 같이, 컴퓨터는 섀시(19)와 함께 마이크로컴퓨터의 앞서 설명한 구성요소를 수용하기 위한 밀폐된 용적을 형성하는 커버(15)를 구비한다. 이 커버(15)는, 성형가능한 합성 재료로 제조된 일체성형된 구성요소인 외측 장식용 커버 부재(16)와, 장식용 커버 부재의 형상에 적합하도록 형성된 금속 박판 라이터(18)로 형성된다. 그러나 이 커버는 다른 공지된 방법으로도 제조될 수 있으며, 본 발명의 이용도는 설명된 형태의 용기에 제한되지 않는다.
동작 상태(States of Operation)
이제 제 4 도를 참조하면, 본 발명에 따른 컴퓨터 시스템의 상태도가 도시된다. 본 발명의 컴퓨터 시스템(10)은 4가지 상태, 즉, 정규 동작 상태(150), 대기 상태(152), 일시중지 상태(154) 및 오프 상태(156)를 갖는다. 이들 상태간의 천이가 제 4 도에 도시되며, 바람직한 실시예의 설명일 뿐, 이에 국한되지 않는다. 결과적으로, 부가의 경우가 상태 천이를 일으키는데 대안적으로 사용될 수도 있다.
본 발명에 따른 컴퓨터 시스템(10)의 정규 동작 상태(150)는 사실상 임의의 전형적인 데스크탑 컴퓨터의 정규 동작 상태와 동일하다. 사용자는 응용 소프트웨어를 사용할 수도 있고, 기본적으로 컴퓨터를 다른 컴퓨터와 마찬가지로 취급할 수도 있다. 사용자에게는 투명한, 한가지 차이점은 백그라운드에서 실행되는 오퍼레이팅 시스템내의 파워 관리 드라이버(APM OS 드라이브) 및 다양한 APM BIOS 루틴의 존재이다. APM BIOS 루틴은 이후에 설명되며, 일시중지 루틴(Suspend Routine), 재개시 루틴(Resume Routine), 부트-업 루틴(Boot-Up Routine), 감시 루틴(Supervisor Routine), CPU 상태 보존 루틴(Save CPU State Routine) 및 CPU 상태 복원 루틴(Restore CPU State Routine)을 포함한다. 도면중 어디에도 도시되지 않은 하나의 APM BIOS 루틴은 APM BIOS 경로배정 루틴이다. APM BIOS 경로배정 루틴은 본질적으로 APM OS 드라이버로부터 커맨드를 수신하여 적절한 APM BIOS 루틴을 호출한다. 예를 들어, APM OS 드라이버가 일시중지 커맨드를 송출하면, APM BIOS 경로배정 루틴은 일시중지 루틴은 일시중지 루틴을 호출한다. 다른 예로서, APM OS 드라이버가 겟 이벤트(Get Event) 커맨드를 송출할 때마다, APM BIOS 경로재정 루틴은 감시 루틴을 호출한다. 이들 루틴은 BIOS내에 위치되면, BIOS가 섀도우될 때 섀도우된다. OS내의 파워 관리 드라이버 및 APM BIOS 루틴은 4개 상태간의 컴퓨터의 천이를 제어한다. 문맥은 다른 경우를 지시할 수 있을지라도 APM이라는 단어 자체를 참조하는 것은 일반적으로 APM OS 드라이버를 의미한다.
제 2 상태인 대기 상태(152)는 정규 동작 상태(150)보다 작은 전기적 파워를 사용하지만, 임의의 응용 소프트웨어가 대기 상태가 아닌 경우 실행하는 것처럼 실행하게 내버려 둔다. 일반적으로, 대기 상태(152)에서는 장치를 제각기의 저파워 모드로 되게 하므로써 파워가 절약된다. 바람직한 실시예에서, 대기 상태(152)에서는 이후 보다 상세히 설명되는 바와 같이 고정 디스크 저장 장치(31)내의 고정 디스크(미도시됨)의 회전을 멈추고 비디오 신호를 발생하는 것을 중지하므로써 전기적 파워가 절약된다. 그러나 이것은 제한적인 것이 아니며 CPU 클럭을 늦추거나 정지시키는 것과 같은 다른 방법이 사용되어 파워 소비를 감소시킬 수도 있다.
본 바람직한 실시예에서, 전기적 파워는 두가지의 다른 방법에 의해 절약된다. 첫째, 정규 동작 상태(150)에서, 고정 디스크 저장 장치(31)내의 고정 디스크는 통상 분당 3600 회전수(RPM)로 일정하게 회전한다. 대기 상태(152)에서, IDE 디스크 제어기(86)에 고정 디스크 저장장치(31)를 저파워 모드(고정 디스크 저장 장치(31)내의 고정 디스크가 회전을 멈춤)로 들어가게 하기 위한 커맨드를 공급하여, 고정 디스크가 회전하는 동안 고정 디스크 저장 장치(31)내의 모터(미도시됨)가 통상 소비하는 파워를 절약한다.
둘때, 정규 동작 상태(150)에서, 컴퓨터 시스템의 비디오 제어기(56)는 비디오 디스플레이 터미널(57)상에 나타나는 이미지에 대응하는 비디오 신호(당분야에 잘 알려진 바와 같이, HSYNC, VSYNC, R, G, B 등)를 지속적으로 발생한다. 대기 상태(152)에서 비디오 제어기(56)는 비디오 신호를 발생하는 것을 멈추며, 이에 의해 비디오 제어기(56)에 의해 통상 소비되는 전기적 파워를 절약한다. HSYNC, VSYNC, R, G 및 B는 모두 대략 0.00VDC로 구동된다. 비디오 전자장치 표준 협회(Video Electronics Standards Association)에 따른 모니터는 HSYNC 및 VSYNC가 대략 0.00VDC일 때 스스로 오프하므로써 파워를 더욱 절약할 수 있게 한다.
일부 시스템들은 비디오 디스플레이 터미널 전면의 형광체 번-인(burn-in)을 방지하기 위해 스크린(57)을 어두워지게 하는 스크린-세이버(screen-savers) 를 구비함을 주목하자. 대부분의 이러한 시스템에서, 비디오 제어기(56)는 여전히 비디오 신호를 발생하지만, 단지 다크 스크린 또는 동적 디스플레이에 대응하는 비디오 신호를 발생한다. 따라서, 스크린-세이버를 실행하는 컴퓨터 시스템은 여전히 비디오 신호를 발생하는데 필요한 전기적 파워를 소비한다.
제 3 상태는 일시중지 상태(154)이다. 일시중지 상태(154)에서, 컴퓨터 시스템은 극히 적은 량의 전기적 파워를 소비한다. 바람직한 실시예에서, 일시중지된 컴퓨터는 벽의 콘센트로부터 5와트 미만의 전기적 파워를 소비한다. 단지 소비되는 파워는 이후 제 5 도를 참조하여 보다 상세히 설명되는 바와 같이 파워 서플라이(17)의 AUX5 출력으로부터 또는 컴퓨터 시스템 내측의 배터리(171)로부터 스위치를 모니터하는데 사용되는 근소한 세류 파워이다.
이와 같이 작은 량의 전기적 파워 소비는 파워 서플라이를 오프시키기 전에 컴퓨터 시스템의 상태를 고정 디스크 저장 장치(하드 드라이브)(31)에 보존하므로써 성취된다. 일시중지 상태(154)로 들어가기 위해, CPU(40)는 임의의 응용 소프트웨어를 인터럽트하며, CPU의 프로그램 실행 제어를 파워 관리 드라이버로 전달한다. 파워 관리 드라이버는 컴퓨터 시스템(10)의 상태를 확인하며, 컴퓨터 시스템의 전체 상태를 고정 디스크 저장 장치(31)에 기입한다. CPU(40) 레지스터, CPU 캐쉬(41), 시스템 RAM(53), 시스템 캐쉬(60), 및 나머지 휘발성 레지스터의 상태 모두가 고정 디스크 드라이브(31)에 기입된다. 시스템(10)의 전체 상태는 중요한 이용상의 장애를 일으키지 않고 복원될 수 있는 방식으로 보존된다. 즉, 사용자는 통상의 경우처럼 시스템이 오퍼레이팅 시스템을 로드하고 그래픽 사용자 인터페이스를 로드하기를 기다릴 필요가 없다.
그리고 나서, 컴퓨터는 시스템이 일시중되었음을 표시하는 데이터를 비휘발성 CMOS 메모리(96)에 기입한다. 마지막으로, CPU(40)는 파워 서플라이(17)로 하여금 조정된 파워를 공급하는 것을 그만두게 한다. 그리고, 나서, 컴퓨터 시스템(10)은 파워 오프되며, 이 때 컴퓨터의 전체 상태는 고정 디스크 저장 장치(31)에 안전하게 보존된다.
상태(state)라고 하는 단어는 본 명세서를 통해 유사하지만 혼동을 일으킬 수 있는 2가지 면에서 사용된다. 장치는 특정 상태 에(in) 있을 수 있다. 본 발명에 따라 컴퓨터 시스템(10)의 일반적 상태에 대해 4개의 시스템 상태, 즉, 정규 상태(150), 대기 상태(152), 일시중지 상태(154) 및 오프 상태(156)가 참조된다. 예를 들면, 정규 종작 상태(150)에서 CPU(40)는 계속해서 코드를 실행하며 시스템(10)내의 다수의 레지스터를 변화시킨다. 마찬가지로, 유사한 대기 상태(152)중에도 유사한 활동은 일어난다. 따라서, 컴퓨터 시스템(10)의 메모리와 레지스터 구성은, 시스템(10)이 정규 동작 상태(150) 및 대기 상태(152)에 있는 동안 동적이다.
다른 장치가 또한 특정 상태에 있을 수 있다. 프로그래머 로직 어레이(U2)는 제 7 도를 첨부하여 이후 설명되는 바와 같이 몇가지 상태에 있을 수 있다.
이와 대조적으로, 장치의 상태, 예를 들면, 컴퓨터 시스템(10)의 상태 또는 CPU(40)의 상태가 있을 수 있다. 장치의 상태라 함은 특정의 컴퓨터 사이클에서 그 장치의 상태를 말한다. 모든 메모리 위치 및 레지스터는 특정의 이진 값을 갖는다. 장치의 상태는 그 장치의 내용에 대한 정적 이진 스냅샷(a static binary snapshot)이다.
컴퓨터 시스템(10)의 상태는 동작상 동등한 것을 가리키는 것으로 반드시 정확한 표현은 아니다. 예를 들어, 상태 A에 있는 컴퓨터 시스템은 CPU 캐쉬(41) 또는 시스템 캐쉬(60)내의 특정 메모리를 가질 수 있다. 이들중 어느 하나의 캐쉬 내용을 시스템 RAM(53)내로 플러쉬(flush) 백하여 컴퓨터 시스템을 상태 B가 되게 할 수도 있다. 엄밀히 말하면, 캐쉬와 시스템 RAM의 내용이 다르므로, 상태 A에서의 컴퓨터 시스템의 상태는 상태 B에서의 컴퓨터 시스템의 상태와 다르다. 그러나 소프트웨어 동작의 관점으로부터 상태 A와 상태 B는 동일하며, 이것은 시스템 속도의 근소한 감소(캐쉬없는 실행의 이득을 갖지 않는 프로그램에 의해 발생함)를 제외하면 실행 프로그램이 거의 영향을 받지 않기 때문이다. 즉, 캐쉬가 플러쉬된 컴퓨터는 캐쉬 영역에 유용한 코드가 재로드될 때까지 근소한 성능 감소를 겪게 되겠지만, 상태 A의 컴퓨터와 상태 B는 컴퓨터 소프트웨어 동작상 등가이다.
파워(power)라는 단어도 또한 유사하지만 혼동을 일으킬 수 있는 두가지 면에서 사용된다. 파워는 가장 흔히 전기적 파워를 가리킨다. 그러나 파워는 또한 종종 계산적 능력을 가리킨다. 문맥은 이러한 의도된 용도를 명백히 해야 한다.
회로(circuit)는 전반적으로 물리적 전자 장치 또는 다수의 전기적으로 상호접속된 장치를 가리킨다. 그러나 회로라는 용어는 또한 물리적 전자 장치의 CPU 코드 등가물을 포함하는 것으로 의도된다. 한편, 예를 들며, 2입력 NAND 게이트는 74LS00에 의해 또는 등가적으로 프로그램가능 장치로 구현될 수 있다. 이들 두 장치는 물리적 전자 장치이다. 다른 한편, NAND 게이트는 또한 CPU(40)가 CPU에 의해 판독가능한 2개의 입력 포트로부터 2개 입력을 판독하여, CPU 커맨드를 사용해 NAND 결과를 발생한 후 CPU에 의해 기입가능한 출력 포트를 통해 결과를 출력하므로써 구현될 수 있다. 이들 CPU에 의해 인터페이스 가능한 포트는 디코딩된 래치 또는 프로그램가능 장치 등가물과 같이 간단하거나, 또는 당분야에 잘 알려진 PIA와 같이 복잡할 수 있다. 회로는 NAND 게이트 구현의 모든 3가지 예를 포함하는 것으로 의도된다. 몇몇 경우에, 회로는 단지 전기적 경로만을 가리킬 수도 있다. 전기적 경로의 형태는 인쇄 회로 기판 등의 위에 설치된 와이어, 트레이스 또는 비아, 또는 단일의 전기적으로 접속된 경로를 형성하는 이들 전기적 경로의 임의의 조합 형태를 포함한다.
신호(signal)는 단일의 전기적 파형 또는 다수의 파형을 가리킬 수 있다. 예를 들면, 비디오 제어기는 비디오 신호를 발생한다. 이 비디오 신호는 사실상, 당분야에 잘 알려진 바와 같이 HSYNC, VSYNC, R, G, B 등과 같은 다수의 전기 도체상의 다수의 신호이다.
이제 제 4 도를 참조하면, 제 4 상태인 최종 상태는 오프 상태(156)이다. 오프 상태(156)는 어떤 통상의 컴퓨터가 일반적인 의미로 오프되었다는 것과 사실상 동일하다. 이 상태에서, 파워 서플라이(17)의 1차/조정 유닛(172)은 컴퓨터 시스템(10)에 조정된 파워를 공급하는 것을 멈추지만(제 5 도를 참조하여 이후 보다 상세히 설명되는 바와 같이 AUX5를 통한 약간의 조정된 세류 파워를 제외하고), 컴퓨터 시스템(10)의 상태는 고정 디스크(31)에 보존되지 않는다. 일시중지 상태(154) 및 오프 상태(156)는 파워 서플라이(17)가 더 이상 조정된 파워를 발생하지 않는다는 점에서 유사하다. 이들은 오프 상태(156)의 경우 컴퓨터 시스템(10)의 상태가 일시중지 상태(154)에서처럼 하드 드라이브(31)에 보존되지 않는다는 점에서 다르다. 또한, 오프 상태(156)를 해제시킬 때, 컴퓨터(10)은 온되는 경우처럼 부팅한다. 즉, 임의의 실행 코드가 사용자에 의해 또는 AUTOEXTC.BAT 화일과 같은 수단에 의해 자동으로 동작개시되어야 한다. 그러나 일시중지 상태(154)를 해제할 때, 컴퓨터(10)는 인터럽트된 때에 있었던 장소에서 실행을 재개시한다.
제 4 도는 또한 4개 상태간에 천이가 발생하는 이벤트의 일반적 개관을 도시한다. 이들 이벤트는 제 6 도 내지 8 도를 참조하여 더욱 상세히 설명되지만, 대충 설명해 두는 것이 도움이 될 수도 있다. 파워 버튼(21), 2개의 타이머(제 9 도 및 상세한 설명을 참조하여 알게 되는 바와 같이 비활동 대기 타이머 및 비활동 일시중지 타이머) 및 일시중지 개시 플래그(제 6 도 및 7 도와 상세한 설명 참조)는 모두 컴퓨터가 어느 상태로 들어갈지에 영향을 미친다. 일반적으로, 2개의 타이머는 하드웨어이거나 CPU상에서 프로그램에 의해 실행되는 CPU 코드 타이머일 수 있다. 바람직한 실시예에서, 이들은 모두 BIOS 데이터 시그먼트로부터 실행되는 CPU 코드 타이머이다. 그러나 이들 2개의 타이머는 상상컨대 하드웨어 타이머일 수 있으며, 하드웨어 타이머는 시스템의 오버헤드를 감소시킨다는 점에서 더욱 좋은 방법이 된다. 타이머는 제 9 도를 참조하여 더욱 충분히 설명된다. 두 타이머는 컴퓨터(10)가 정규 동작상태(150) 또는 대기 상태(152)일 때 액티브된다. 타이머는, 어느 타이머라도 만료되면 후술되는 바와 같이 천이되도록 다른 루틴과 통신한다. 사용자의 특정 요구에 따라, 어느 하나의 타이머가 또는 두 타이머 모두가 특정 시간후에 만료하도록 구성될 수 있다. 바람직한 실시예에서, 비활동 대기 타이머 및 비활동 일시중지 타이머는 15 내지 90분 후에 만료하도록 세트될 수 있다. 어느 하나 또는 두 타이머 모두가 정지, 즉, 결코 만료하지 않도록 구성될 수 있다. 타이머를 정지(stopping)시킨다는 것은 실제로는 타이머가 증가시키는 계수 동작을 멈추거나 또는 단지 그들의 만료를 무시하는 형태가 될 수 있다. 본 바람직한 실시예의 경우, 타이머 만료값을 제로로 세트하므로써 타이머 만료가 테스트되지 않게 한다. 예를 들어, 네트워크형 컴퓨터의 사용자는 컴퓨터를 일시중지 상태(154)로 들어가게 하는 것이 그 컴퓨터에 대한 LAN 형성을 방해할 수도 있기 때문에 원하지 않을 수도 있다.
이론적으로, 타이머는 증가식 계수 또는 감소식 계수할 수 있으며, 타이머는 동작개시(재개시)된 때에 고정된 사전결정된 상태로 세트되어 다른 고정된 사전결정된 상태까지 계술할 수 있고, 또는 현재 값이 사용되어 종점 만료시 트리거함으로서 차 또는 합이 계산될 수 있다. 본 바람직한 실시예에서, 타이머가 리셋되면, 실시간 클럭(98)으로부터 분 변수의 현재 값이 저장된다. 타이머는 저장된 분 값으로부터 현재의 분 값을 감산하고 그 차를 사용자에 의해 선택된 값에 비교하므로써 만료에 대해 체크된다.
두 타이머는 특정의 시스템 활동에 의해 영향을 받는다. 예를 들면, 바람직한 실시예에서, 제 9 도를 참조하여 이후 보다 상세히 설명되는 바와 같이, 키보드(12) 키를 누르는 것, 마우스(13)를 이동시키는 것, 마우스(13) 버튼을 누르는 것 또는 하드 드라이브(31) 활동이라고 하는 형태의 사용자 활동에 의해 각각의 타이머가 재개시된다. 따라서, 사용자가 키보드(12) 키를 누르거나 마우스(13)를 사용하고 있는 동안에는 어느 타이머도 만료하지 않게 된다. 또한, 다른 시스템 사건이 타이머를 리셋시키는데 사용될 수 있다. 대안적으로, 하드웨어 인터럽트중 어느 것이 활동에 대해 모니터될 수 있다. 따라서, 프린팅에 의해 시스템이 일시중지 상태(154)로 들어가는 것을 방지하는 것이 바람직할 수 있다.
일시중지 개시 플래그는 프로그램가능 논리 어레이(U2)내의 CPU에 의해 조작 및 판독 가능한 래치로서, 이후 제 7 도를 참조하여 보다 상세히 설명된다. 요약하면, 프로그램가능 논리 어레이(U2)를 한 모드로 하면, 스위치(21)가 눌러져 시스템(10)을 오픈상태(156)로 되게 하고, 프로그램가능 논리 어레이(U2)를 다른 모드로 하면, 스위치(21)가 눌러져 시스템(10)을 일시중지 상태(154)로 되게 한다. 컴퓨터 시스템(10)이 정규 동작 상태(150)이고, 파워 버튼(21)이 눌려지고 프로그램가능 논리 어레이(U2)에 기입되는 일시중지 개시 플래그가 002인 경우, 컴퓨터 시스템(10)은 참조부호(158)로 도시된 바와 같이 오프 상태(156)로 들어간다. 컴퓨터 시스템(10)이 오프 상태(156)이고 파워 버튼(21)이 눌려지면, 컴퓨터 시스템은 정규 동작 상태로 들어간다.
컴퓨터 시스템(10)이 정규 동작 상태(150)에 있는 경우, 한 이벤트에 의해 컴퓨터는 대기 상태(152)로 들어갈 수 있다. 즉, 비활동 대기타이머가 만료하면, 컴퓨터 시스템(10)은 참조부호(162)로 도시된 바와 같이 대기 상태(152)로 변화한다. 대기 상태(152)에 있는 동안, 컴퓨터(10)는 앞서 설명된 종류의 시스템 활동중 임의의 활동에 의해 대기 상태(152)로부터 해제되어 참조부호(164)로 도시된 바와 같이 정규 동작 상태(150)로 다시 들어가게 된다.
컴퓨터(10)는 정규 동작 상태(150)에 있는 경우, 2개의 사건에 의해 일시중지 상태(154)로 들어갈 수 있다. 첫째, 비활동 일시중지 타이머가 만료하면, 컴퓨터 시스템(10)은 참조부호(166)로 도시된 바와 같이 일시중지 상태(154)로 변화한다. 둘째, 또한 참조부호(166)로 도시된 바와 같이, 사용자가 프로그램가능 논리 어레이(U2)에 기입된 일시중지 개시 플래그가 012인 동안 파워 버튼(21)을 누름으로써 컴퓨터(10)를 즉시 일시중지 상태(154)로 들어가게 할 수 있다. 일시중지 상태(154)에 있는 동안, 사용자는 참조부호(168)로 도시된 바와 같이 파워 버튼(21)을 누름으로써 정규 동작 상태(150)로 변화한다.
또한, 이와 달리, 참조부호(168)로 도시된 바와 같이 몇가지 외부 이벤트에 의해 시스템(10)을 일시중지 상태(154)로부터 정규 동작 상태(150)로 변화시킬 수 있다. 예를 들면, 전화 벨 검출 회로를 제 6 도의 회로에 부가하여, 부속된 전화기의 링이 울렸을 때 시스템(10)을 일시중지 상태(154)로부터 정규 동작 상태(150)로 들어가도록 구성할 수 있다. 이러한 변형예는 텔리팩스 데이터 또는 디지털 데이터를 수신하는 시스템에 유용할 수 있다. 이러한 시스템은 입력 정보를 수신할 때만 파워를 소비하게 된다. 마찬가지로, 실시간 클럭과 제 6 도간의 인터페이스는 다른 방법으로서 경보형 이벤트(an alarm-type event)에 의해 시스템(10)을 일시중지 상태(154)로부터 정규 동작 상태(150)로 들어가게 할 수 있다. 이러한 시스템은 전화 이용율이 낮은 때를 이용하기 위해 특정 일시에 텔리팩스 또는 디지털 데이터를 송신하는데 유용할 수 있다.
마지막으로, 컴퓨터 시스템(10)이 대기 상태(152)에 있고 비활동 일시중지 타이머가 만료하면, 컴퓨터(10)는 참조부호(170)로 도시된 바와 같이 일시중지 상태(154)로 변화한다. 컴퓨터 시스템(10)은 일시중지 상태(154)로부터 대기 상태(152)로 다시 변화할 수 없으며, 단지 천이(168)를 참조하여 설명된 바와 같이 정규 동작 상태(15)로만 천이할 수 있다.
분명히, 컴퓨터 시스템(10)은 즉각적으로 상태를 변화시킬 수는 없다. 4개 상태중 하나로 부터의 각 천이시에 필요한 시스템 변경을 수행하기 위해 특정 시간이 요구된다. 각 천이 기간의 세부는 제 6 도 내지 15 도를 참조하여 설명된다.
시스템 하드웨어
CPU(40)상의 코드 실행에 대한 세부사항을 설명하기 전에, 우선 4개 상태를 성취하는데 요구되는 하드웨어를 설명하는 것이 유용할 수 있다. 파워 서플라이(17)의블럭도가 제 5 도에 도시된다. 파워 서플라이(17)는 2개의 유닛, 즉, 제어 유닛(174) 및 1차/조정 유닛(172)을 구비한다. 파워 서플라이(17)는 몇개의입력, 즉, 통상 벽에 설치된 콘센트로부터 115VAC를 수신하는 라인-인(Line-In)과 파워 서플라이(17)의 조정활동을 제어하는 온(ON)을 갖는다. 파워 서플라이(17)는 또한 몇개의 출력, 즉, AC 라인-아웃(Line-Out), ±5VDC, ±12VDC, AUX5, GND 및 POWERGOOD을 갖는다. AC 출력은 통상 비디오 디스플레이 터미널(57)의 전기적 파워 입력(미도시됨)으로 보내지는 비조정된 115VAC이다. 제어 유닛(174)은 /ON 입력을 수신하여 POWERGOOD 출력을 발생한다. 1차/조정 유닛(172)은 제어 유닛(174)에 의해 인터페이스되는 이 /ON 값에 따라 파워를 조정한다. 바람직한 실시예에서, 제어 유닛(174)은 ON 신호를 발생하는 회로에 대한 절연, 예를 들면, 적절한 광분리기를 제공해야 한다.
라인-인 입력 및 AC 라인-아웃, ±5VDC, ±12VDC, GND 및 POWERGOOD 출력은 당분야에 이미 잘 알려져 있다. 파워 서플라이(17)가 오프되면, 즉, 라인-인으로부터 조정된 전압을 제공하지 않을 때, POWERGOOD 신호는 논리 제로이다. 파워 서플라이(17)가 온일 때, 파워 서플라이(17)는 115VAC로부터 ±5VDC 및 ±12VDC의 조정된 전압을 발생한다. 이들 4개의 조정된 전압과 그들의 연관된 GND는 당 분야에 공히 알려진 시스템 파워이다. 조정된 전압이 허용가능한 오차범위내의 레벨에 도달하면, POWERGOOD 신호는 논리 1로 변화한다.
AUX5 출력은 플래너에 보조의 +5VDC를 제공한다. 파워 서플라이(17)가 공칭 115VAC를 공급하는 통상 벽면에 설치된 콘센트에 플러그되면, 파워 서플라이가 온되건 오프되건 1차/조정 유닛(172)은 AUX5에 조정된 +5VDC를 공급한다. 따라서, 파워 서플라이(17)가 플러그되어 있는 동안은 AUX5에 공칭+5VDC를 항상 공급하고 있게 된다. 1차/조정 유닛(172)의 +5 출력단은 파워 서플라이(17)가 온인 동안만 조정된 +5VDC를 발생한다는 점에서 AUX5 출력단은 +5 출력단과 다르다. 본 바람직한 실시예에서, 1차/조정 유닛(172)은 +5 출력단을 통해 +5VDC에서 몇 암페어의 전류를 공급하지만, AUX5 출력단을 통해서는 +5VDC에서 1암페어 미만의 전류를 공급한다는 점에서, AUX5 출력단은 +5 출력단과 또한 다르다.
전형적인 종래의 파워 서플라이는 고암페어 2단계 스위치를 사용하여 라인-인 입력을 파워 서플라이의 조정 섹션에 접속 및 단속한다. 본 발명에서 파워 서플라이(17)는 고암페어 2단계 스위치를 사용하지 않는다. 오히려, 스위치(21)는 /ON 신호를 발생하는 회로를 제어한다. 바람직한 실시예에서, 스위치(21)는 순간 단극 1단계 푸쉬버튼 스위치이며, 당분야에 숙련된 기술을 가진 자라면 제 6 도의 회로를 단극 2단계 스위치와 같은 다른 형태의 스위치를 이용하는데 응용할 수 있을 것이다. AC 라인-인은 항상 벽의 콘센트로부터 1차/조정 유닛(172)에 접속된다. /ON이 논리 1이면(대략 AUX5, 공칭 +5VDC), 1차/조정 유닛(172)은 115VAC 라인-인을 ±5 또는±12 출력단을 통해 ±5VDC 또는 ±12VDC로 조정하지 않는다. 1차/조정 유닛(172)은 단지 AUX5 출력단에 저암페어의 공칭 +5VDC를 제공한다. 다른 한편, /ON이 논리 제로인 경우(대략GND), 1차/조정 유닛(172)은 115VAC 라인-인을 제각기 4개의 ±5 및 ±12 출력단을 통해 ±5VDC 및 ±12VDC로 조정한다. 따라서, /ON이 1일 때, 파워 서플라이(17)는 오프이고, /ON이 제로일 때, 파워 서플라이(17)는 온이다.
앞서 설명된 파워 서플라이(17)와 같이 AUX5 출력 및 /ON 입력을 갖는 파워 서플라이는 지정되기만 하면, 보다 통상의 파워 서플라이 공급업자로부터 획득될 수 있다.
이제 제 6 도를 참조하면, 본 발명에 따른 컴퓨터 시스템(10)의 전자 회로의 개략도가 도시된다. 제 6 도에 도시된 회로는 스위치(21), 파워 서플라이(17), 비디오 디스플레이 터미널(57) 및 CPU(40)상에서 실행되는 코드간의 인터페이스를 행한다.
이 회로는 당분야에 잘 공지된 3개의 집적 회로, 즉, 제 1 사전프로그램된 PAL16L8(U1), 제 2 사전프로그램된 PAL16L8(U2) 및 74HC132(U3)를 포함한다. 일반적으로, 제 1 및 제 2 PAL(U1, U2)은 제 3 도의 플래너 I/O 버스(90)와 제 6 도의 나머지 회로간을 인터페이스한다. 이 회로는 또한 스위치(21), 10개의 저항기(R1-R10), 5개의 캐패시터(C1-C5), 본 바람직한 실시예에서 로직 스위치로서 동작하기에 적합한 표준 저전류 NMOS FET인 4개인 N형 MOSFET(Q1-Q4) 및 표준 저전류 다이오드 패키지인 이중 다이오드 패키지(CR1)를 포함하며, 모두 제 6 도에 도시된 바와 같이 구성되어 접속된다. 이들 저항(R1-R10)은 ¼와트 저항기로서, 제 6 도에 도시된 값의 ±5% 값이다. 캐패시터(C1-C2)는 제 6 도에 도시된 값의 ±10%의 값을 갖는 전해 캐패시터이다. 캐피시터(C3-C5)는 0.1㎌(±10%)의 세라믹 캐패시터이다.
제 1 PAL(U1)은 어드레스 라인 SA(1)~SA(15) 및 AEN(어드레스 인에이블) 라인에 접속된다. SA(1)~SA(15) 및 AEN은 제 3 도에 도시된 플래너 I/O 버스(90)의 일부이다. 이 제 1 PAL(U1)은 단지, 사전결정된 어드레스 라인 SA(1)~SA(15)상에 제공되고, AEN(어드레스 인에이블) 라인이 액티브되었을 때 액티브 로우 신호 PM_PORT_DED#를 제공하는 어드레스 디코더가 되도록 프로그램된다.
제 2 PAL(U2)은 판독가능한 한 바이트와, 본 명세서에서 파워 관리 포트로도 참조되는 앞서 언급된 I/O/ 포트의 하위 3비트로 이루어지는 기입가능한 3개 비트를 제공하도록 프로그램된다. 제 2PAL(U2)은 플래너 I/O 버스(90)로부터의 8개 입력, 즉, SD(0), SD(1), SD(2), SA(0), IOW#, IOR#, RESETDRV 및 IRQ(1)를 갖는다. 제 2 PAL(U2)은 당분야에 잘 알려진 바와 같이 메모리 제어기(46)에 의해 발생되는, 핀2의 액티브 하이 신호 RESETDRV 입력에 의해 공지된 초기 조건으로 리셋된다. 제 2 PAL(U2)은 제 7 도 및 테이블 I 및 Ⅱ를 참조하여 보다 상세히 설명된다.
세번째 장치는 여기서는 U3A 및 U3B로 식별되는 두 부분을 가지며, 당분야에 잘 공지된 NAND 래치로도 알려진 SR 래치를 형성한다. SR 래치는 입력으로서 핀1 및 핀5(핀1은 SET 입력이고 핀5는 RESET 입력임)와 출력으로서 핀3을 갖는다. 상기 두 입력이 논리 1이면, 출력은 그의 래치된 출력 값을 유지한다. SET가 논리 제로가 되면, 출력은 논리 1이 된다. SET 입력이 논리 1로 복귀되면, 출력은 논리 1에 래치된다. RESET 입력이 논리 제로가 되면, 출력은 논리 제로가 된다. RESET 입력이 논리 0으로 복귀되면, 출력은 논리 제로에 래치된다.
POWERGOOD 신호가 조정된 전압의 적당한 레벨임을 표시하는 논리 1이면, 본 명세서에서 U3C로 식별되는, 세번째 장치의 세번째 부분은 제 2 PAL(U2)의 핀12 출력에 대해 인버터로서 동작한다. POWERGOOD 신호가 VCC가 접지 근방에서 플로팅하거나 +5VDC로 또는 +5VDC로부터 상향 또는 하향 경사짐을 표시하는 논리 제로이면, 세번째 장치(U3C)의 세번째 부분의 핀8 출력은 논리 1을 유지함으로써, 제 2 PAL(U2)의 핀12로 부터의 어떤 노이즈도 세번째 장치의 첫번째 및 두번째 부분(U3A, U3B)에 의해 생성되는 SR 래치에 영향을 주지 못하게 한다.
스위치(21)은 JP1에서 제 6 도의 회로에 접속된다. 저항기(R2)와 캐패시터(C1)로 이루어지는 서브회로는 스위치(21)의 폐쇄시에 바운싱을 제거한다. 세번째 장치의 네번째 부분은 인버터로서 구성되어 핀12가 바운싱이 제거된 스위치 폐쇄를 반전시키는 저항(R6)을 통해 VBAT(AUX5가 공칭 +5VDC일 때 대략 +4.3VDC)로 풀링된다. 전류 제한 저항(R10)은 세번째 장치(U3D)의 네번째 부분의 핀11을 본 장치가 파워 업 또는 다운될 때 제 2 PAL(U2)의 핀 8로부터 흐를 수도 있는 어떤 전류로부터 보호한다.
SR 래치는 파워를 오프시키지 않아야 한다. 그러나 SR 래치가 파워를 오프시킨 경우, 저항(R7) 및 캐패시터(C3)는, SR 래치에 파워가 재공급되었을 때 파워 서플라이(17)가 오프 상태가 놓이게 되도록 SR 래치를 파워 투입시의 상태로 하도록 설계된다.
저항(R1, R3, R4, R5, R6, R8, R9)은 풀-업 저항으로서 그들의 제각기의 라인을 VCC, VBAT 또는 AUX5에 풀링한다. 트랜지스터(Q1, Q2, Q3, Q4)는 인버터이다. 저항(R4) 및 캐패시터(C2)는 캐패시터(C2)가 VCC에 도달할 때까지 캐패시터(C2)를 충전시키는 RC 쌍을 형성한다. 트랜지스터(Q5)는 제 2 PAL(U2)의 핀19 출력이 논리 1일 때 캐패시터(C2)를 방전시킨다. 캐패시터(C2)에 저장된 전압이 대략 +2.7VDC 이하이면, 트랜지스터(Q1)는 도전하지 않고 저항(R3)은 제 2 PAL(U2)의 핀11 입력을 VCC까지 풀링하여 논리 1이 되게 한다. 캐패시터(C2)가 대략 +2.7VDC 또는 그보다 크게 충전되면, 트랜지스터(Q1)가 도전하므로, 핀11 입력을 GND로 풀링하여 논리 제로가 되게 한다.
제 2 PAL(U2)의 핀18 출력이 논리 제로이면, 저항(R8, R9)은 BLNK# 및 ESYNC 라인을 제각기 VCC로 풀링한다. ESYNC 및 BLNK# 라인이 VCC로 풀링되면, 비디오 제어기(56)는 비디오 신호를 발생한다. 제 2 PAL(U2)의 핀18 출력이 논리 1이면, 트랜지스터(Q2,Q3)가 도전하므로, BLNK# 및 ESYNC가 제각기 GND로 풀링되어 비디오 제어기(56)가 비디오 신호를 발생하는 것을 멈추게 한다.
제 6 도에 도시된 전자 회로는 3개의 파워 소스, 즉, VCC, AUX5 및 VBAT를 갖는다. VCC 및 AUX5는 파워 서플라이(17)에 의해 발생되며, 공칭 +5.0VDC이다. VCC 및 그의 연관된 GND 복귀 라인은 당분야에 잘 공지된 바와 같이 플래너(20)상의주 파워 접속기(미도시됨)를 통해 입력된다. AUX5는 JP2의 핀1에서 회로에 접속된다. AUX5 복귀 라인은 JP2의 핀3으로 입력되어 GND 라인에 접속된다. VBAT는 배터리(171)의 파워 출력으로서 공칭 3.5 VDC이다. 배터리(171)는 당분야에 잘 공지된 리튬 배터리이다.
이들 제 1 및 제 2 PAL(U1,U2)은 VCC에 접속된 핀20에서 그들의 VCC 입력을 갖는다. 또한, 몇 개의 저항(R3, R4, R8, R9)이 VCC에 접속된다. 파워 서플라이(17)는 온되고 당분야에 잘 알려진 바와 같이 115VAC를 공급하는 통상의 벽 콘센트에 플러그되었을 때만, 조정된 +5VDC를 공급한다. 따라서, 파워 서플라이가 오프 또는 플러그되지 않았을 때, PAL(U1,U2) 및 저항(R3, R4, R8, R9)은 +5VDC를 수신하지 않는다.
다른 한편, 파워 서플라이(17)가 공칭 115VAC를 공급하는 통상의 벽 콘센트에 플러그되었을 때, 파워 서플라이(17)는 온 또는 오프에 관계없이 AUX5로 조정된 +5VDC를 공급한다. 따라서, 파워 서플라이(17)가 플래그 되면 언제나, AUX5에 접속된 이들 장치는 +5VDC를 수신한다.
더욱이, U3 및 저항(R1, R2, R6)은 항상 전기적 파워를 수신하며, 이것은 CR1의 다이오드가, VBAT에 부착된 장치가 항상 파워를 수신하도록 VBAT 및 AUX5를 인터페이스하기 때문이다. 파워 서플라이(17)는 통상의 벽 콘센트에 플러그된 동안 AUX5에 +5VDC를 제공하며, VBAT에 부착된 장치(U3 및 저항(R1, R2, R6)는 대략 +4.3VAD(AUX5의 +5VDC로부터, AUX5와 VBAT간에 CR1내 다이오드의 전압 강하를 감산한 값)를 수신한다. 플러그되지 않은 경우 파워 서플라이(17)는 AUX5 라인 및 U3에 조정된 파워를 제공하지 않으며, 저항(R1, R2, R6)는 VBAT로부터 파워를 수신한다. 통상 74HC132는 +2.0VDC의 최소 DC 공급 전압을 요구한다. 따라서, VBAT가 +2.0VDC를 제공하기에 충분한 저하를 유지하는 한, U3에는 충분한 파워가 공급된다.
제 6 도의 회로는 다수의 다른 변형예를 가질 수 있으며, 이 또한 본 발명에 속한다. 예를 들어, 실시간 클럭(98)이 제 6 도의 회로에 전기적으로 접속되어, 특정 일시에 컴퓨터 시스템(10)이 일시중지 상태(154)로부터 정규 동작 상태(150)로 변환되도록 ON# 신호에 다이오드 오어링(diode ORed)되게 구성될 수 있다. 마찬가지로, 다른 방법으로서 전화링 검출 회로가 제 6 도의 회로에 부가되어, 부착된 전화기의 링에 의해 시스템(10)이 일시중지 상태(154)로부터 정규 동작 상태(150)로 들어가도록 ON# 신호에 다이오드 오어링되게 구성될 수 있다.
제 6 도를 다시 참조하면, 제 2 PAL(U2)은 2개의 상태 머신을 갖는다. 제 2 PAL(U2)의 두 상태 머신중 한가지 상태 머신의 상태도가 제 7 도에 도시된다. 테이블 Ⅰ 및 테이블Ⅱ는 다른 상태 머신 및 제 2 PAL(U2)의 특정의 다양한 측면을 설명한다.
제 7 도는 제 2 PAL(U2)내의 상태 머신중 하나를 도시한다. TE1과 TE0는 함께 4가지 상태, 즉, 스위치 상태 002(176), 스위치 상태 012(178), 스위치 상태 112(180) 및 스위치 상태 102(182)를 허용한다.
TE1 및 TE0는 제 2 PAL(U2)에 직접 기입될 수 없으며, 상태는 스위치(21)를 누름 또는 컴퓨터 시스템(10)을 리셋하는 것과 같은 다른 이벤트에 응답하여 변화한다. 파워 서플라이(17)에 의해 시스템 파워가 제공되지 않는 경우, 제 2 PAL(U2)에는 파워가 공급되지 않으며, 따라서, 상태(174)에서 그의 상태는 의미가 없다. 스위치(21)의 누름 및 다른 이벤트(예를 들면, 전화 링 검출기가 파워 서플라이(17)로 하여금 시스템 파워를 제공하도록 함)에 의해, 제 6 도를 참조하여 설명된 바와 같이, 파워 서플라이(17)가 시스템 파워 공급을 개시하게 한다. 스위치(21)가 눌려지거나 또는 RESETDRV 신호가 액티브되면, 제 2 PAL(U2)은 스위치 상태 002(176)로 들어간다. 스위치(21)를 해제하거나 스위치(21)가 눌려지지 않는 동안 RESETDRV 신호가 인액티브되면, 제 2 PAL(U2)은 스위치 상태 012(178)로 들어간다. 스위치(21)를 다시 누르면, 제 2 PAL(U2)은 스위치 상태 102(180)으로 들어간다. 스위치(21)를 다시 해제하면, 제 2 PAL(U2)은 스위치 상태 102(182)로 들어간다. 계속해서 스위치(21)를 다시 누르면, 제 7 도에 도시된 바와 같이 제 2 PAL(U2)는 4가지 상태를 통해 순환한다. 컴퓨터 시스템(10)이 정규 동작 상태(150)에 있을 때 제 2 PAL(U2)은 스위치 상태 012(178)이다.
스위치 상태 012(178)은 TE1, TE0 상태 머신에 대해 정규 온 상태에 대응하는 스위치 상태이다. 응용 프로그램은 이 상태에 있는 동안 실행된다. 시스템(10)은 이 상태에서 대기 상태(152)로 들어갈 수도, 그로부터 해제될 수도 있다. 스위치 상태 012(178)는 또한 사용자에 의해 발생된 일시중지 금지 요구에 대응한다. 스위치 상태 102는 사용자에 의한 일시중지 요구에 대응하는 스위치 상태이다. 즉, 오프 상태(156)의 시스템으로 시작하여, 스위치(21)를 한번 누르면 컴퓨터 시스템(10)이 정규 동작 상태(150)에 놓인다. 스위치(21)를 다시 한번 누르면, 일시중지 요구(파워 관리 포트에서 0FFH)를 발생하며, 이것은 이후 제 9 도를 참조하여 보다 상세히 설명되는 바와 같이 감시 루틴에 의해 판독된다. 시스템(10)이 일시중지 상태(154)가 되기 전에 스위치(21)를 세번째 누르면, 일시중지 금지 요구(파워 관리 포트에서 0FEH)가 발생하며, 이것은 감시 루틴에 의해 판독된다.
테이블Ⅰ은 제 7 도의 4개 상태에 약간의 주석을 부가한다. 스위치 상태 02(176), 012(178), 112(180)에 있는 동안 파워 관리 포트는 판독에 응답하여 0FFH를 출력한다. 다른 한편, 스위치 상태 102(182)에 있는 동안, 파워 관리 포트는 판독에 응답하여 0FEH를 출력한다. 스위치(21)를 눌렀다 해제하면, 제 2 PAL(U2)은 스위치 상태 012로부터 해제되어, 하드웨어 일시중지 요구를 신호하는 스위치 상태 102(182)로 들어간다. 감시 루틴은 파워 관리 포트를 판독함으로써 하드웨어 일시중지 요구를 인식하게 된다. 판독된 0FEH는 하드웨어 일시중지 요구를 표시한다.
TE1, TE0 상태 머신은 또한 비디오 블랭킹 회로에 영향을 준다. 스위치 상태 002(176)에 있는 동안, 디스플레이 블랭킹 비트는 클리어되어, 비디오 제어기(56)가 비디오 신호를 발생하도록 한다. 스위치 상태 102(182)에 있는 동안, 디스플레이 블랭킹 비트는 세트되어, 비디오 제어기(56)가 비디오 신호를 발생하는 것을 중지시킨다. 스위치 상태 012(178) 및 112(180)에 있는 동안, 디스플레이 블랭킹 비트는 이후 설명되는 바와 같이 SD(2)에 대한 기입에 의해 제어된다.
테이블Ⅱ는 제 2 PAL(U2)의 다른 상태 머신을 도시하며, SD(2)로의 기입이 비디오 신호에 어떤 영향을 주는가를 도시한다.
PAL내의 U2 회로는 파워 관리 포트에 3개 비트, 즉, SD(0), SD(1), SD(2)를 제공한다. 이 3개 비트는 테이블Ⅱ에서 S0, S1, S2로 명명되었다. SD(2)는 제 2 PAL(U2)의 핀18 출력 DISPLAY_OFF를 제어함으로써 비디오 블랭킹을 제어한다. 파워 관리 포트의 SD(2) 비트에 1을 기입하면, 핀18의 출력 DISPLAY_OFF가 논리 1을 송출하고, 트랜지스터(Q2, Q3)가 도전하며, BLNK# 및 ESYNC가 GND에 풀링하여 비디오 제어기(56)가 비디오 신호를 발생하는 것을 멈춤으로써 비디오 신호가 오프된다. 마찬가지로, 파워 관리 포트의 SD(2)에 제로를 기입하면, 핀18의 출력 DISPLAY_OFF가 논리 제로를 송출하고, 트랜지스터(Q2, Q3)가 도전을 중지하며, 저항(R8, R9)에 의해 BLNK# 및 ESYNC가 VCC에 풀링하여 비디오 제어기(56)가 비디오 신호를 발생하게 한다.
IRQ(1) 입력 또한 비디오 블랭킹을 제어한다. IRQ(1)은 키보드 하드웨어 인터럽트로서, 키보드(12)상의 키를 누르면, IRQ(1) 펄스가 발생한다. 비디오 신호가 오프인 동안 IRQ(1) 펄스가 발생하면, 핀18의 출력 DISPLAY_OFF가 논리 제로를 송출하고, 트랜지스터(Q2, Q3)가 도전을 중지하며, 저항(R8, R9)에 의해 BLNK# 및 ESYNC를 VCC로 풀링하여 비디오 제어기(56)가 비디오 신호를 발생하도록 함으로써, 비디오 신호가 즉각 온으로 복귀된다. 이와 같이, IRQ(1)을 사용하면, 대기 상태(152)로부터 정규 동작 상태(54)로의 복귀시에 복원된 비디오 디스플레이 형식으로 사용자에게 즉각적인 피드백이 제공된다. IRQ(1)가 없으면, 사용자는 제 9 도를 참조하여 설명된 바와 같이 APM이 사용자 활동에 대해 체크한지 아마도 몇초 후까지도 피드백을 수신하지 못할 수 있다.
SD(1) 및 SD(0)는 나란히 4개의 동작 상태, 즉, 002, 012, 102, 112를 제공한다. 제 2 PAL(U2)은 RESETDRV 입력에 의해 002상태로 초기화된다. 또한, 4개 상태중 어느 하나의 상태가 있는 동안, 파워 관리 포트에 XXXXXX002를 기입하면, 제 2 PAL(U2)이 002상태에 놓인다. 스위치(21)는 002상태에서 제 5 도를 참조하여 설명된 전형적인 파워 서플라이의 파워 스위치처럼 동작한다. 002상태에 있는 동안 스위치(21)를 누르면, 제 2 PAL(U2)의 핀12 출력이 논리 1을 송출하고, SR 래치의 핀3 출력이 논리 제로 상태가 되고, 저항(R6)에 의해 ON이 하이로 풀링되어, 파워 서플라이(17)의 1차/조정 유닛(172)이 ±5 및 ±12 라인을 따라 조정된 전압을 제공하는 것을 중지함으로써 파워 서플라이(17)가 오프된다. 이 상태에서, APM은 시스템 소프트웨어 설명시에 보다 상세히 설명되는 바와 같이 단속된다. 002상태에 있는 동안, 파워 관리 포트를 판독하면, 회로는 0FEH로 복귀한다. 본 바람직한 실시예에서, 이 바이트가 판독되며, 하드웨어가 존재함을 확인하기 위해 테스트된다.
4개의 상태중 어느 하나의 상태가 있는 동안, XXXXXX012을 파워 관리 포트에 기입하면, 제 2 PAL(U2)은 012상태로 들어간다. 012상태는 정규 APM 상태이다. 012상태로 들어간 직후 스위치(21)가 눌려지기 전에 파워 관리 포트를 판독하면, 회로는 0FFH로 북귀한다. 012상태에 있는 동안 스위치(21)를 눌렀다 해제하면, 두개의 사건이 발생한다. 즉, (1) 파워 관리 포트의 판독에 의해 복귀된 값이 OFEH와 OFFH간에 토글되며, (2) 핀18에 송출된 값이 토글하여, 비디오 제어기(56)가 각각의 스위치 누를 때마다 비디오 신호를 온 및 오프로 토글시킨다. 또한, 스위치(21)가 첫번째 눌려지면, 핀19의 TRIGGER# 출력이 논리 제로를 송출함으로써 안전보장 타이머(failsafe fimer)가 동작 개시되고, 트랜지스터(Q5)가 도전을 중지하여 캐패시터(C2)가 충전을 시작하게 된다. 캐패시터(C2)에 축적된 전압이 대략 +2.7VDC 이하인 때 트랜지스터(Q1)는 도전하지 않으며, 저항(R3) 은 제 2 PAL(U2)의 핀11 입력을 VCC에 풀링하여 논리 1이 되게 한다. 캐패시터(C2)가 대략 +2.7VDC 또는 그 보다 큰 전압까지 충전되면, 트랜지스터(Q1)는 도전하고, 핀11 입력이 GND로 풀링하여 논리 제로가 된다. 핀11의 DELAY_IN#가 논리 제로일 때면, 제 2 PAL(U2)의 핀12 출력이 논리 1을 송출하고, SR 래치의 핀3 출력이 논리 제로 상태로 래치되고, 저항(R6)에 의해 /ON이 하이로 풀링되어, 파워 서플라이(17)의 1차/조정 유닛(172)이 ±5 및 ±12 라인을 따라 조정된 전압을 제공하는 것을 중지하게 함으로써, 제 2 PAL(U2)이 파워 서플라이(17)를 오프시킨다. 스위치 누름을 반복하면, 안전보장 타이머는 온 및 오프로 토글된다.
따라서, 012상태에 있는 동안, 스위치가 눌려지기 전에 판독에 의해 복귀되는 값은 0FFH이고, 비디오 신호가 발생되며, 스위치(21)가 첫번째 눌려지면, 판독에 의해 복귀되는 값은 0FEH로 변화하고, 비디오 신호가 발생 중지하며, 비디오 디스플레이 터미널(57)은 블랭크된다. 스위치(21)가 두번째 눌려지면, 판독에 의해 복귀되는 값은 0FFH로 다시 변화하고, 비디오 제어기(56)는 비디오 신호를 다시 발생하기 시작한다. 이러한 토글하는 성질은, 스위치(21)를 반복적으로 누름으로써 스위치 누름의 총수가 홀수이면 0FEH의 값이 되고 비디오 신호가 블랭크되며, 스위치 누름의 총수가 짝수이면 0FFH의 값이 되고 비디오 신호가 발생되도록 동작하게 한다.
4개의 상태중 어느 한 상태가 있는 동안, 파워 관리 포트에 XXXXXX102를 기입하면, 제 2 PAL(U2)이 102상태로 들어간다. 102상태로 들어가는 즉시, 제 2 PAL(U2)의 핀12 출력이 논리 1을 송출하고, SR 래치의 핀3 출력이 논리 제로 상태로 래치되며, 저항(R6)에 의해 /ON이 하이로 풀링되어, 파워 서플라이(17)의 1차/조정 유닛(172)이 ±5 및 ±12 라인을 따라 조정된 전압을 제공하는 것을 중지함으로써, 파워 서플라이(17)가 오프된다. 이 상태는 시스템(10)에 파워 서플라이(17)에 대한 제어를 제공한다.
4개의 상태중 어느 한 상태에 있는 동안, 파워 관리 포트에 XXXXXX112를 기입하면, 제 2 PAL(U2)은 112상태로 들어간다. 112상태로 들어가면, 핀19 TRIGGER# 출력이 논리 1을 송출하고, 트랜지스터(Q5)가 도전하며, 캐패시터(C2)가 GND로 방전하므로써 안전보장 타이머가 리셋된다. 이러한 상태로부터 012상태로 들어가면, 핀19의 TRIGGER# 출력이 논리 제로를 송출하여 트랜지스터(Q5)가 도전되는 것을 막고 캐패시터(C2)가 다시 충전되도록 함으로써 안전보장 타이머는 다시 동작개시한다.
제 6 도에 도시된 회로의 기능에 대한 이후의 설명은 파워 서플라이(17)가 통상의 벽 콘센트에 플러그되고 AUX5에 +5VDC를 발생하여 다수의 장치, 특히, U3에 파워가 충분히 공급되고 있는 것을 가정한다.
제 6 도의 회로에 대한 설명은 파워 서플라이(17)가 오프된 동안 먼저 조사되면 더욱 쉽게 이해된다. 파워 서플라이(17)를 오프로 하려면, JP2의 핀2의 신호 ON#가 논리 1이 되어야 한다. 그러므로 트랜지스터(Q4)가 도전되지 않고, 따라서, U3의 핀3은 논리 제로가 된다. 즉, U3A 및 U3B의 SR 래치는 논리 제로 출력으로 래치된다. POWERGOOD은 논리 제로이고, 제 2 PAL(U2)에는 파워가 공급되지 않으므로, UC3의 핀8 출력은 논리 1이고, 따라서, SR 래치의 RESET 입력은 1이다. 마찬가지로, SR 래치의 SET 입력, 즉, U3A의 핀1은 저항(R1)에 의해 논리 1로 풀링된다. 이 상태에서, SR 래치는 논리 제로 출력으로 래치된다.
스위치(21)가 눌려지면, 스위치 폐쇄시의 바운싱이 저항(R2) 및 캐패시터(C1)에 의해 제거되며, SR 래치의 SET 입력, 즉, U3A의 핀1은 GND(논리 0)로 풀링된다. 이에 따라 SR 래치의 출력인 U3A인 핀3이 논리 1로 변환하고, 트랜지스터(Q4)가 도전하여 ON#를 GND로 풀링함으로써, 파워 서플라이(17)가 ±5 및 ±12 라인에 조정된 파워를 공급하기 시작한다. 스위치를 해제하면, SR 래치의 SET 입력인 U3A의 핀1이 논리 1로 변화하고, SR 래치가 U3A의 핀3 출력에 논리 1을 래치함으로써, 파워 서플라이(17)가 온 상태로 래치된다.
POWERGOOD 신호가 논리 1이 된 후, 모든 전압은 허용오차 범위내가 된다. POWERGOOD 신호가 논리 제로인 동안, 제 2 PAL(U2)은 초기화시에, (1) 핀12의 OFF 출력이 논리 제로를 송출하여 SR 래치가 자신의 현재 래치된 상태에서 해제되며, (2) 핀18의 DISPLAY_OFF 출력이 논리 제로를 송출하여 비디오 제어기가 비디오 신호를 발생하게 하며, (3) 핀19의 TRIGGER# 출력이 논리 1을 송출하여, 트랜지스터(Q5)가 캐패시터(C2)를 GND로 방전함으로써, 저항(R3)에 의해 핀11의 DELAY_IN# 입력이 논리 1에 풀링되어 유지된다.
앞서 언급된 바와 같이, 제 6 도의 제 2 PAL(U2) 회로는 파워 관리 포트로 3개의 비트, 즉, SD(0), SD(1), SD(2)를 제공한다. SD(2)는 제 2 PAL(U2)의 핀18의 DISPLAY_OFF 출력을 제어한다. 파워 관리 포트의 SD(2)에 1을 기입하면, 비디오 제어기(56)는 비디오 신호 발생을 중지한다. 마찬가지로, 파워 관리 포트의 SD(2)에 제로를 기입하면, 비디오 제어기(56)는 비디오 신호를 발생하게 된다.
앞서 또한 설명된 바와 같이, SD(1) 및 SD(0)는 나란히 4개의 동작 상태, 즉, 002, 012, 102, 112를 제공한다. 제 2 PAL(U2)은 RESETDRV 입력에 의해 002상태로 초기화된다. 이 상태에 있는 동안, 스위치(21)를 누르면, 단지 파워 서플라이(17)가 오프된다. 코드 실행중 몇몇 시점에서 소프트웨어는, 사용자가 원할 경우, 파워 관리 포트에 XXXXXX012를 기입하여 제 2 PAL(U2)를 012상태로 들어가게 한다. 12상태는 정규의 APM 상태이다. 각각의 APM 겟 이벤트(get event) 동안 감시 루틴은 비활동 대기 타이머 또는 비활동 일시중지 타이머가 만료되었는지의 여부에 대해 체크한다. 비활동 대기 타이머가 만료한 경우, 감시 루틴은 I/O 포트에 XXXXX1XX2를 기입하여 비디오 신호를 블랭크시킨다. 컴퓨터가 대기 상태로부터 정규 동작 상태로 다시 들어가면, 감시 루틴은 I/O 포트에 XXXXX0XX2를 기입하여, 비디오 제어기(56)가 비디오 신호를 발생하게 한다. 비활동 일시중지 타이머가 만료하면, 감시 루틴은 일시중지 루틴을 호출하며, 이에 관하여는 제10 도를 참조하여 보다 상세히 설명된다.
또한, 각각의 APM 겟 이벤트 동안, 감시 루틴은 파워 관리 포트를 판독한다. 0FFH가 복귀하면, 스위치(21)는 눌려지지 않은 것이다. 다른 한편, 0FFH가 복귀되면, 스위치(21)가 눌려졌으므로, 컴퓨터 시스템은 제 10 도를 참조하여 보다 상세히 설명되는 일시중지 루틴을 개시한다. 스위치(21)가 눌려졌거나 비활동 일시중지 타미머가 만료하면, 안전보장 타이머가 동작개시되었고 캐패시터(C2)가 충전중이므로, 안전보장 타이머가 파워 서플라이(17)를 오프시키는 것을 방지하기 위해, 일시중지 루틴은 I/O 포트에 XXXXXX112를 기입하여 타이머를 리셋시키고, 그 후 즉시 I/O 포트에 XXXXXX012를 기입하여 012모드에서 재개시한다. 시스템이 일시중지되면, 일시중지 루틴은 I/O 포트에 XXXXXX112를 기입하여 파워 서플라이(17)를 즉시 오프시킨다.
시스템 소프트웨어
이상 본 발명에 따른 컴퓨터 시스템(10)의 하드웨어 측면에 대해 설명되었으므로, 계속해서 코드 측면에 대해 설명된다.
이제 제 8 도를 참조하면, 파워-업 루틴의 전반적 개관이 도시된다. 이 루틴은 CPU가 리셋 벡터(Reset Vactor)에 의해 포인트되는 코드로 점프하여 실행하는 단계(200)에서 시작한다. 이것은 CPU에 파워가 공급될 때마다, 리셋 하드웨어에 의해 또는 리셋 벡터로 포인트되는 코드로 점프함으로써 RESET 인스트럭션이 실행된 때 CPU가 리셋될 때마다 발생한다. 이러한 리셋 절차는 당분야에 잘 알려져 있다.
일반적으로, 파워-업 루틴의 흐름은 시스템이 오프 상태(156)에 있느냐 일시중지 상태(154)에 있느냐, 즉, 제각기, COMS NVRAM(96)내에 일시중지 플래그가 클리어되었느냐 세트되었느냐에 의존한다. 단계(202)로 도시된 바와 같이, 시스템(10)은 비휘발성 CMOS 메모리(96)로부터 일시중지 플래그를 판독함으로써 시스템이 오프 상태(156)에 있는지 일시중지 상태(154)에 있는지를 판정한다. 시스템이 정규 동작 상태(150)에서 오프 상태(156) 또는 일시중지 상태(154)로 들어갈 때 각 루틴은 NVRAM(96)내 일시중지 플래그를 세트 또는 클리어한다. 일시중지 플래그가 NVRAM(96)내에 세트되면, 컴퓨터 시스템(10)은 일시중지 상태(154)에 놓이고, 컴퓨터 시스템(10)의 상태는 고정 디스크 저장 장치(31)에 저장된다. 다른 한편, NVRAM(96)내 일시중지 플래그가 클리어 되면, 컴퓨터 시스템(10)은 오프 상태(156)에 놓이고, 컴퓨터 시스템(10)의 상태는 고정 디스크 저장 장치(31)에 저장되지 않는다. 따라서, 일시중지 플래그가 NVRAM(96)내에 세트되면, 컴퓨터는 단계(204-210)에 도시된 바와 같이 정규 부팅 루틴을 실행한다. 단계(204)로 도시된 제 1 태스크는 파워-온 자기-테스트(Power-On Self-Test;POST)로서, 이후 제 11 도를 참조하여 보다 상세히 설명되며, 이러한 POST로부터 복귀한 후, CPU(40)는 단계(206)로 도시된 바와 같이 오퍼레이팅 시스템을 로드하기 위해 PBOOT 루틴을 호출한다.
PBOOT 루틴은 이후 설명되는 바와 같이 약간 변경된, IBM PS/2 컴퓨터상에서 실행되는 통상의 루틴이다. PBOOT는 어디서(하드 드라이브(31)로부터 또는 플로피 드라이브(27)내의 디스크로부터)부터 부팅할 것인지를 결정하고, 오퍼레이팅 시스템을 로딩하고, CONFIG.SYS 화일에 의해 지시되는 시스템 변경을 분석 및 실행하며, 마지막으로 오퍼레이팅 시스템에게 제어권을 복귀시키기 전에 AUTOEXEC.BAT 뱃치 화일을 실행한다. PBOOT 루틴은 당분야에 잘 공지되어 있다. 그러나 본 발명의 컴퓨터 시스템(10)에 고유한 기능으로서, 부팅 루틴은 오퍼레이팅 시스템내에 구축된 선진형 파워 관리(APM) 고급 프로그래밍 인터페이스(Advanced Programming Interface;API)와 통신한다. APM API는 인텔 및 마이크로소프트사에 의해 개발되었으며, 현재 다수의 오퍼레이팅 시스템, 예를 들어, IBM사의 OW/2, IBM사의 PC-DOS, 마이크로소프트사의 MS-DOS, 및 마이크로소프트사의 윈도우 등의 APM API를 수행한다. APM BIOS 부팅 루틴은 APM OS에게 감시 루틴의 존재를 알린다. 단계(210)에 도시된 바와 같이, 오퍼레이팅 시스템은 사용자에 의해 지시된 코드를 무한히 실행한다. 그러나 API에게 감시 루틴에 대해 통지한 결과, 단계(212)에 표시된 바와 같이 APM BIOS 및 APM OS가 감시 루틴을 실행중인 프로그램과 병렬(paralled)로 실행하게 된다. 즉, 시스템(10)이 시간다중화된 다중태스크 시스템이므로, APM 겟 이벤트, 따라서 감시 루틴은 주기적으로 실행된다. 결과적으로 감시 루틴은 거의 매초마다 실행된다. 이 감시 루틴은 제 9 도를 참조하여 충분히 설명된다. 정규 부팅 루틴(204-210)이 종료된 후, 컴퓨터 시스템(10)은 제 4 도를 참조하여 설명된 바와 같이 정규 동작 상태에 놓인다.
단계(202)를 다시 참조하면, 일시중지 플래그가 NVRAM(96) 내에 세트되면, 시스템 상태가 하드 드라이브(31)에 보존되고 컴퓨터 시스템(10)은 단계(214-220)에 도시된 바와 같은 재개시 부팅 루틴을 수행한다. 첫째, 시스템은 단계(214)에 표시된 바와 같이 단축 POST를 실행한다. 단축 POST는 제 11 도를 참조하여 이후 보다 상세히 설명된다. 단축 POST 후, 시스템은 단계(216)에 도시된 바와 같이 재개시 루틴을 호출한다. 재개시 루틴은 제 12 도를 참조하여 설명된다. 지금은 재개시 루틴이 컴퓨터 시스템(10)의 상태를 시스템(10)이 일시중지되기 전의 구성으로 복원시킨다고 말해두자. 단계(204-210)에 표시된 바와 같이 정규 부팅 루틴과 달리, 재개시 부팅 루틴은 APM API에게 감시 루틴의 존재를 알릴 필요가 없으며, 이것은, 시스템을 일시중지하기 위해 APM 루틴이 실행중일 것이고, 시스템 상태가 복원되면, APM은 메모리내로 다시 로딩되기 때문이다. 따라서, 단계(212) 및 (220)으로 도시된 바와 같이, 재개시 루틴이 시스템(10) 상태의 복원을 종료한 때, APM은 이미 존재하며 복원된 코드와 병렬로 실행중이다. 재개시 부팅 루틴(214-220)이 종료된 후, 컴퓨터 시스템(10)은 제 4 도를 참조하여 설명된 바와 같이 정규 동작 상태(150)에 놓인다. 따라서, 정규 부팅 루틴(204-210) 또는 재개시 부팅 루틴(214-220)이 실행된 후, 컴퓨터 시스템(10)은 정규 동작상태(150)에 놓인다.
제 9 도는 감시 루틴의 세부를 도시하는 흐름도로서, APM에 의해 겟 이벤트동안 대략 매초마다 호출된다. 상이한 오퍼레이팅 시스템은 상이한 빈도수로 겟 이벤트를 수행한다.
감시 루틴은 제 9 도의 단계(222)에서 시작한다. 이후의 설명은, 컴퓨터 시스템(10)이 정규 동작 상태(150)에서 시작함을 가정한다. 제 1 태스크는 단계(224)에서 사용자가 스위치(21)를 눌렀는지의 여부를 테스트하는 것이다. 스위치(21)는, 제 6 도 및 제 7 도를 참조하여 보다 상세히 설명된 바와 같이 파워 관리 포트의 바이트를 판독함으로써 테스트된다. 제 2 PAL(U2)이 스위치 상태 012에 있는 동안 판독한 경우, 파워 관리 포트는, 스위치(21)가 눌려지지 않은 경우 FFH를 복귀하고, 스위치가 눌려진 경우 FEH를 복귀한다.
단계(224)에서의 테스트 결과 사용자가 스위치(21)를 눌른 것으로 판정되면, 단계(226)에서 감시 루틴은 일시중지 요구 APM 복귀 코드을 세트한 후, 단계(228)에서 APM으로 복귀한다. 일시중지 요구 APM 복귀 코드 세트에 응답하여, APM은 임의의 필요한 시스템 태스크(예를 들면, 하드 디스크를 동기)를 수행한 후 일시중지 커맨드를 송출하여 APM BIOS 경로배정 루틴으로 하여금 일시중지 루틴을 호출하게 한다. 이 일시중지 루틴은 제 10 도를 참조하여 설명된다. 일시중지 루틴은 본질적으로 시스템(10)이 정규 동작 상태(150)으로부터 일시중지 상태(154)로 들어가게 하며, 몇 개의 인스트럭션(시스템이 일시중지할 준비가 안된 경우) 또는 몇 분, 몇 시간, 몇 일, 몇 주 또는 몇 년(시스템이 일시중지되고 재개시된 경우) 후 감시 루틴으로 제어를 복귀시킬 수 있다. 일시중지 루틴은, 일시중지 루틴이 일시중지 없이 복귀되었느냐 완전한 일시중지 및 재개시 후 복귀되었느냐에 관계없이 항상 정규 일시중지 APM 복귀 코드를 세트한다.
대부분의 경우, 스위치(21)는 눌려지지 않고, 감시 루틴은 단계(23)으로 진행하여 시스템이 이제 막 재개시되었는지의 여부를 체크한다. 일시중지 루틴이 호출되면, 일시중지 루틴이 일시중지 없이 복귀되었느냐 일시중지 및 재개시 완료 후 복귀되었느냐에 관계없이, 시스템은 이제 막 재개시된 것으로 간주한다. 단계(230)에서 재개시가 테스트되며, 시스템이 이제 막 재개시된 경우(또는 일시중지가 화일의 DMA 활동 등으로 인해 수행되지 않았던 경우), 단계(232)에서 정규 재개시 APM 복귀 코드가 세트되며, 단계(234)에서 APM으로 복귀된다. 이에 따라, APM OS 드라이버는 일시중지 동안 무효가 되었던 시스템 클럭 및 그 밖의 값을 갱신한다.
대개의 경우, 시스템(10)은 이제 막 재개시되지 않았으므로, 감시 루틴은 단계(136)로 진행하여 있을 수 있는 사용자 활동에 대해 테스트한다. 단계(236)에서 3가지 형태의 사용자 활동, 즉, 하드화일(31) 활동, 키보드(12) 활동 및 마우스(13) 활동이 테스트된다. APM 겟 이벤트시마다, 감시 루틴은 하드화일 헤드, 실린더 및 섹터에 대한 값을 판독하고, 마우스(13)가 마지막 송신한 바이트중 1바이트 값(수직 위치임)을 판독하며, 키보드 포트의 1바이트 값(최후의 눌려진 키)를 판독하고, 실시간 클럭(98)으로부터, 매시간의 시작시에 0분으로 복귀하는 0분 내지 59분 범위를 갖는 분 값을 판독한다. 5개의 활동 변수(헤드, 실린더, 섹터, 마우스 형태 및 키보드 바이트) 및 분 값은 일시적으로 저장된다. 그리고 나서, 이 5개의 활동 변수는 이전의 겟 이벤트시에 보존된 5개의 활동 변수에 비교된다. 5개의 현재 값이 이전의 겟 이벤트시에 얻어진 값과 동일하면, 사용자 활동은 없었던 것으로 판정된다. 이들 값이 상이하면, 사용자 활동이 있었으므로, 현재 활동 변수 값이 다음 겟 이벤트시에 판독된 값과의 비교를 위해 보존된다.
상기한 활동 검출 방법은 CPU상에서 루틴을 실행하는 것이다. 이와 달리, 활동은 또한 하드웨어 형식으로 모니터될 수 있다. 예를 들면, 16개의 하드웨어 인터럽트 라인이 활동에 대해 모니터될 수 있다.
활동이 있었던 경우, 다음으로 단계(238)에서 감시 루틴은 대기 플래글 테스트함으로써 컴퓨터 시스템(10)이 대기 상태(152)에 있는지의 여부를 판정한다. 대기 플래그가 세트되어 시스템(10)의 대기 상태(152)에 있음을 표시하면, 단계(240)에서 감시 루틴은 대기 상태(152)에서 빠져나와 정규 동작 상태(150)로 들어간다. 감시 루틴은, 대기 상태(152)가 시작되었을 때 파워 다운되었던 장치에 파워를 재공급함으로써 대기 상태(152)를 종료한다. 본 바람직한 실시예에서, 이것은, (1) 파워 관리 포트에 01H를 기입하여, 제 2 PAL(U2)을 012상태로 유지하면서 비디오 제어기(56)가 비디오 신호 발생을 개시하도록 하며, (2) 고정 디스크 제어기(86)에 적절한 값을 기입하여 하드 드라이브(31)내의 하드 디스크가 회전을 시작하게 하며, (3) 대기 플래그를 클리어하여 시스템(10)이 정규 동작 상태(150)임을 표시하는 것을 포함한다.
또한, 활동이 있었던 경우, 실시간 클럭(98)으로 부터의 분 값이 후속하는 겟 이벤트시에 판독된 분 값과의 비교를 위해 또한 보존된다.
현재의 분 값을 보존함으로써, 단계(241)에서 비활동 일시중지 타이머 및 비활동 대기 타이머가 사실상 리셋된다. 통상의 사용중에는 사용자 활동이 존재하게 되며, 감시 루틴은 단계(242)에서 이벤트 없음(No Event) APM 복귀 코드를 세트하고 단계(243)에서 APM 호출 코드로 복귀한다. 이러한 이벤트 없음 복귀 코드에 응답하여 APM은 더 이상 어떤 루틴도 호출하지 않는다.
단계(236)의 테스트 결과가 사용자 활동이 없었음을 표시하면, 다음으로, 감시 루틴은 제각기 단계(245) 및 (247)에서 비활동 대기 타이머 및 비활동 일시중지 타이머가 만료되었는지의 여부를 테스트한다. 시스템(10)이 대기 상태(152)에 있는 경우는 단계(244)에서 비활동 대기 타이머의 만료 여부가 체크되지 않고 생략된다.
2개의 타이머는, 보존된 분 값으로부터 현재 분 값을 감산하여 사용자 활동이 발생한 때로부터의 분 수에 대응하는 값을 획득하므로써 만료에 대해 검사된다. 이 값은 단계(247)에서 비활동 일시중지 타임아웃 값에 비교된다. 2개의 타임아웃 값은 사용자에 의해 선택가능하며 시스템이 결코 대기 상태(152)로 들어가지 않도록 또는 일시중지 상태(154)로 들어가지 않도록 또는 두 타이머 중 하나의 만료로 인해 대기 상태(152) 또는 일시중지 상태(154)로 들어가지 않도록 세트될 수 있다. 어느 하나의 타임아웃 값을 제로로 세트하는 것은 타이머가 결코 만료하지 않음을 표시한다.
최종 사용자 활동이 발생한 때로부터의 분 수가 비활동 대기 타임아웃 값보다 크거나 같은 경우, 감시 루틴은 단계(246)에서 시스템(10)을 대기 상태(152)로 들어가게 한다. 비활동 대기 타이머가 만료되지 않은 경우, 다음으로 감시 루틴은 단계(247)에서 비활동 일시중지 타이머가 만료했는지의 여부를 체크한다. 다른 한편, 비활동 대기 타이머가 만료했으면, 다음으로, 감시 루틴은 특정 구성요소를 그들 제각기의 저파워 모드가 되게 함으로써 시스템(10)을 대기 상태(152)로 들어가게 한다. 본 바람직한 실시예에서, 이것은 (1) 파워 관리 포트에 05H를 기입하여 제 2 PAL(U2)이 012상태에 있는 동안 비디오 제어기(56)가 비디오 신호를 발생하는 것을 중지하게 하며, (2) 고정 디스크 제어기(86)에 적절한 값을 기입하여 하드 드라이브(31)를 저파워 모드로 들어가게 하며(하드 드라이브내의 하드 디스크가 회전하는 것을 중지함), (3) 대기 플래그를 세트하여 시스템(10)이 대기 상태(152)에 있음을 표시하는 것을 포함한다. 요약하면, 본 바람직한 실시예에서, 감시 루틴은 비디오 신호를 블랭크시키고, 하드 드라이브(31)내 하드 디스크의 회전을 저하시키고, 플래그를 세트하여 시스템(10)이 대기 상태(152)에 있음을 표시한다. 시스템(10)이 대기 상태(152)로 들어간 후, 감시 루틴은 단계(247)에서 비활동 일시중지 타이머가 만료하였는지의 여부를 테스트한다.
감시 루틴은 단계(247)에서 비활동 일시중지 타이머가 만료되었는지의 여부를 테스트한다. 최종 사용자 활동이 발생한 때로부터의 분수가 비활동 일시중지 타임아웃 값보다 크거나 같은 경우, 감시 루틴은 단계(248)에서 일시중지 요구 APM 복귀 코드를 세트한 후, 단계(243)에서 APM으로 복귀한다. 단계(226)를 참조하여 앞서 설명된 바와 같이, 일시중지 요구 APM 복귀 코드가 세트된 것에 응답하여, APM은 임의의 필요한 시스템 태스크를 수행한 후 일시중지 루틴을 호출한다. 감시 루틴은 제 10 도를 참조하여 보다 상세히 설명되며, 요약하면, 시스템(10)을 정규 동작 상태(150)로부터 일시중지 상태(154)로 들어가게 한다. 단계(226)를 참조하여 설명된 바와 같이, 감시 루틴은 시스템(10)을 일시중지시키거나 일시중지시키지 않고 감시 루틴으로 제어를 복귀시킬 수도 있다. 다른 한편, 비활동 일시중지 타이머가 만료되지 않은 경우, 감시 루틴은 단계(242)에서 이벤트 없음 APM 복귀 코드를 세트하고 단계(243)에서 APM 호출 코드로 복귀한다.
대부분의 경우, 이벤트 없음 APM 복귀 코드가 APM으로 복귀되지만, 다양한 다른 이벤트가 APM으로 복귀될 수도 있다. 그러나 각각의 APM 겟 이벤트에 대해 단지 하나의 APM 복귀 코드만이 지정될 수 있다. 예를 들면, 대기 상태(152)로 들어간 후에는 이벤트 없음 APM 복귀 코드가 APM으로 복귀된다. 일시중지 상태(154)를 종료한 후에는, 정규 일시중지 APM 복귀 코드가 APM으로 복귀된다. APM에 대해 큐잉된 특정 메시지는 정확히 컴퓨터 시스템의 성질에 의존하게 된다. 감시 루틴은 또한 정규 재개시 APM 복귀 코드 또는 일시 중지 요구 APM 복귀 코드를 복귀한다.
파워-업 및 재개시 루틴은 일시중지 루틴을 알면 가장 잘 이해된다. 그러므로 APM BIOS 루틴에 대한 설명은 다음과 같은 순서로 진행하는 것이 가장 바람직할 것으로 생각된다. 즉, 본 발명의 파워-업 루틴의 전반적 개관(앞서의 제 8 도 참조), 감시 루틴의 세부(제 9 도 참조), 본 발명의 일시중지 루틴의 세부(제 10 도 참조), 본 발명이 파워-업 처리의 세부(제 11 도 참조), 본 발명이 재개시 루틴의 세부(제 12 도 참조), CPU 상태 보존 루틴의 세부(제 13 도 참조), CPU 상태 복원 루틴의 세부(제 14 도 참조) 및 8259 상태 보존 루틴의 세부(제 15 도 참조)의 순서이다.
대부분의 루틴은 다른 루틴 및 일시중지/재개시 처리와 상호작용하므로, 본 발명에 따른 컴퓨터 시스템(10)에 대한 모든 설명은 연속하는 사이클이지만, 부팅 루틴(제 11 도 참조) 또는 재개시 루틴(제 12 도 참조)을 설명하기 전에 일시중지 루틴(제 10 도 참조)을 설명하는 것이 가장 유용할 것으로 생각된다. 이제 제 10 도를 참조하면, 일시중지 루틴의 흐름도가 도시된다. 정규 부팅 루틴(204-210) 또는 재개시 부팅 루틴(214-220)이 실행된 후 컴퓨터 시스템(10)이 정규 동작 상태(150)에 놓임을 상기하자. 더욱이, 제 8 도를 참조하여 앞서 설명된 바와 같이, 컴퓨터 시스템(10)이 정규 부팅(204-210) 되었는지 재개시 부팅(214-220) 되었는지에 관계없이, 어느 하나의 루틴이 종료한 후, APM OS 드라이버는 제 8 도에 도시된 감시 루틴과 같은 APM BIOS 루틴을 인식한다. 결과적으로, APM은 대략 매초마다 감시 루틴을 폴링한다.
일시중지 루틴은 제 10 도에 되시되며, 단계(250)에서 시작한다. 일시중지 루틴은 감시 루틴이 APM으로 일시중지 요구 APM 복귀 코드를 복귀하는 것에 응답하여 APM에 의해 호출된다. 우선, 단계(252)에 도시된 바와 같이 CPU 상태 보존 루틴이 호출된다. CPU 상태 보존 루틴은 제 13 도를 참조하여 설명된다. 지금은, 일시중지 루틴이 최초로 호출되었을 때 CPU(40)가 어떤 모드에 있든지, 일시중지 루틴의 나머지는 CPU(40)가 실 모드 상태에서 실행되며, 따라서 허용된 어드레스 공간밖의 인스트럭션을 실행하려고 시도함에 의해 또는 특권을 갖는 인스트럭션을 실행하려고 시도함에 의해 야기될 수 있는 어떤 에러를 발생할 염려없이 실행될 수 있다고 해두자.
단계(253)에서, CPU 상태 보존 루틴은 독특한 방식으로 프로그램 제어를 일시중지 루틴으로 복귀한다. CPU 상태 보존 루틴으로부터 일시중지 루틴으로의 복귀는 CPU를 리셋하는 것을 포함하며, 이후 제 13 도의 단계(630) 및 (632)를 참조하여 보다 상세히 설명된다. 일시중지 루틴에 대한 중요한 세부사항은 CPU 레지스터가 시그먼트 E000H 데이터 구조에 기입되었으며, CPU(40)가 현재 실 모드 상태라는 것이다.
다음으로, 일시중지 루틴은 단계(254)에서 스위치(21)가 눌려졌는지의 여부를 확인한다. 제 6 도 및 제 7 도를 참조하여 설명된 바와 같이 스위치(21)가 눌려졌는지가 테스트된다. 요약하면, 스위치(21)가 눌려져 있는 경우, 파워 관리 포트는 판독되었을 때 FEH를 복귀하게 된다. 스위치가 눌려져 있지 않은 경우는 FFH를 복귀하게 된다. 스위치(21)가 눌려져 있는 경우 실행중인 일시중지는 소프트웨어 일시중지이며, CMOS NVRAM(96)내에 소프트웨어 일시중지 플래그가 세트된다. 이것은 소프트웨어 일시중지가 스위치 누름에 의해 개시되는 하드웨어 일시중지와 혼동되지 않게 보장한다. 일시중지가 소프트웨어 일시중지인 경우, 다음 스위치 누름은 일시중지를 하드웨어 일시중지가 되게 한다. 소프트웨어 일시중지를 하드웨어 일시중지로 변환한 후, 다음 스위치 누름은 일시중지를 금지한다.
다음으로, 단계(260)에서 BIOS ROM(88)이 언섀도우(unshadow)된다. BIOS ROM은 우선 C000H 및 D000H에 대한 ISA 액세스를 오프시킴으로써 언섀도우된다. 그리고 나서, BIOS 벡터는 시그먼트 C000H및 D000H을 포인팅하는 것으로부터 ROM(88)을 포인팅하는 것으로 변화된다. 다음 태스크는 단계(262)에 표시된 바와 같이 시그먼트 C000H내의 스택을 셋업하는 것이다.
스택이 셋업된 후, 감시 루틴은 단계(264)에서 어떤 DMA 전송, 플로피 디스크 전송 또는 하드화일 전송이 현재 수행중인지의 여부를 체크하기 위해 제각기 DMA 제어기(72), 디스켓 어댑터(84) 및 IDE 디스크 제어기(86)를 조사한다. 수행중이면, 이들 3가지 형태의 전송에 특유한 특성이 만족스러운 일시중지가 수행되는 것을 방해하므로, 일시중지는 이루어질 수 없다. 예를 들어, 하드 드라이브(31)로부터 하드화일 전송이 수행중이면, 데이터는 이미 IDE 제어기에 의해 판독되었지만, 시스템 메모리(53)로 아직 전송되지 않았다. 이 데이터는 CPU에 의해 충분히 액세스될 수 없으므로, 하드화일 판독중에 시스템이 일시중지되면 이 데이터가 손실된다. 따라서, 이들 3가지 형태의 전송중 어느 것이 수행중인 경우는 다음 APM 겟 이벤트에서 DMA 및 디스켓 제어기가 한 번 더 활동에대해 테스트될 때까지 일시중지는 연기된다.
결과적으로, 단계(252, 260, 262)에서 수행된 태스크는 제어를 APM에 복귀시킬수 있도록 반전되어야 한다. 우선, 단계(265)에 도시된 바와 같이, BIOS가 판독/기입으로부터 판독 전용으로 변경된다. 이것은 여전히 섀도우된 데이터를 포함하고 있는 시그먼트 C000H 및 D000H를 폐쇄함으로써 성취된다. 그리고 나서, 이들 두 시그먼트에 대한 ISA 액세스가 다시 온된다. 단계(262)에서 생성된 스택이 팝(pop)되어 복원된다. 마지막으로, 단계(266)에서 CPU 상태가 CPU 상태 복원 루틴에 의해 복원된 후, 단계(267)에서 APM으로 제어가 복귀된다. 일시중지 루틴은 APM에 의해 다음 겟 이벤트동안 대략 다른 때에 풀링된다. 이 때까지 일시중지를 방해하였던 전송은 아마도 완료되어 일시중지가 속행할 수 있게 된다.
단계(264)를 다시 참조하여, 어떠한 DMA 전송, 플로피 드라이브 전송 또는 하드화일 전송도 현재 수행중이 아닌 경우는 일시중지가 수행될 수 있다. 단계(268)에서 일시중지 루틴이 속행한다. 파워 버튼(21)이 눌려질 때 안전보장 타이머가 인에이블됨을 상기하자. 그러므로, 제 1 태스크는 단계(268)에 도시된 바와 같이 제 6 도를 참조하여 설명된 안전보장 타이머를 리셋하는 것이다. 안전보장 타이머는 제 6 도 및 7 도를 참조하여 보다 상세히 설명되는 바와 같이, 파워 관리 포트에 0X112를 기입하므로써 리셋된다. 이에 의해 제 2 PAL(U2)(제 6 도 참조)의 핀19가 저항(R4)을 통해 캐패시터(C2)에 상승되는 어떤 전압을 방출함으로써, 캐패시터(C2)에 축적된 대략 2.7VDC의 전압의 트랜지스터(Q1)를 도전시키는 것을 방지한다. 제 6 도 및 7 도를 참조하여 보다 상세히 설명된 바와 같이, 트랜지스터(Q1)가 도전하면, 제 2 PAL(U2)의 핀11이 논리 제로에 풀링되고, 제 2 PAL(U2)내의 회로가 핀12를 통해 논리 1을 출력하여, 파워 서플라이(17)가 컴퓨터 시스템(10)에 조정된 파워를 공급하는 것을 중지함을 상기하자. 따라서, 캐패시터(C2)는 일시중지중에 파워가 제거되는 것을 방지하기 위해 일시중지 루틴에 의해 적어도 대략 매 10초마다 방전되어야 한다.
다음으로, 단계(270)에서 8042 코프로세서(104)의 상태가 보존된다. 8042 코프로세서(104) 레지스터는 당분야에 잘 공지되어 있다. 이들 레지스터는 CPU(40)에 의해 직접 판독가능하며, 그들의 값은 D000H 내의 데이터 구조내에 직접 기입된다.
다음으로, 단계(272)에서 8259 인터럽트 제어기(92)의 상태가 보존된다. 일시중지 루틴은 8259 상태 보존 루틴을 호출하며, 이에 관하여는 제 15 도를 참조하여 설명된다. 지금은, 8259 상태 보존 루틴이, 2개 8259 인터럽트 제어기(92)의 미지의 레지스터의 일부가 기입전용일지라도 그의 내용을 확인한다고만 해두자. 이들 레지스터의 값은 D000H의 데이터 구조내에 직접 기입된다.
인터럽트 제어기(92)의 상태가 보존된 후, 인터럽트 제어기(92)의 구성은 일시중지 루틴에 의해 실행되는 다양한 인터럽트-구동 태스크의 적절한 기능이 가능하도록 기지의 상태로 변경되어야 한다. 그러므로, 단계(274)에서 BIOS 데이터 영역 및 벡터 테이블이 스왑(swap)된다. 일시중지 루틴은 시그먼트 0000H 내의 현재 상태의 BIOS 데이터 영역 및 벡터 테이블의 내용을 시그먼트 D000H내의 위치에 카피한다. 다음으로, 기지 상태의 BIOS 데이터 영역 및 벡터 테이블의 내용이 시그먼트 D000H내의 데이터 구조로부터 시그먼트 0000H내의 위치로 카피된다. 기지 상태의 BIOS 데이터 영역 및 벡터 테이블은 제 11 도에 도시된 부트-업 루틴의 단계(414)에서 시그먼트 D000H로 카피되며 이후 설명된다. 마지막으로, 현재 상태의 BIOS 데이터 영역 및 벡터 테이블은 시그먼트 0000H로부터 시그먼트 D000H내의 데이터 구조로 카피된다. 단계(274)에서 루틴이 종료되면, 인터럽트 13H(디스크 판독/기입) 및 인터럽트 10H(비디오 액세스)와 같은 모든 인터럽트는 기대된 대로 기능하게 된다.
다음으로, 단계(276)에서 타이머(102)의 상태가 보존된다. 타이머의 레지스터는 당분야에 잘 알려져 있다. 모든 레지스터는 CPU(40)에 의해 직접 판독가능하며, 그들의 값은 D000H내의 데이터 구조내에 직접 기입된다. 단계(276)에서 IDE 디스크 제어기(86)의 상태가 또한 보존된다. IDE 디스크 제어기(86) 레지스터는 당분야에 잘 알려져 있다. 이들 모든 레지스터는 CPU(40)에 의해 직접 판독가능하며, 그들의 값은 D000H내의 데이터 구조내로 직접 기입된다.
다음 단계는 하드 드라이브(31)상이 일시중지 화일에 기입된 시스템 메모리를 준비하는 것이다. 시스템 메모리는 시스템 RAM(53)(주 메모리와 임의의 확장 메모리를 포함함)과 비디오 메모리(58)를 포함한다. 이 때, RAM(53)의 일부는 외부 캐쉬(60)내에 위치할 수도 있다. 단계(628)에서 CPU 캐쉬가 플러쉬(flush)되며, 이에 관하여는 이후 제 13 도를 참조하여 설명된다. 따라서, 외부 캐쉬는 RAM(53)이 하드 드라이브(31)에 기입될 수 있기 전에 플러쉬되어야 한다. 따라서, 단계(286)에서 시스템 캐쉬(60)가 플러쉬된다. 플러슁이 완료된 후, RAM(53)은 CPU 캐쉬(41) 또는 시스템 캐쉬(60)에 어떤 남아 있는 메모리 데이터도 없이 완전하게 된다.
시스템(10)상에서 실행되는 코드에 의해 IDE 제어기(86)는 미지의 상태로 놓일 수 있다. 결과적으로, 다음 단계는 단계(292)에서 IDE 제어기(86)를 기지의 상태로 초기화시키는 것이다. 이것은 IDE 제어기(86)내의 레지스터에 직접 값을 기입함으로써 성취된다.
다음으로, 단계(294)에서 일시중지 화일은 하드 드라이브(31)내의 고정 디스크상에 위치되어야 한다. 일시중지 화일의 헤드, 섹터 및 실린더가 CMOS 메모리(96)내에 저장된다. 일단 일시중지 화일이 위치되면, 화일 사이즈 및 서명(signature)이 판독된다. 본 바람직한 실시예에서 서명은 일시중지 화일의 존재를 표시하는 임의 길이의 ASCII 코드이다. 이러한 서명의 다른 대안적인 구현이 가능하며, 예를 들면, 하드 화일 시스템상에서 무작위로 발견되는 확률이 매우 낮은 2진 스트링을 사용하는 것도 가능하다.
일시중지 화일에 대한 화일 사이즈 및 서명이 판독되면, 다음 단계는 단계(296)에서 서명 및 화일 사이즈가 올바른지를 확인하는 것이다. 서명이 틀리거나(다른 프로그램이 일시중지 화일을 변경하였을 수도 있음을 표시함) 화일 사이즈가 틀리면(일시중지 화일 사이즈가 변경되었음을 표시함), 단계(298)에서 일시중지 루틴은 치명적 일시중지 에러 루틴을 호출하며, 이것은 제 13 도의 단계(652)에서 시작한다. 사용자가 이러한 치명적 일시중지 에러 루틴을 빠져나오기 위해 스위치(17)를 누르면, 프로그램 제어는 단계(299)로부터 단계(506)로 점프한다.
다른 한편, 서명이 올바르고, 일시중지 화일이 충분히 크면, 일시중지 루틴은 컴퓨터 시스템의 상태를 메모리에 기입하는 것으로 진행할 수 있다.
컴퓨터 시스템(10)의 상태를 하드 드라이브(31)에 기입하기 전에, 단계(297)에서 안전보장 타이머(C2)가 리셋되며, 스위치(21)가 다시 한번 눌려졌는지의 여부를 검출하기 위해 테스트된다. 제 6 도 및 제 7 도를 참조하여 보다 상세히 설명된 바와 같이, 파워 관리 포트에 대한 판독 결과 FEH가 복귀되면, 스위치(21)는 다시 한번 눌려지지 않았으므로, 일시중지는 계속해야 한다. 다른 한편, 파워 관리 포트에 대한 판독 결과 FFH가 복귀되면, 스위치(21)가 눌려졌으므로 일시중지가 중단된다. 일시중지 루틴내의 몇몇 지점에서, 캐패시터(C2)가 방전되며, 스위치(21)가 눌려졌는지에 대해 테스트된다. 단계(297)는 단지 예시를 위한 것이다. 즉, 당분야에 통상의 지식을 가진 회로 설계자라면, 캐패시터(C2)의 방전 횟수 및 방전 시간을 결정할 수 있다. 일시중지 루틴은, 캐패시터(C2)가 파워 서플라이(17)을 오프시키기 전에 캐패시터(C2)가 방전됨으로써, 안전보장 타이머를 리셋시킬 것을 보장해야 한다. 마찬가지로, 스위치(21)가 때때로 체크되어야 한다. 스위치(21)가 다시 한번 눌려지면, 사용자가 일시중지를 중단하기를 원함을 표시하므로, 코드는 재개시 루틴의 적절한 지점으로 점프하여 일시중지 루틴에 의해 이전에 일시중지되었던 것을 일시중지 해제해야 한다.
마찬가지로, 단계(350)에서 Ctrl-Alt-Del은 일시중지를 중단시킨다. Ctrl-Alt-Del을 누르는 것은 IBM BIOS 및 인텔 80X86 계열 CPU에 기초한 전형적인 컴퓨터 시스템을 리셋시키는 잘 알려진 방법이다. 컴퓨터 시스템(10)은, 당분야에 잘 알려진 바와 같이, Ctrl-Alt-Del을 BIOS 인터럽트1 핸들러에 의해 처리한다. 단계(350)에서 컴퓨터 시스템(10)은 약간 수정된 인터럽트1 핸들러를 구비하며, 단계(352)에서 인터럽트1 핸들러는 CMOS 메모리(96)내의 일시중지 플래그를 클리어하고, 단계(354)에서 리셋시의 부트-업 루틴으로 점프한다.
본 발명의 컴퓨터 시스템(10)에서, 일시중지 루틴의 실행중에 Ctrl-Alt-Del을 누르면, 컴퓨터 시스템이 오프 상태(156)로 들어간다. 이것은, 스위치(21)가 눌려진 후 제 2 PAL(U2)이 스위치 상태 102에 놓이고, Ctrl-Alt-Del을 누르면 부트-업 루틴이 호출되며, 이 부트-업 루틴은 제 2 PAL(U2)을 기지의 상태로 하기 위해 파워 관리 포트에 00H를 기입하므로, 발생한다. 그러나 제 2 PAL(U2)이 스위치 상태 102에 있는 동안 제 2 PAL(U2)에 00H를 기입하면, 제 6 도 및 제 7 도를 참조하여 설명된 바와 같이 파워 서플라이(17)는 시스템 파워 공급을 중단하게 된다. 따라서, 일시중지 루틴동안 Ctrl-Alt-Del을 누르면, 컴퓨터 시스템(10)이 오프 상태(156)로 들어간다.
이제 단계(300)를 참조하면, 일시중지 화일이 또한 하드 드라이브(31)상에 위치되며, 서명 문구가 일시중지 화일의 첫번째 바이트에 기입된다. 다음으로, 단계(302)에서 시그먼트 D000H내의 전체 64킬로바이트의 데이터가 일시중지 화일에 기입된다. 이 D000H의 64K 카피는 실제로는 단지 플레이스 홀더(a place holder)에 불과하며, 일시중지 루틴의 종료시에 이와 동일한 위치에 재기입된다.
다음으로, 시스템 메모리가 일시중지 화일에 기입된다. 이것은, 시스템 메모리로부터 데이터를 판독하고, 압축하며, 시그먼트 C000H에 기입한 후, 마지막으로 이 압축된 데이터를 시그먼트 C000H로부터 일시중지 화일에 기입하는 2버퍼 시스템에 의해 성취된다. 2개의 루틴이 시간 다중화된 구성으로 동작한다. 즉, 하나의 루틴은 데이터를 압축하고 시그먼트 C000H에 기입하며, 다른 루틴은 일시중지 화일에 기입한다. 전자는 포그라운드(foreground)에서 실행되며, 후자는 백그라운드(background)에서 실해오디는 인터럽트-구동 루틴이다. 단지 하나의 CPU(40)만이 존재하므로, 소정의 주어진 시간에 단지 하나의 루틴만이 실행될 수 있음이 분명하지만, 후자는 인터럽트-구동형 이므로, 일시중지 화일로의 데이터 전송 속도를 최적화하는데 필요할 경우 전자 루틴의 실행을 인터럽트할 수 있다. 각각의 두 버퍼는 8킬로바이트 길이이며, 하드 드라이브(31)로의 전송 시간을 최적화할 것으로 생각된다.
이 처리는 단계(304)에서, 8K의 제 1 버퍼를 채우기에 충분한 데이터를 판독하고, 압축하여 시그먼트 C000H에 기입함으로써 시작한다. 데이터는 실행 길이 코드화 방식(run length encoding method)을 사용하여 압축되며, 임의의 적절한 압축 방식이 사용될 수 있다. 이 때, 참조부호(307)로 전반적으로 표시된 버퍼로부터의 기입(Write from Buffer) 루틴이 단계(306)에서 개시된다. 이 버퍼로부터의 기입 루틴(307)은 백그라운드에서 실행되는 인터럽트-구동 루틴으로서 단계(308-310)로 이루어진다. 전반적으로, 참조부호(311)로 표시된 압축 루틴은 단계(312-328)로 이루어지며, 포그라운드 루틴이다. 우선, 단계(308)에서, 버퍼로부터의 기입 루틴(307)에 의해 단계(304)에서 이제 막 채워진 버퍼가 일시중지 화일에 기입하는 동안, 단계(312)에서 압축 루틴(311)은 계속해서 시스템 메모리로부터 다음 바이트를 판독하고, 그들을 압축하며, 압축된 데이터를 2개의 8K 버퍼중 다른 하나의 버퍼에 기입한다. 일단 압축 루틴(311)에 의해 버퍼가 압축된 데이터로 채워지면, 다음 단계(314)에서 전체 시스템 메모리가 이미 압축되었는지의 여부가 판단된다.
IDE 제어기(86)는 하드 드라이브(31)에 그다지 빨리 데이터를 기입할 수 없다. 결과적으로, 압축 루틴(311)은 항상, 버퍼로부터의 기입 루틴(307)이 하드 드라이브(31)에 버퍼를 기입하는 것을 종료하기 전에, 하드 드라이브(31)에 기입되지 않은 8K 버퍼를 채우는 것을 종료하게 된다. 따라서, 압축 루틴(311)은 버퍼로부터의 기입 루틴(307)이 버퍼를 하드 드라이브(31)에 기입하는 것을 종료하기를 기다려야 한다. 압축 루틴(311)이 모든 시스템 메모리의 압축 및 기입을 종료하지 않은 경우, 압축 루틴(311)은 단계(316)에서 버퍼로부터의 기입 루틴(307)이 종료하기를 기다린다. 압축 루틴(311) 및 버퍼로부터의 기입 루틴(307)은 플래그 세트(a set of flags)를 통해 통신한다. 버퍼로부터의 기입 루틴(307)이 현재의 버퍼를 일시중지 플래그에 기입하는 것을 종료하면, 루틴(307)은 다음으로 버퍼 플래그를 스위치하여 압축 루틴(311)에게 일시중지 화일에 이제 막 기입된 버퍼를 압축된 데이터로 채우는 것을 개시할 수 있음을 표시한다. 다음으로, 단계(297)를 참조하여 설명된 방식으로, 단계(309)에서 안전보장 타이머(C2)가 리셋되며, 스위치(21)가 눌러졌는지의 여부에 대해 체크된다.
그리고 나서, 버퍼로부터의 기입 루틴(307)은 단계(310)에서 이제 막 일시중지 화일에 기입된 버퍼가 기입되어야 할 최종 버퍼인지의 여부를 판정한다. 아니면, 버퍼로부터의 기입 루틴은 방금 압축 루틴(311)에 의해 채워진 버퍼를 일시중지 화일에 기입한다. 그동안, 압축 루틴(311)은 보다 많은 압축된 시스템 메모리를 위한 버퍼가 준비되어 있는지를 판정한다. 즉, 압축 루틴(311)은 단계(316)에서 버퍼로부터의 기입 루틴이 현재의 버퍼에 의해 종료되기를 기다리며, 종료되면 압축 루프는 단계(312)에서 계속된다. 이 때, 비디오 메모리(58)는 압축되지 않음에 유의해야 한다. 대신에, 비디오 메모리(58)는 VESA 호출을 사용하여 비디오 제어기(56)에 의해 판독되며, 앞서 보다 상세히 설명된 2버퍼 시스템을 사용하여 압축되지 않고 기입된다.
일단 압축 루틴(311)이 모든 시스템 메모리를 압축함으로써 종료되면, 단계(318)에서 버퍼로부터의 기입 루틴(307)이 최종 버퍼를 일시중지 화일에 기입하는 것을 종료하기를 기다린다. 일단 버퍼로부터의 기입 루틴(307)이 종료되면, 단계(310)로부터 단계(318)로 분기되어 중지하고 빠져나온다. 이 때, 어떤 백그라운드 루틴도 실행중이 아니며, 주 프로그램은 단계(320)에서 계속된다.
다음으로, 단계(320)에서 비디오 제어기(56)의 상태가 보존된다. 비디오 제어기(56) 레지스터는 당분야에 잘 알려져 있다. 이들 레지스터 모두는 CPU(40)에 의해 직접 판독가능하며, D000H내의 데이터 구조내로 직접 기입된다. 단계(320)에서는, 또한, DMA 유닛(71)(DMA 제어기(72) 및 중앙 중재기(82)), 8277 디스켓 제어기(84) 및 RS-232UART(94)의 상태가 보존된다. 이들 장치는 당분야에 잘 공지된 레지스터를 갖는다. 디스켓 제어기(84) 및 UART(94)내의 모든 레지스터는 CPU(40)에 의해 직접 판독가능하며, 그들의 값은 D000H내의 데이터 구조내로 직접 기입된다. DMA 유닛은 판독가능한 레지스터를 구비하지 않는다. 대신에, 통상 각각의 DMA 전송전에 기입전용 레지스터가 셋업된다. 이러한 이유로, 일시중지 루틴은 DMA 전송이 수행중인 경우 일시중지를 중지한다.
일단 컴퓨터 시스템(10)이 일시중지 상태(150)로 들어가면, 일시중지 화일에 대한 어떤 간섭을 검출할 수 있도록 하는 것이 바람직할 것으로 생각된다. 예를 들면, 무엇인가가 수정된 일시중지 화일을 발생하고, 이 수정된 일시중지 화일을 하드 드라이브(31)로 이동시켜 컴퓨터 시스템(10)을 보존된 것과 다른 상태로 복원하게 할 가능성이 있다. 이를 목적으로, 의사-무작위 값(a pseudo-random value)이 시그먼트 D000H 데이터 구조내에 놓여진다. 단계(328)에 도시된 바와 같이, 16비트 시간-스탬프(time-stamp)가 고속 타이머(102)중 하나로부터 판독된다. 그리고 나서, 이 시간-스탬프는 시그먼트 D000H 데이터 구조에 기입된다.
다음으로, 캐리 비트(carry bit)를 전혀 고려하지 않고 D000H내의 각각의 16비트 워드를 함께 가산함으로써 전체 D000H 시그먼트에 대한 16비트 첵섬(checksum)이 계산된다. 단계(330)에서, 이 첵섬은 시그먼트 D000H 데이터 구조에 기입되며, 단계(332)에서 CMOS NVRAM(96)에 기입된다. 그 후, 단계(334)에서 모든 작업 변수가 CPU(40)로부터 시그먼트 D000H 데이터 구조내에 기입되며, 단계(336)에서 전체 시그먼트 D000H가 일시중지 화일, 즉, 그의 서명 문구 뒤(서명 바로 뒤)에서 시작하여 재기입된다. 다음으로, 단계(338)에서 일시중지 플래그가 CMOS NVRAM(96)내에 세트되어, 시스템(10)에게 컴퓨터 시스템의 상태가 일시중지 화일에 보존되었음을 알린다.
마지막으로, CPU(40)는 파워 관리 포트에 X102를 기입하여, 제 2 PAL(U2)을 102 상태로 들어가게 함으로써 파워 서플라이를 오프시킨다. 제 2 PAL(U2)이 102상태로 들어가면, 그의 핀12가 논리 1을 송출하고, SR 래치의 출력 핀3이 논리 제로 상태로 래치되어 /ON이 저항(R6)에 의해 하이로 풀링되며, 파워 서플라이(17)의 1차/조정 유닛(172)이 ±5 및 ±12 라인을 따라 조정된 전압을 제공하는 것을 중지하게 함으로써 즉각적으로 파워 서플라이(17)가 오프된다. 전압이 대략 제로까지 램프 다운(ramp down)하는데는 수초가 걸리며, CPU(40)에 다수의 커맨드를 실행할 시간을 제공한다. 따라서, CPU(40)는 단계(342)에서, 파워 서플라이(17)에 의해 발생된 파워 전압이 감소하기를 기다리는 때에 CPU(40) 자체가 기능을 중지할 때까지 무한 루프(회전)를 실행한다.
이제 제 11 도를 참조하면, 부트-업 루틴의 세부가 도시된다. 부팅 처리는 제 8 도를 참조하여 전반적으로 설명되었다. 부트-업 루틴은, CPU(40)가 리셋 벡터에 의해 포인트되는 코드로 점프하여 실행하는 단계(380)에서 시작한다. 이것은, CPU(40)가 파워 업될 때 및 CPU(40)가 리셋 벡터에 의해 포인트되는 코드로 점프함으로써 리셋될 때 발생하며, 이러한 리셋 절차는 당분야에 잘 공지되어 있다.
첫번째 단계(382)는 CPU(40)를 테스트하여 메모리 제어기(46)를 초기화하는 것이다. CPU는 POST 루틴에 의해 테스트된다. 메모리 제어기(46)는 POST 루틴에 의해 초기화된다.
다음으로, 섀도우 메모리 테스트되며, BIOS가 ROM(88)으로부터 RAM(53)의 섀도우 메모리 부분으로 카피된다. 실행되는 코드의 흐름은 일시중지 플래그가 CMOS NVRAM(6)내에 세트되었는지의 여부에 의존한다. 일시중지 플래그가 세트되어 있으면, 컴퓨터 시스템(10)은 일시중지 중지(150)에 있으므로, 컴퓨터 시스템(10)이 일시중지되었던 때에 있었던 상태로 복원되어야 한다. 시그먼트 E000H 및 F000H내의 시스템 RAM(53)에는 단축 테스트가 행해진다. 컴퓨터가 재개시하는데 걸리는 시간을 감소시키기 위해, 메모리는 간단히 적절한 사이즈에 대해서만 체크되며, 제로화된다(각 위치에 000H가 기입됨).
다른 한편, CMOS NVRAM(96)내의 일시중지 플래그가 클리어 되면, 시그먼트 E000H 및 F000H 내의 시스템 RAM(53)에, (1) 스티키-비트 테스트(a sticky-bit test), (2) 더블-비트 메모리 테스트(a double-bit memory test) 및 (3) 크로스 어드레스 라인 테스트(a cressed address line stest)로 이루어지는 표준 인-뎁쓰 메모리 테스트(standard, in-depth memory test)가 행해진다.
시그먼트 E000H 및 F000H가 테스트된 후, BIOS가 섀도우될 수 있으며, 이는 ROM BIOS(88)의 내용을 시스템 RAM(53)에 카피하고 RAM으로부터 BIOS를 판독하여 실행하도록 메모리 제어기를 구성하는 것을 포함한다. BIOS를 섀도윙하는 것은 시스템의 속도를 증가시키기 위한 것으로, BIOS가 느린 ROM(88)(전형적인 액세스 시간은 250 나노초임)이 아니라, 보다 빠른 시스템 RAM(53)(전형적인 액세스 시간은 80 나노초임)으로부터 판독되어 실행되므로, 시스템 성능이 향상된다. BIOS를 섀도윙하는 것은 BIOS 카피어(copier)를 하부 메모리내의 어드레스에 로드하고, BIOS를 ROM(88)으로부터 시스템 RAM(53)의 시그먼트 E000H 및 F000H로 카피하며, 섀도우 RAM을 인에이블시키는 것을 포함한다.
다음으로, 단계(384)에서, 비디오 제어기(56)가 테스트 및 초기화되며, 비디오 메모리(58)가 테스트된다. 이들 테스트 및 초기화는 당분야에 잘 알려져 있다.
실행되는 코드의 흐름은, 단계(386)에서, 일시중지 플래그가 CMOS NVRAM(96)내에 세트되었는지의 여부에 의존한다. 일시중지 플래그가 세트되었으면, 단계(383)은 단계(383)와 마찬가지로 나머지 시스템 RAM(53)은 단지 사이즈에 대해서만 체크된 후, 제로화된다. 그러나 CMOS NVRAM(96)내의 일시중지 플래그가 클리어되었으면, 단계(398)에서, 앞서 단계(383)를 참조하여 설명된 3단계 인-뎁쓰 메모리 테스트를 사용하여 나머지 시스템 RAM(53)이 테스트된다.
메모리 테스트된 후, 단계(400)에서 보조 장치(8259, UART, 8042 및 다른 장치들을 포함함)가 테스트되고 초기화된다. 단계(408)에서 고정 디스크 제어기가 초기화된다.
단계(409)에서, 실행되는 코드는 일시중지 플래그가 CMOS NVRAM(96)내에 세트되었는지의 여부에 의존한다. 일시중지 플래그가 세트되어, 파워가 마지막으로 제거되었을 때 시스템의 상태가 성공적으로 보존되었음을 표시하면, 부트-업 루틴은 하드 드라이브 제어기(86) 및 하드 드라이브(31)의 테스트를 생략한다. 다른 한편, CMOS NVRAM(96)내의 일시중지 플래그가 클리어되어, 파워가 마지막으로 제거되었을 때 시스템의 상태가 보존되지 않았음을 표시하는 경우, 부트-업 루틴은 당분야에 잘 알려진 바와 같이 단계(410)에서 고정 디스크 제어기(86) 및 하드 드라이브(31)의 완전한 테스트를 수행한다.
다음으로,단계(412)에서 플로피 드라이브 제어기가 테스트되고 초기화된다.
이 시점에서, 모든 장치가 초기화되며, 벡터는 기지의 위치를 포인트하여 모든 인터럽트 루틴은 기대된 대로 동작하게 된다. 따라서, 부트-업 루틴은 단계(414)에서 BIOS 데이터 영역 및 벡터 테이블의 카피를 시그먼트 D000H내의 데이터 구조에 기입함으로써, BIOS 데이터 영역 및 벡터 테이블을 스냅샷한다. 이러한 BIOS 데이터 영역 및 벡터 테이블의 카피는 단계(274)에서 일시중지 루틴에 의해 사용되어 컴퓨터 시스템(10)을 기지 상태로 하여 모든 인터럽트가 기대된 대로 동작한다.
다음으로, 단계(416)에서, 있을 수 있는 BIOS 확장기능에 대해 당분야에 잘 알려진 바와 같이 조사(scanned in)되고 초기화된다. BIOS 확장기능은 네트워크 어댑터와 같은 주변 어댑터에 의해 시스템에 추가된 BIOS 코드의 블럭이다. BIOS 확장기능은 통상 ISA 버스(76)상의 시그먼트 C000H 및 D000H에 위치되며, BIOS 확장기능을 식별하기 위한 연관된 서명을 갖는다. BIOS 확장기능이 검출되면, 길이가 체크되고 첵섬이 계산 및 체크된다. 서명, 길이 및 첵섬이 모두 유효 BIOS 확장기능의 존재를 표시하면, 프로그램 제어는 서명으로부터 3바이트 앞에 위치된 인스트럭션으로 보내져, BIOS 확장기능은 주변 어댑터의 초기화와 같은 임의의 필요한 태스크를 수행할 수 있다. 일단 확장기능이 실행을 종료하면, 제어는 부트-업 루틴으로 복귀되며, 또 다른 BIOS 확장기능에 대해 탐색한다. 어떤 더 이상의 BIOS 확장 기능도 앞서의 BIOS 확장기능과 마찬가지로 처리된다. 더 이상의 BIOS 확장기능이 검출되지 않으면, 부트-업 루틴은 단계(417)로 진행한다.
단계(417)에서, 부트-업 루틴은 일시중지 화일을 위해 특별히 할당된 부분으로 보이는 하드 드라이브(31)상의 구역을 탐색한다. 분할 테이블내에 PS/1 식별자(FE)를 갖는 구역이 발견되고, 이 구역이 본 특정 시스템용 일시중지 화일을 수용하기에 충분히 크면, 이 구역은 일시중지 화일용으로 결정된다. 결과적으로, 일시중지 화일이 당분야에 잘 알려진 바와 같이 화일 할당 테이블(File Allocation Table;FAT)내에 할당되고, 일시중지 화일 서명이 이 화일의 제 1 바이트에 기입되며, 이 화일의 개시 헤드, 섹터 및 실린더는 CMOS NVRAM(96)에 기입된다.
단계(418)에서, 실행되는 코드의 흐름은 CMOS NVRAM(96)내의 일시중지 플래그가 세트되었는지의 여부에 따라 분기한다. 일시중지 플래그가 클리어되었으면, 단계(420)에서, 부트-업 루틴은 PBOOT 루틴으로 제어를 넘긴다. PBOOT는 당분야에 잘 알려져 있으며, 플로피 디스크 또는 하드 드라이브(31)로부터 오퍼레이팅 시스템(OS) 및 커멘드 인터프리터(command interpreter)를 로딩할 책임이 있다. 본 발명의 정규 부팅 루틴은, OS가 로딩될 때, 단계(417)에서 일시중지 화일에 대한 구역이 발견되지 않았을 경우, OS가, FAT내에 연속적인 섹터의 화일을 할당(필요에 따라 영역을 디프래그멘팅함)하는 OS-특정 드라이버를 실행하고, 일시중지 화일의 제 1 바이트에 서명을 기입하고, CMOS NVRAM(96)에 일시중지 화일의 개시 헤드, 섹터 및 실린더를 기입한다는 점에서 약간 변경된다.
일시중지 화일이 언제 할당되었는냐에 관계없이, 제각기, 일시중지 및 재개시동안 디스크로의 신속한 기입 및 디스크로부터의 신속한 판독이 가능하도록 FAT내 영역의 섹터는 연속적이어야 한다.
다음으로, PBOOT는 CONFIG.SYS 화일내에 발견되는 인스트럭션에 기초하여 시스템을 구성한다. 마지막으로, PBOOT는 AUTOEXEC.BAT 화일로 실행 제어를 전달하며, 결국 실행 제어는 오퍼레이팅 시스템으로 전달된다. CMOS NMRAM(96)내의 일시중지 플래그가 클리어되어, 파워가 마지막으로 제거되었을 때 시스템의 상태가 보존되지 않았음을 표시하면,단계(421)를 참조하여 보다 상세히 설명되는 RESUME.EXE는 무시된다.
단계(418)를 다시 참조하여, CMOS NVRAM(96)내의 일시중지 플래그가 세트되어, 파워가 마지막으로 제거되었을 때 시스템의 상태가 보존되었음을 표시하면, 실행되는 코드의 흐름은 단계(419)에서 CMOS NVRAM(96)내에 재초기화 어댑터 플래그가 세트되었는지의 여부에 따라 분기한다. 재초기화 어댑터 플래그가 세트되었으면, 부트-업 루틴은 단계(421)에서, 제어를 PBOOT 루틴에게 넘긴다. 통상의 PBOOT 루틴과 마찬가지로, 본 발명의 PBOOT도 CONFIG.SYS 및 AUTOEXEC.BAT 화일에 발견되는 커맨드에 따라 시스템을 구성하며, 이들 화일은 특히, 당분야에 잘 알려진 바와 같이 드라이버를 로딩하고 시스템을 구성한다.
CONFIG.SYS 및 AUTOEXEC.BAT 화일내의 커맨드는 시스템 내의 어댑터 카드를 초기화할 수 있다. 이러한 응용은 다음과 같은 3가지 형태의 어댑터 카드가 존재한다고 가정한다. 즉, 형태Ⅰ 어댑터는 초기화를 요하지 않으며, 형태Ⅱ 어댑터는 초기화를 요하지만 BIOS 확장 기능 또는 CONFIG.SYS 또는 AUTOEXEC.BAT 화일에 따라 로드된 드라이버에 의해 기지의 작업 상태로 되며, 형태Ⅲ 어댑터는 시스템상에서 실행되는 코드에 의해 수정된다. 형태Ⅰ 및 형태Ⅱ 어댑터를 포함하는 시스템은 일시중지되고 복원될 수 있으나, 형태Ⅲ 어댑터를 포함하는 시스템은, 다수의 네트워크형 어댑터를 포함하므로, 이들 어댑터 카드가 에러로부터 회복하기 위한 루틴을 갖지 않는 한 복원될 수 없다. 시스템은 에러로부터 회복한 형태Ⅲ 카드를 일시중지할 수 있다.
본 바람직한 실시예에서 RESUME.EXE 화일은 AUTOEXEC.BAT 화일에 추가되며, 프로그램 제어를 PBOOT로부터 재개시 루틴으로 전달할 책임이 있다. 단계(420)에서 PBOOT는 RESUME.EXE의 존재를 무시하였지만, 단계(421)의 PBOOT는 RESUME.EXE를 실행하여, CONFIG.SYS 및 AUTOEXEC.BAT 로부터 PBOOT에 의해 로드된 장치 드라이버에 의한 형태Ⅲ 어댑터의 초기화가 종료한 후에 재개시 루틴으로 제어를 넘긴다.
단계(419)를 다시 참조하여, CMOS(96)내의 재초기화 어댑터 플래그가 클리어된 경우, 부트-업 루틴은 단계(422)에서 CONFIG.SYS 및 AUTOEXEC.BAT 를 처리하지 않고 실행 제어를 재개시 루틴으로 직접 넘긴다. 재개시 루틴은 하드 드라이브상의 일시중지 화일로부터 시스템 상태를 복원하며, 제 12 도를 참조하여 상세히 설명된다.
이제 제 12 도를 참조하면, 재개시 루틴의 세부사항이 단계(450) 내지 단계(530)로 도시된다. 구성처리동안 BIOS 데이터 영역 벡터 테이블은 아마도 미지 상태로 변경된다. 따라서, 기본적인 BIOS 루틴은 기대된대로 기능할 수도 또는 기능하지 않을 수도 있다. 결과적으로, 재기시 루틴은 단계(454)에서 시그먼트 D000H를 판독/기입으로서 인에이블시키고, 단계(456)에서 스왑 BIOS 데이터 영역 및 벡터 테이블 루틴을 호출한다. 이 루틴은, 단계(414)에서 시그먼트 D000H에 카피된 기지의 양호한 BIOS 데이터 영역 및 벡터 테이블을, 시스먼트 0000H내의 현재 액티브인 수정된 BIOS 데이터 영역 및 벡터 테이블로 스왑한다. 이 루틴이 종료하면, 기지의 BIOS 데이터 영역 및 벡터 테이블은 시그먼트 0000H에서 액티브되고, 수정된 BIOS 데이터 영역 및 벡터 테이블은 시그먼트 D000H에 위치되어, BIOS 루틴은 기대된 대로 기능한다.
다음으로, 재개시 루틴은 단계(458)에서 키보드 및 하드 드라이브를 지원하는 것을 제외한 모든 인터럽트를 디시에이블시킨다. 그리고 나서, 재기시 루틴은 단계(460)에서 일시중지 화일을 하드 드라이브(31)상에 위치시키고, 화일 사이즈 및 서명을 판독하며, 여기서 서명은 앞서 설명된 바와 같이 일시중지 화일용 다중바이트 식별자이다. 단계(462)에서 실행되는 코드의 흐름은 일시중지 화일이 올바른 사이즈 및 서명을 갖는지의 여부에 의존한다. 일시중지 화일이 올바른 사이즈 및 서명을 갖지 않으면, 재개시 루틴은 단계(464)에서 CMOS 메모리(96)내의 일시중지 플래그를 클리어하고, 단계(466)에서 프로그램 제어를 리셋 벡터에 의해 포인트되는 위치의 코드로 전달하며, 이에 의해 시스템은 일시중지된 적이 없었던 것처럼 부팅된다. 다른 한편, 일시중지 화일이 올바른 사이즈 및 서명을 갖는 경우, 재개시 루틴은 단계(468)에서 일시중지 화일내의 서명 이후에 위치된 64K 블럭(시그먼트 D000H 정보에 대응하는 일시중지 화일의 부분)을 C000H로 판독함으로써 시스템 재개시를 계속한다.
다음으로, 단계(470)에서 C000H내의 블럭에 대한 첵섬이 계산되고, 단계(472)에서 이전에 저장된 첵섬이 CMOS 비휘발성 메모리(96)로부터 판독되며, 실행되는 코드의 흐름은 단계(474)에서 단계(470)에서 계산된 첵섬이 단계(330)에서 계산된 첵섬과 동일한지의 여부에 따라 분기한다. 단계(470)에서 계산된 첵섬이 단계(330)에서 계산된 첵섬과 동일하지 않은 경우, 일시중지 화일이 다소 결함이 있으므로(예를 들면, 간섭을 받았을 수도 있음), 단계(464)로 제어를 전달하여 단계(464) 및 (466)을 참조하여 설명된 바와 같이 일시중지 플래그를 클리어하고 시스템을 리셋한다. 단계(470)에서 계산된 첵섬이 단계(330)에서 계산된 첵섬과 동일한 경우, 일시중지 화일은 일시중지 루틴에 의해 기입된 것과 동일한 것으로 간주되고, 단계(476)에서 시그먼트 C000H내의 데이터가 시그먼트 D000H에 카피된다. C000H 데이터가 D000H에 카피될 때, 수정된 BIOS 데이터 영역 및 벡터 테이블도 겹쳐기입되므로 회복불가능하다.
이제 단계(478)에서 재개시 루틴은 사용자에게 시스템이 복원되었으며, 사용자가 재개시를 중지하려면 Ctrl-Alt-Del을 눌러야 함을 알리는 특정의 신호 스크린을 스크린에 기입한다. 일시중지 루틴의 경우처럼, Ctrl-Alt-Del을 누르면, 단계(526)에서 일시중지 플래그가 클리어되고, 단계(528)에서 시스템이 재부팅된다. 그러나 재부팅시에 제 2 PAL(U2)은 스위치 상태 012에 놓이므로, 파워 관리 포트에 X00H를 기입하여도 파워 서플라이(17)가 시스템 파워를 공급하는 것을 중지하지 않는다. 따라서, Ctrl-Alt-Del이 눌려지고 재개시 루틴이 실행중일 때 시스템은 정규 부팅한다.
다음으로, 제각기 단계(480, 482, 484)에서 8277 디스켓 제어기(84), DMA 유닛(71) 및 UART(94)가 그들의 제각기의 레지스터에 기입함으로써 복원된다.
그리고 나서, 단계(486) 내지 (500)에서, 일시중지 루틴의 단계(304) 내지 (318)을 참조하여 설명된 루틴과 유사하게 2개 버퍼 루틴을 사용하여 일시중지 화일로부터 복원된다. 이러한 2개 버퍼 시스템은 일시중지 화일로부터 압축된 데이터를 판독하여 시그먼트 C000H에 기입한후, 압축해제하여 시스템 메모리에 기입한다. 2개의 루틴이 시간다중화된 구성으로 동작하며, 하나의 루틴은 일시중지 화일로부터 데이터를 판독하여 시그먼트 C000H에 기입하며, 다른 하나의 루틴은 이 데이터를 압축해제하여 압축해제된 데이터를 시스템 메모리에 기입한다. 후자는 포그라운드에서 실행되며, 전자는 백그라운드에서 실행되는 인터럽트-구동 루틴이다. 하나의 CPU(40)만이 존재하므로, 소정의 주어진 시간에 단지 하나의 루틴만이 실행될 수 있음이 분명하지만, 전자의 루틴이 인터럽트-구동형이므로, 일시중지 화일로부터의 데이터 전송 속도를 최적화하기 위해 필요한 경우 전자의 루틴 실행을 인터럽트할 수 있다. 이들 두 버퍼의 각각은 8킬로바이트 길이이며, 이 길이는 전송 시간을 최적화할 것으로 생각된다.
이 처리는 단계(486)에서 일시중지 화일로부터 8K의 제 1 버퍼를 채우기에 충분한 데이터를 판독하여 시그먼트 C000H에 기입함으로써 시작된다. 이 때, 전반적으로 참조부호(489)로 표시된 버퍼로의 판독 루틴이 단계(490)에서 시작된다. 버퍼로의 판독 루틴(489)은 백그라운드에서 실행되는 인터럽트-구동 루틴이며, 단계(490-492)로 이루어진다. 전반적으로 참조부호(493)로 표시된 압축해제 루틴은 단계(494-498)로 이루어지며, 포그라운드 루틴이다. 우선, 단계(490)에서 버퍼로의 판독 루틴(489)은 일시중지 화일의 다음 8K를 판독하여 다른 버퍼, 지금은 현재 버퍼에 기입함으로써 시작한다. 버퍼로의 판독 루틴(489)이 일시중지 화일의 다음 8K를 판독하여 현재 버퍼에 기입하는 동안, 압축해제 루틴(493)은 단계(494)에서 단계(486)에 의해 채워진 버퍼를 판독하여 압축된 데이터를 압축해제한 후, 입축해제된 데이터를 시스템 메모리에 기입한다. 일단 압축해제 루틴(493)이 이 버퍼내의 모든 데이터를 압축해제하였으면, 다음 단계(496)는 전체 시스템 메모리가 이미 압축해제되었는지의 여부를 판정하는 것이다.
IDE 제어기(86)는 하드 드라이브(31)로부터 데이터를 그다지 빨리 판독할 수 없다. 결과적으로, 압축해제 루틴(493)은 항상, 버퍼로의 판독 루틴(489)이 하드 드리이브(31)로부터 현재 버퍼로 데이터를 판독하는 것을 종료하기 전에 하드 드라이브(31)에 기입되고 있지 않은 버퍼의 8K 데이터를 압축해제하는 것을 종료하게 된다. 따라서, 압축해제 루틴(493)은 버퍼로의 판독 루틴(489)이 하드 드라이브(31)로부터의 데이터 판독을 종료하기를 기다려야 한다. 압축해제 루틴(493)이 모든 시스템 메모리의 압축해제 및 기입을 종료하지 않았으며, 단계(498)에서 압축해제 루틴(493)은 버퍼로의 판독 루틴(489)이 종료하기를 기다려야 한다. 압축해제 루틴(493) 및 버퍼로의 판독 루틴(489)은 플래그 세트를 통해 통신한다. 버퍼로의 판독 루틴(489)이 일시중지 화일로부터 현재 버퍼로의 데이터 판독을 종료하면, 다음으로 루틴(489)은 단계(490)에서 버퍼 플래그를 스위치하여, 압축해제 루틴(493)에게 일시중지 화일로부터 방금 판독한 버퍼내의 데이터의 압축해제를 개시할 수도 있음을 표시한다. 그리고 나서, 버퍼로의 판독 루틴(489)은 단계(492)에서 일시중지 화일로부터 판독되어야 할 8K 블럭이 남았는지의 여부를 판정한다. 남아 있지 않으면, 버퍼로의 판독 루틴은 단계(502)에서 일시중지 화일로부터 남아있는 데이터를 판독하여 현재 버퍼에 기입한다. 그리고 나서, 버퍼로의 판독 루틴은 백그라운드에서 실행하는 것을 중지하고, 단계(500)에서 사실상 압축해제 루틴이 마지막 메모리를 압축해제하는 것을 종료하기를 기다린다.
그 동안, 압축해제 루틴(493)은 버퍼 플래그를 조사함으로써 버퍼가 압축해제되어 시스템 메모리에 기입될 준비가 되었는지의 여부를 판정한다. 즉, 압축해제 루틴은 단계(498)에서 현재 버퍼에 대한 버퍼로의 판독 루틴이 종료하기를 기다리며, 이 때 압축해제 루틴은 단계(494)에서 계속된다.
일단 압축해제 루틴(493)이 모든 시스템 메모리를 압축해제하는 것을 종료하면, 어떤 백그라운드 루틴도 실행되지 않고 나머지 프로그램은 단계(504)에서 계속된다.
다음으로, 단계(504, 506)에서 D000H 데이터 구조로부터의 값을 제각기의 레지스터에 기입함으로써 비디오 제어기(56) 및 IDE 제어기(86)가 복원된다. 그리고 나서, 단계(508)에서 CPU(40) 및 캐쉬 제어기(62)에 제각기 적절한 값을 기입함으로써 CPU 캐쉬(41) 및 시스템 캐쉬(60)가 인에이블된다. 다음으로, 재개시 루틴은 단계(510-514)에서 시그먼트 D000H 데이터 구조로부터의 값을 제각기의 장치내의 레지스터에 기입함으로써 타이머 제어기(102), 8042 키보드 인터페이스 마이크로프로세서(104) 및 8259 인터럽트 제어기(92)의 상태를 복원한다.
다음으로, 단계(516)에서 재개시 루틴은 스왑 BIOS 데이터 영역 및 벡터 테이블 루틴을 호출한다. 이 루틴이 호출되기 전에 기지의 BIOS 데이터 영역 및 벡터 테이블은 시그먼트 0000H내에 액티브되며, 일시중지 화일로부터 판독된 BIOS 데이터 영역 및 벡터 테이블은 시그먼트 D000H 데이터 구조내에 인액티브된다. 스왑 후, 기지의 BIOS 데이터 영역 및 벡터 테이블은 시그먼트 D000H내에 인액티브되며, 일시중지 루틴에 의해 보존되었던 BIOS 데이터 영역 및 벡터 테이블은 시그먼트 0000H내에 액티브된다.
마지막으로, 단계(518)에서 재개시 루틴은 CPU 복원 루틴으로 점프하여, CPU(40)를 일시중지되기 전에 상태로 복원한다. 이 CPU 복원 루틴은 제 14 도를 참조하여 보다 상세히 설명된다. CPU 복원 루틴은 결국 APM으로 실행 제어를 복귀시킨다.
최종적으로, CPU(40)는 복귀(RETURN) 인스트럭션을 실행하여 시스템을 APM으로 복귀시킨다. 시스템은 이제, 결코 실행중지되었던 적이 없었던 것처럼 코드 실행을 계속한다. 모든 실용적인 목적을 위해 시스템은 일시중지/재개시 처리절차에 의해 영향을 받지 않는다.
이제 제 13 도를 참조하면, CPU 상태 보존 루틴의 흐름도가 도시된다. 일시중지 루틴은 단계(600)에서 CPU 상태 보존 루틴으로 점프한다. APM은 이들 루틴이 실행하는 시그먼트 E000H 및 F000H를 판독/기입으로서 인에이블시켰음에 유의하자. 또한, APM에 의해 단계(602)에 표시된 바와 같이 E플래그 및 8개의 범용 레지스터가 보존되었다. CPU 상태 보존 루틴은 우선 DMA가 존재하는 경우 이 DMA가 종료하기를 기다리며, 단계(604)에서 마우스 13 데이터 패킷에 동기화되어, 이 루틴이 마우스 패킷의 전송간에 실행될 수 있게 보장한다. CMA를 종료시키고 마우스 패킷에 동기화시키는 단계는 다음과 같다. 즉, (1) 인터럽트를 인에이블시키고, (2) 어떤 DMA가 종료하기를 7㎳ 기다리며, (3) 인터럽트를 디스에이블시키고, (4) 마우스 패킷 경계를 5㎳간 기다리며, (5) 인터럽트 인에이블시키고, (6) 마우스 패킷이 도달하기를 5㎳ 이상 기다린 후, (7) 인터럽트를 인에이블시킨다. 이들 단계 후, 코드는 안전하게 마우스 패킷 전송간에 실해될 수 있다.
다음으로, 단계(606)에서 어드레스 라인20(I/O 포트 92H)의 상태가 스택에 푸쉬되며, 단계(608)에서 수치연산 코프로세서(44)의 상태가 스택에 푸쉬된다. 그리고 나서, 단계(610)에서, CPU가 제각기 32비트 모드로 실행중인지 또는 16비트 모드로 실행중인지를 표시하도록 플래그가 세트 또는 클리어된다.
그리고 나서, 실행되는 코드의 흐름은 단계(612)에서 CPU(40)가 보호 모드로 실행중인지의 여부에 따라 분기한다. CPU(40)가 보호 모드로 실행중이 아닌 경우는, 실 모드로 실행중임이 분명하므로, 레지스터는 아주 간단한 방식으로 보존될 수 있다. 우선, 단계(614)에서 머신 상태워드의 값과 CR3가 시그먼트 E000H 데이터 구조에 기입된다. 또한, TR 및 LDTR은 실 모드에서 제로이므로, 단계(614)에서, TR 및 LDTR에 대응하는 영역내의 시그먼트 E000H 데이터 구조내에 제로가 기입된다.
그리고 나서 코드는 단계(616)에서 공통의 코드 경로에 합류하여, GDTR 및 LDTR에 저장된 값이 시그먼트 E000H 데이터 구조에 기입된다. 다음으로, 실행되는 코드의 흐름은 단계(618)에서 CPU(40)가 가상의 8086 모드로 실행중인지의 여부에 따라 분기한다. CPU(40)가 가상의 8086 모드로 실행중이 아니면, 코드는 공통의 경로를 따라 단계(620)로 진행한 후, 단계(620)에서 레지스터(DR7, DR6, DR3, DR2, DR1, DR0)를 디버깅하여 스택에 푸쉬한다. 이들 레지스터는 디버거(debugger) 및 다른 루틴에 의해 사용된다. 그리고 나서, 단계(622)에서 DS, ES, FS 및 GS가 스택에 푸쉬된다. 다음으로, CS, SS 및 ESP 내의 값이 시그먼트 E000H 데이터 구조에 기입된다.
이 시점에서, 시그먼트 E000H 데이터 구조에 기입되어야 하는 모든 값이 기입되었으므로, 단계(626)에서 섀도우 RAM 시그먼트 E000H 및 F000H가 판독전용으로 다시 변경될 수 있다. 다음으로, CPU 캐쉬(41)는 단계(628)에서 되기입 및 캐쉬 무효화 커맨드(Write-Back and Invalidate Cache command)를 사용하여 플러쉬된다.
마지막으로, 단계(630)에서 독특한 셧다운 플래그(a unique Shutdown Flag)가 CMOS 비휘발성 메모리(96)내에 세트된다. 최종적으로, CPU 상태 보존 루틴은 단계(632)에서 사실상 일시중지 루틴으로 복귀한다. 이러한 복귀는 사실상 코드내의 리셋에 따른 분기이다. CPU(40)는 리셋 벡터에 의해 포인트되는 코드로 점프함으로써 리셋된다. CPU(40)를 리셋하는 것은 CPU를 실 모드로 들어가게 하는 것으로, 실 모드에서는 모든 장치 및 메모리 위치가 보호 오류를 발생할 염려없이 액세스될 수 있다. 이 시점 이후, CPU의 상태가 보존되었으며, 일시중지 루틴은 시스템의 나머지 상태를 보존해야 한다.
리셋 벡터에 의해 포인트되는 코드내에서 프로그램 제어는 셧다운 플래그가 CMOS(96)내에 세트되었는지의 여부에 따라 분기한다. 셧다운 플래그가 클리어된 경우, 시스템은 정규의 방식으로 부팅된다. 다른 한편, 셧다운 플래그가 세트된 경우, 코드는 나머지 일시중지 루틴으로 분기한다. 즉, 실행 제어는 일시중지 루틴내에서 제 10 도의 단계(253)로 점프하며, 일시중지 루틴은 시스템(10)의 일시중지를 종료한다. 따라서, CPU 상태 보존 루틴은 단계(632)에서 사실상 일시중지 루틴으로 복귀한다.
단계(612)를 다시 참조하여, CPU가 보호 모드에 있는 경우, 코드는 단계(634)에서 CPU가 가상의 8086 모드로 실행중인지의 여부에 따라 분기한다. CPU가 가상의 8086 모드로 실행중이 아니면, 코드는 단계(636)에서 현재 특권 레벨(current privilege level)이 제로인지의 여부에 따라 분기한다. 현재 특권이 제로가 아닌 어떤것이면, 적절한 특권이 없는 루틴이 CPU 상태 보존 루틴을 실행중이므로, 치명적 일시중지 에러 루틴(단계(652)에서 시작함)이 호출된다. 치명적 일시중지 에러 루틴은 이후 설명된다. 프로그램 제어가 치명적 일시중지 에러 루틴으로부터 복귀되면, CPU는 CPU 상태 보존 루틴이 호출되기 전의 상태로 복귀되어야 하므로, 프로그램 실행은 제 14 도의 단계(794)로 분기하여 CPU의 부분적 복권을 수행한다. CPU내의 아주 작은 부분밖에 수정되지 않았으므로 부분적 복원만이 필요하다.
단계(636)를 다시 참조하여, 호출중인 코드가 적절한 특권 레벨을 갖는 경우, 단계(642)에서 보존은 CR0, CR3, TR 및 LDTR내의 값이 시그먼트 E000H 데이터 구조에 보존됨으로서 속행된다. 이 코드 경로는 단계(616)에서 앞서 설명된 바와 같이 GDTR 및 LDTR 내의 값이 E000H 데이터 구조에 보존된다. 이제부터, 코드는 앞서 설명되었던 단계(618) 내지 단계(632)를 따르며, 결과적으로 나머지 일시중지 루틴 코드로 복귀(리셋 후 분기)한다.
단계(634)를 다시 참조하여, CPU(40)가 가상의 8086 모드로 실행중인 경우, 실행은 단계(644)에서 계속되며, 여기서 머신 상태 워드(CR0의 하위 16비트)의 값이 E000H 데이터 구조에 보존되고, 시그먼트 E000H 데이터 구조내의 플래그를 세트하여 CPU가 가상의 8086 모드로 실행중임을 표시한다. 그리고 나서, 이 코드는 전달 단계(646) 및 단계(648)를 통해 단계(616)에서 공통의 코드 경로에 합류한다. 단계(618)에서, CPU가 가상의 8086 모드로 실행중인 경우 제어는 단계(650)로 분기하여 DS, ES, FS 및 GS가 시그먼트 E000H 데이터 구조내에 보존된다. 이러한 코드는 단계(624)에서 공통의 코드와 다시 합류한다. 이제부터, 코드는 앞서 설명된 단계(624) 내지 단계(632)의 경로를 따르며, 결과적으로, 나머지 일시중지 루틴 코드로 복귀(리셋 후 분기)한다.
부적절한 특권 레벨을 갖는 코드가 CPU의 상태를 보존하려고 시도할 경우, 단계(638)에서 단계(652) 내지 단계(664)의 치명적 일시중지 에러 루틴이 검색되어 호출된다. 우선, 단계(654)에서 제 7 도를 참조하여 설명된 바와 같이 파워 관리 포트에 07H를 기입한 후, 05H를 기입함으로써 안전보장 타이머가 리셋된다. 그리고 나서, 단계(656)에서 스피커는 886㎐로 비프간 1/6초 간격으로 0.25초동안 3회 비프(beep)한다. 이러한 3회의 비프는 사용자에게 시도된 일시중지가 실행되지 않았음을 알린다. 비프 후, 단계(658)에서, 안전보장 타이머는 다시 리셋되며, 안전보장 타이머를 만료하고 파워 서플라이(17)를 셧 오프하기 전에 사용자에게 일정한 15 내지 18 초를 제공한다.
다음으로, 치명적 일시중지 에러 루틴은 단계(660, 662)에서 스위치(21)가 사용자에 의해 눌려졌는지, 즉, 사용자가 일시중지를 중단하기를 원하는지를 표시하는지의 여부를 반복적으로 체크한다. 스위치는 제 7 도를 참조하여 설명된 바와 같이 파워 관리 포트의 판독 결과 ffh가 나타나기를 기다림으로써 눌려짐에 대해 체크된다. 사용자가 버튼(21)을 누르면, 실행 제어는 앞서의 단계(640)으로 복귀한다. 사용자가 15 내지 18초 이내에 버튼(21)을 누르지 않으면, 안전보장 타이머가 만료되며 파워 서플라이(17)는 오프되어, 말할 필요도 없이 모든 코드의 실행이 중지하게 된다.
보호 모드이지만 가상의 8086 모드가 아닌 동안 프로세서(40)의 상태를 보존하는 다른 방법은 스택에 범용 레지스터를 보존하는 단계, 제어 레지스터를 보존하는 단계, (비지(busy)인 경우) 비지 태스크 선택기(busy task selector)를 수정하는 단계 및 프로세서를 보호 모드로부터 스위칭하는 단계를 포함한다. 그리고 나서, 시스템 상태를 보존하는 처리가 계속된다. CPU 상태를 복원할 경우, 처리는 이와 반대 순서로 이루어진다. 이러한 방법은 간단한 반면에, 가상의 8086 모드에서 코드를 실행중인 CPU(40)의 상태를 보존할 수 없다.
이제 제 14 도를 참조하면, CPU 상태 복원 루틴의 흐름도가 도시되며, 단계(700)에서 시작된다. 이 루틴은 나머지 하드웨어 및 메모리가 일시중지 전의 그들의 상태로 복원된 후 재개시 루틴에 의해 호출된다. 우선, 시그먼트 E000H 및 F000H가 아직 판독/기입으로 되어 있지 않은 경우, 단계(702)에서 이들을 판독/기입으로 되어야 한다.
다음으로, 실행되는 코드의 흐름은 단계(704)에서 시스템이 일시중지되었을 때 CPU(40)가 가상의 8086 모드로 실행중이었는지의 여부에 따라 분기한다. 시스템(10)이 일시중지되었을 때 CPU(40)가 가상의 8086 모드로 실행중이었던 경우, 가상의 8086 CPU에 고유한 단계(706) 내지 단계(728)의 코드가 실행된다. 그리고 나서, 코드는 단계(730) 내지 단계(748)의 공통 경로에 합류한다.
상태가 보존될 때 CPU가 가상의 8086 모드로 동작중인 경우, CR3, LDTR 및 TR은 CPU 상태 보존 루틴에 의해 액세스되어 E000H 데이터 구조에 보존될 수 없었다. 따라서, CR3, LDTR 및 TR은 제각기기 단계(706, 708, 710)에서 평가되어야 한다. 일반적으로, 이들 값은 CR3, LDTR 및 TR이 포인트하는 구조에 대해 시스템 RAM(53)을 탐색함으로써 평가된다. 예를 들면, GDT에서 LDT 엔트리를 발견함으로써 LDTR이 결정될 수 있다.
단계(706)에서 CR3이 평가된다. CR3는 페이지 디렉토리 베이스 레지스터(Page Directory Base Register;PDBR)를 유지하며, 이 레지스터는 페이지 디렉토리(page directory)의 페이지 프레임 어드레스(frame address)와, 페이지-레벨 케쉬 디스에이블(Page-Level Cache Disable;PCD) 비트와, 페이지-레벨 기입 쓰루(Page-Level Write Through;PWT) 비트를 유지한다. PDBR의 평가는, 페이지 디렉토리가 시스템 RAM(53)내의 4K 경계에서 시작해야 함을 알고, CPU 상태 보존 루틴에 의해 시그먼트 E000H 데이터 구조내에 보존된 IDTR 및 GDTR에 대한 값을 알고, BIOS 코드가 어드레서 공간 0E0000-0F0000으로부터 실행됨을 가정함으로써 행해진다. 이 가정은 BIOS 코드가 속도를 위해 섀도우 RAM내로 이미 섀도우되므로 합리적이다. 따라서, 오퍼레이팅 시스템이 BIOS 코드를 상이한 영역에 카피한 경우 CR3의 평가는 실패하게 된다.
앞서의 지식과 가정을 가지고, 물리적 메모리의 4K 페이지마다에서 BIOS 코드 시그먼트에 대응하는 페이지 변환 테이블의 존재에 대해 테스트된다. 즉, 0380H의 페이지로의 오프셋은 값 000E0XXX, 000E1XXX, 000E2XXX, . . . 000FFXXX를 포함하게 된다. 이 페이지가 위치되면, 시스템 RAM(53)은 앞서 위치된 페이지 테이블의 물리적 어드레스에 대응하는 제 1 엔트리를 갖는 페이지 디렉토리에 대해 탐색된다. 페이지 디렉토리의 물리적 어드레스는 PDBR의 적절한 평가(guess)값이다.
그리고 나서, 이 PDBR이 GDTR 및 IDTR에 대해 어드레스를 올바르게 변환하는지의 여부를 확인함으로써 가설적인 PDBR이 검증된다. 즉, PDBR이 GDTR의 선형 어드레스를 변환하는데 사용되며, GDT의 제 1 엔트리가 널(a null)(GDT의 첫번째 8바이트는 모든 CPU 모드에서 항상 00H임)인지가 검증된다. 그리고 나서, 복귀된 물리적 어드레스가 물리적 메모리의 경계내에 놓이는지가 검증된다. 선형-물리 변환(linear to physical translation)을 성취하기 위해, CPU의 변환 방법을 모방하는 루틴이 사용된다. 즉, ESI에서 변환된 어드레스가 복귀되고, 물리적 메모리내에 물리적 페이지가 존재하는 경우 캐리 플래그 CF가 클리어되며, 물리적 페이지가 메모리내에 존재하지 않는 경우 캐리 플래그 CF가 세트된다. 이러한 변환 루틴을 사용하면, GDT의 첫번재 바이트가 메모리(53)로부터 판독된다. GDT의 제 1 엔트리가 널인 경우, 가설적 PDBR이 첫번째 테스트에 합격하였으므로, 두번째 테스트된다. 다음으로, PDBR을 사용하여 변환 루틴에 의해 IDTR를 변환하여 IDT를 구한다. 그리고 나서, 복귀된 물리적 어드레스가 물리적 어드레스의 경계내에 놓이는지가 검증된다. IDT의 첫번째 위치가 물리적 메모리내에 존재하면, PDBR은 두번째 테스트에 합격이다.
가설적 PFBR이 GDBR이 IDTR에 대해 올바르게 변환을 수행하면, 이 가설적 PDBR의 값을 PDBR인 것으로 가정하여 시그먼트 E000H 데이터 구조내 CR3 영역에 기입한다. 다른 한편, 가설적 PDBR이 둘중 어느 하나의 테스트라도 합격하지 않으면, 루틴은 다시 시작하여, 유효한 CR3로 인도할 수도 있는 다른 BIOS 코드 시그먼트 페이지 변환 테이블에 대해 시스템 메모리를 탐색한다.
PCD 및 PWT는 정규 플래너 동작을 위해 항상 00H에 고정된 것으로 가정된다. 이들 값은 제로로 세트되며, PDBR과 함께 시그먼트 E000H 데이터 구조내의 CR3 영역에 기입된다.
일단 CR3가 평가되면, 단계(708)에서 LDTR이 평가된다. CR3가 평가되고, LDT가 GDT내의 어딘가에 위치하며, LDT가 틀림없이 메모리내에 존재함을 알면, LDTR이 평가될 수 있다. LDTR을 평가하려면, 존재하는 것으로 마크된 LDT에 대해 GDT가 탐색된다. 물리적 메모리내에 존재(단계(706)를 참조하여 설명된 변환 루틴을 사용하여 테스트됨)하고 존재로 마크된 첫번째 LDT가 LDTR이 포인트하는 테이블인 것으로 가정된다. 이 테이블의 물리적 시작 어드레스는 시그먼트 E000H 데이터 구조내 LDTR 영역에 보존된다.
이상의 LDTR을 평가하는 방법은, 비록 OS/2하에서는 2개 이상의 LDT가 존재로 마크되고 물리적 메모리내에 존재할 수 있지만, 충분히 유용할 것으로 생각된다. EMM386은 공통 가상의 8086 모드 루틴이므로, 문제를 일으킬 수 있을 것처럼 보이지만, EMM386용 CR3 및 LDTR은 EMM386이 단지 하나의 CR3 및 LDTR을 가지므로 평가하기가 용이하다.
일단 CR3 및 LDTR이 평가완료되면, 단계(710)에서 TR이 평가된다. 본질적으로, GDT 및 LDT내의 각각의 태스크 선택기 엔트리가 세트된 비지 비트를 갖는 태스크 상태 선택기에 대해 탐색된다. 비지 80286 태스크 상태 선택기(task state selector;TSS) 또는 비지 80486 태스크 상태 선택기인지의 여부를 알기 위해 각 엔트리의 형태 필드가 테스트된다. 비지 286 TSS 또는 비지 486 TSS를 갖는 첫번째 엔트리가 TR이 포인트하는 어드레스인 것으로 가정된다. 비지 286 TSS 또는 486 TSS를 갖는 이 엔트리의 물리적 어드레스가 시그먼트 E000H 데이터 구조내의 TR 영역에 보존된다. 어떤 엔트리도 비지 286 TSS 또는 비지 486 TSS를 갖지 않는 경우, 시그먼트 E000H 데이터 구조내의 TR영역에 제로가 보존된다.
CR3, LDTR 및 TR이 평가완료되면, 코드는 단계(712)에서 속행한다. 단계(712)에서, TR이 유효 TSS를 포인트하는 경우, 단계(714)에서 이 TR에 의해 포인트되는 TSS내의 비지 비트가 클리어된다. 어느 경우든, 코드는 단계(716)으로 진행하여 DS, ES, FS 및 GS가 GDT에 유효한 선택기로 로드된다. 그리고 나서, 단계(718)에서 CR3 및 CR0가 시그먼트 E000H 데이터 구조로부터의 값으로 로드된다. 다음으로, 단계(720)에서 페이징이 인에이블되어 단지 선형 어드레스가 물리적 어드레스와 동일한 영역만이 시그먼트 E000H 및 F000H내의 영역이 된다. 그리고 나서, 단계(722)에서 IDTR, GDTR, LDTR 및 TR이 시그먼트 E000H 데이터 구조에 저장된 값으로 로드된다.
최종적으로, 단계(724) 및 단계(764)에서 GS, FS, DS, ES, SS, ESP, EFLAGS(VM 비트를 세팅한 후) 및 CS에 대응하는 값을 시그먼트 E000H 데이터 구조로부터 스택으로 푸쉬함으로써 가상의 8086 인터럽트 스택이 생성된다. 또한, 단계(730)에서의 코드에 대응하는 복귀 어드레스가 단계(726)에서 스택에 푸쉬된다. 마지막으로, IRETD 인스트럭션이 실행되어, CPU(40)를 가상의 80486 모드로 복귀시키고 단계(730)에 대응하는 코드로 실행을 전달한다.
단계(730)은 제 14 도에서 다수의 쓰레드의 각각에 의해 사용되는 공통 쓰레드(common thread)를 개시한다. 단계(730)에서, 시그먼트 E000H 데이터 구조내에 보존된 값으로부터 코프로세서(44)가 복원된다. 다음으로, 단계(732)에서 어드레스 라인20(I/O 포트 92H)의 상태가 스택으로부터 팝(pop)된다. 그리고 나서, 단계(734)에서 섀도우 RAM 시그먼트 C000H가 다시 판독 전용으로 설정된다. 단계(736)에서, 제 7 도를 참조하여 설명된 바와 같이 파워 관리 포트에 01H를 기입함으로써 APM이 하드웨어에 접속된다. 그리고 나서, 단계(738)에서 섀도우 RAM 시그먼트 E000H 및 F000H가 다시 판독 전용으로 설정된다. 마지막으로, 단계(740)에서 CPU 상태 복원 루틴은 플래그를 세트하여 정규 재개시가 발생했음을 표시한다. 단계(742, 744, 748)은 CPU 상태 복원 루틴에 의해 실행되지 않고, 단지 일시중지 이벤트에 의해 인터럽트 되었던 코드로 복귀하기 전의 어느 시점에서, 8개의 범용 레지스터가 스택으로부터 팝되고, 마커블 인터럽트(markable interrupts)가 인에이블되고(코드가 인터럽트되었을 때 이들이 인에이블되어 있었던 경우), 플래그가 스택으로부터 팝되었음을 표시하는데 사용된다. 최종적으로, CPU 상태 복원 루틴은 감시 루틴으로 복귀하고, 감시 루틴은 제어를 APM으로 복귀시키며, APM은 어떤 무효의 시스템 상태 값을 갱신하고 인터럽트되었던 코드로 제어를 복귀시킨다.
이제 단계(704)를 다시 참조하여, 인터럽트되었을 때 CPU(40)가 가상의 8086 모드로 동작중이 아니었던 경우, 코드는 단계(750) 내지 단계(792)의 경로를 따르며, 단계(792)에서 코드는 단계(730) 내지 단계(748)의 공통 쓰레드와 합류한다. 단계(750)에서, 시그먼트 E000H 데이터 구조내의 TR 값이, TR이 유효 TSS를 포인트함을 표시하는 경우, 단계(752)에서 이 TSS내에 비지 비트가 생성된다. 어느 경우든, 다음으로 단계(754)에서 GDTR 및 CR0가 시그먼트 E000H 데이터 구조로부터의 값으로 로드된다.
그리고 나서, 단계(756) 내지 단계(764)에서 더미 페이지 디렉토리 테이블(dummy page directory table) 및 페이지 변환 테이블(page translation table)이 시그먼트 C000H에 로드된다. 첫째, 단계(756)에서 섀도우 RAM 시그먼트 C000H가 판독/기입으로 된다. 둘째, 단계(758)에서 새로운 페이지 디렉토리 테이블이 어드레스 0C0000H에 생성된다. 셋째, 단계(760)에서 이 새로운 페이지 디렉토리 테이블내의 제 1 엔트리가 0C1000H를 포인트하도록 수정된다. 넷째, 단계(762)에서, 어드레스 0E0000 내지 0FFFF가 존재하고 이 어드레스 범위에 대해 선형 어드레스가 물리적 어드레스와 동일하도록 새로운 페이지 변환 테이블이 0C1000H에 생성된다. 마지막으로, 단계(764)에서 0C1000H내의 새로운 더미 페이지 디렉토리 테이블 및 페이지 변환 테이블에 의해 어드레스 변환이 이루어지도록 CR3내의 페이지 디렉토리 베이스 레지스터가 OC0000H로 로드되며, CR0가 로드된 때에 페이징이 재활성화(적용가능한 경우)된다.
다음으로, 단계(766)에서 섀도우 RAM 시그먼트 E000H 및 F000H가 판독/기입으로 된다. 그리고 나서, 단계(770)에서, CPU(40)가 일시중지된 때에 16비트 코드를 실행중이었던 경우, 16비트 모드이었으므로 16비트 코드 경로를 포인트하는 오프셋이 시그먼트 E000H 데이터 구조에 보존된다. 다른 한편, CPU(40)가 16비트 모드로 실행중이 아니었던 경우, 32비트 모드였으므로, 단계(772)에서 16비트 오프셋 대신에 32비트 코드 경로를 포인트하는 오프셋이 시그먼트 E000H 데이터 구조에 보존된다. 어느 경우든, 이들 코드 경로는 유사하며, 하나는 16비트 오퍼랜드를 사용하고 다른 하나는 32비트 오퍼랜드를 사용한다는 점에서만 상이하다. 단계(770) 및 단계(772)는 단지 이들 유사한 경로중 어느 하나의 경로로의 오프셋을 셋업하는데 불과하다. 이후의 단계(782)에서 이들 경로중 하나(오프셋에 대응하는 경로)로 들어간다.
다음으로, 단계(774)에서 시그먼트 E000H 데이터 구조로부터의 CR3 값이 EDX에, 시그먼트 E000H 데이터 구조로부터의 SS 값이 CX에, 시그먼트 E000H 데이터 구조로부터의 ESP 값이 EBP에, 시그먼트 E000H 데이터 구조로부터의 TR 값이 ESI의 상위 ½에, 시그먼트 E000H 데이터 구조로부터의 LDTR 값이 ESI의 하위 ½(SI)에 로드된다. 이들 값은 이후 그들의 적절한 위치로 쉬프트된다. 그리고 나서, 단계(776)에서 GDTR, IDTR 및 GR0가 시그먼트 E000H 데이터 구조로부터의 그들의 값으로 로드된다. 단계(778)에서, LDTR이 SI에 저장된 LDTR 값으로 로드된다. 그리고 나서, 코드는 단계(770) 또는 단계(772)에서 배치된 오프셋으로 원거리 점프(far jump)한다. 이러한 원거리 점프는 소스 코드에 op코드(opcode)를 직접 배치하고 단계(770) 또는 단계(772)중 어느 하나로부터의 오프셋을 사용함으로써 코드화된다. 그리고 나서, 이 코드는 단계(782)에서 16비트 op코드 경로 도는 32비트 op코드 경로로 속행한다.
다음으로, 단계(784)에서 EDX에 저장된 CR3 값이 CR3에, CX에 저장된 SS 값이 SS에, EBP에 저장된 ESP 값이 ESP에 로드된다. 그리고 나서, 단계(786)에서 GS, FS, ES 및 DS가 스택으로부터 팝된다. 단계(788)에서, 인터럽트된 CPU(40)가 보호 모드로 코드를 실행중이었던 경우, 단계(790)에서 TR이 ESI의 상위 ½에 저장된 TR 값으로 로드된다. 어느 경우든, 코드는 단계(792)에서 속행하여, 디버그 레지스터 DR0, DR1, DR2, DR3, DR6 및 DR7이 스택으로부터 팝된다.
이 시점에서, 이 코드 경로는 앞서 설명된 단계(730) 내지 단계(748)의 공통 코드 경로와 합류한다. 단계(794)에서, 에러 회복 루틴은 또한 CPU 상태 보존 루틴의 단계(640)으로부터 공통 코드 경로에 합류한다.
이제 제 15 도를 참조하면, 8259 상태 보존 루틴의 흐름도가 도시되며, 단계(800)에서 시작한다. 8259의 상태를 보존하는 것은 단계(802)에서 실시간 클럭(98)에 의해 사용된 주기적 인터럽트 값을 보존하고, 단계(804)에서 모든 다른 판독가능 레지스터를 시그먼트 E000H 데이터 구조에 보존함으로써 실행된다. 당분야에 잘 알려진 바와 같이 컴퓨터 시스템(10)의 아키텍쳐는 고정된 값을 유지하기 위해 특정의 8259 판독 전용 레지스터를 필요로 한다. 이들 값은 공지되어 있으므로, 결정될 필요가 없다. 획득하기 어려운 8259 값은 8259 베이스 어드레스, 8259 슬레이브 어드레스 및 2개의 8259가 펜딩(pending)중임을 나타내도록 세트되어 있는지 또는 OS에 의한 인터럽트 서비스중임을 나타내도록 세트되어 있는지의 여부에 관한 값이다.
이들 4가지 사항에 대하여는 제 15 도의 나머지 코드로 확인된다. 단계(806)에서, 8259가 마스크되고 키보드(12) 또는 마우스(13) 인터럽트만이 마스크되지 않는 채로 둔다.
다음으로, 단계(808)에서 물리적 메모리의 하부 1K를 시그먼트 C000H 데이터 구조에 카피함으로써 인터럽트 벡터 테이블이 보존된다. 그리고 나서, 단계(810)에서 시그먼트 C800H에서 시작하는 256 더미 인터럽트 서비스 루틴을 포인트하는 256 고유 더미 벡터를 로드함으로써 새로운 더미(dummy) 인터럽트 백터 테이블을 물리적 메모리의 하부 1K에 로드한다. 단계(812)에서 시그먼트 C800H에 256 더미 인터럽트 서비스 루틴이 발생된다.
그리고 나서, 단계(814)에서 키보드(12) 및 마우스(13) 인터럽트가 디스에이블된다. 단계(816)에서 임의의 긍정응답되지 않은 키보드(12) 및 마우스(13) 인터럽트가 긍정응답된다.
그리고 나서, 단계(818)에서 키보드 인터럽트가 발생되며, 이 인터럽트는 단계(820)에서 베이스 8259가 펜딩중으로 또른 서비스중으로 세트되었는지의 여부를 알기 위해 테스트된다. 그리고 나서, 이 값은 시그먼트 E000H 데이터 구조에 기입된다. 단계(822)에서, 코드는 인터럽트가 서비스되기를 기다린다. 단계(824)에서, 더미 서비스 루틴중 하나를 호출함으로써 이 인터럽트를 서비스한다. 더미 서비스 루틴을 호출하면, 8259 베이스 어드레스가 결정되고, 8259가 펜딩중인지 또는 서비스 중인지의 여부가 판정되며, 이 베이스 어드레스 및 모드는 시스먼트 E000H 데이터 구조에 보존된다.
단계(826, 828, 830, 832)에서 슬레이브 8259에 대해 유사한 처리절차가 수행된다.
단계(834)에서, 시그먼트 C000H 데이터 구조로부터의 값을 물리적 메모리의 하위 1K에 카피함으로써 인터럽트 벡터 테이블이 복원된다. 그리고 나서, 단계(836)에서 시그먼트 C000H는 다시 판독 전용으로 되면, 단계(838)에서 모든 인터럽트가 마스크되어 단계(840)에서 호출 프로그램으로 복귀를 대비한다.
이상 본 발명이 실시예를 설명함으로써 예시되고, 이들 실시예가 상당히 상세히 설명되었지만, 본 발명의 첨부된 청구범위의 범주를 이러한 상세한 설명으로 제한하거나 어떤 식으로든 한정하지 않는다. 당분야에 숙련된 자라면 추가의 장점 및 변경을 용이하게 알 수 있는 것이다. 예를 들어, 앞서 설명된 바와 같이, 프로세서(40)가 보호 모드에 있으나 가상의 8086 모드에 있지 않는 동안 그의 상태를 보존하는 다른 방법으로, 스택상에 범용 레지스터를 보존하는 단계, 제어 레지스터를 보존하는 단계, 비지 태스크 선택기를 수정하는 단계(비지인 경우) 및 프로세서를 보호 모드로부터 스위칭하는 단계를 포함할 수 있다. 그러므로, 본 발명은 보다 넓은 측면에서 특정의 세부사항, 대표적인 장치 및 방법, 및 도시되고 설명된 예시적인 실시예에 한정되지 않는다. 따라서, 전반적인 본 발명에 따른 개념의 범주 또는 사상으로부터 벗어나지 않고 이와 같은 세부사항으로부터 본 발명이 출발할 수 있다.
Claims (8)
- ① 메모리 데이터를 저장하기 위한 시스템 메로리와,② 비휘발성 저장 장치와,③ CPU-㉮ 상기 CPU는 코드의 인스트럭션이 시스템 메모리내의 부적절한 영역을 액세스하려고 시도할 경우 또는 인스트럭션이 특권을 갖는 인스트럭션을 실행하려고 시도할 경우 상기 CPU로 하여금 보호 오류(a protection fault)를 발생하도록 하는 보호 모드(a protected mode)로 코드를 실행하고, ㉯ 상기 CPU는 시스템 메모리의 선택된 영역에 기입을 허용하며, 보호 오류를 발생하지 않고 상기 특권을 갖는 인스트럭션의 실행을 허용하는 비오류 모드(non-fault mode)로 코드를 실행하며, ㉰ 상기 CPU는 상기 시스템 메모리내에 스택을 생성하고, ㉱ 상기 CPU는 외부에서 정규적으로 액세스불가능하도록 하는 방식으로 레지스터 값을 저장하기 위한 휘발성 레지스터를 구비함-와,④ ROM내의 BIOS와,⑤ 실행을 위한 BIOS의 카피(a copy)를 수신하기 위한 섀도우 RAM과,⑥ CPU상의 코드의 실행을 인터럽트하고 일시중지 이벤트(a suspend event)에 응답하여 일시중지 루틴을 호출하기 위한 오퍼레이팅 시스템(an operating system)과,⑦ 하나 이상의 사전선택된 조건에 응답하여 일시중지 이벤트를 발생하는 제어 루틴과,⑧ 오퍼레이팅 시스템에 의해 선택적으로 호출가능한 일시중지 루틴-상기 루틴은 CPU의 휘발성 레지스터내에 저장된 레지스터 값을 액세스하고, 상기 CPU로부터의 레지스터 값을 보호 오류를 발생하지 않고 스택 또는 섀도우 RAM으로 전송하며, 상기 CPU를 비오류 모드로 하고, 상기 스택 또는 상기 섀도우 RAM으로부터의 레지스터 값을 상기 비휘발성 저장 장치로 전송하는 기능을 갖는 것을 특징으로 함-을 구비하는 컴퓨터 시스템에서, 보호 모드로 코드를 실행중인 CPU의 상태를 보존하기 위한 방법에 있어서,㉠ 일시중지 이벤트에 응답하여 오퍼레이팅 시스템으로 상기 CPU상의 코드 실행을 인터럽트하는 단계와,㉡ 상기 일시중지 루틴을 활성화하는 단계와,㉢ 상기 레지스터 값을 액세스하는 단계와,㉣ 상기 레지스터 값을 상기 섀도우 RAM 또는 스택에 일시적으로 저장하는 단계와,㉤ 상기 CPU를 비오류 모드로 하는 단계-상기 비오류 모드는 상기 섀도우 RAM 또는 스택으로부터 비휘발성 저장 장치로 카피함에 의해 상기 CPU내에 보호 오류가 발생하지 않는다는 것을 특징으로 함-와,㉥ 상기 스택 또는 섀도우 RAM으로부터의 레지스터 값을 상기 비휘발성 저장 장치로 전송하는 단계와,㉦ 마우스 데이터 패킷 사이에 상기 루틴의 연속을 동기화시키는 단계를 포함하는 보호 모드로 코드를 실행중인 CPU의 상태 보존 방법.
- ① 메모리 데이터를 저장하기 위한 시스템 메모리와,② 비휘발성 저장 장치와,③ CPU-㉮ 상기 CPU는 코드의 인스트럭션이 시스템 메모리내의 부적절한 영역을 액세스하려고 시도할 경우 또는 인스트럭션이 특권을 갖는 인스트럭션을 실행하려고 시도할 경우 상기 CPU로 하여금 보호 오류를 발생하도록 하는 보호 모드로 코드를 실행하고,㉯ 상기 CPU는 시스템 메모리의 선택된 영역에 기입을 허용하며, 보호 오류를 발생하지 않고 상기 특권을 갖는 인스트럭션의 실행을 허용하는 비오류 모드(non-fault mode)로 코드를 실행하며, ㉰ 상기 CPU는 상기 시스템 메모리내에 스택을 형성하고, ㉱ 상기 CPU는 외부에서 정규적으로 액세스불가능하도록 하는 방식으로 레지스터 값을 저장하기 위한 휘발성 레지스터를 구비함-와,④ ROM내의 BIOS와,⑤ 섀도우 RAM으로부터 실행을 위한 BIOS의 카피를 수신하기 위한 섀도우 RAM과,⑥ CPU상의 코드의 실행을 복원하고 재개시 이벤트(a resume event)에 응답하여 재개시 루틴을 호출하기 위한 오퍼레이팅 시스템과,⑦ 하나 이상의 사전선택된 조건에 응답하여 재개시 이벤트를 발생하는 제어 루틴과,⑧ 오퍼레이팅 시스템에 의해 선택적으로 호출가능한 재개시 루틴-상기 루틴은 CPU의 휘발성 레지스터내에 저장된 레지스터 값을 액세스하고, 상기 CPU를 비오류 모드로 하고, 상기 CPU로부터의 레지스터 값을 상기 스택 또는 섀도우 RAM으로 전송하며, 상기 CPU를 오류 모드(a fault mode)로 하고, 보호 오류를 발생하지 않고 상기 스택 또는 상기 섀도우 RAM으로부터 상기 CPU로 상기 레지스터 값을 전송하는 기능을 갖는 것을 특징으로 함-을 구비하는 컴퓨터 시스템에서, 비휘발성 저장 장치로부터 CPU의 상태를 복원하기 위한 방법에 있어서,㉠ 상기 CPU를 비오류 모드로 하는 단계-상기 비오류 모드는 상기 비휘발성 저장 장치로부터 상기 섀도우 RAM 또는 스택으로 상기 레지스터 값을 카피함에 의해 CPU내에 보호 오류를 발생하지 않는 것을 특징으로 함-와,㉡ 페이지 디렉토리 베이스 레지스터(page directory base register)의 값을 평가하는 단계와,㉢ 상기 페이지 디렉토리 베이스 레지스터의 값을 검증하는 단계와,㉣ 로컬 디스크립터 테이블 레지스터(local descriptor table register)의 값을 평가하는 단계와,㉤ 태스크 레지스터(task register)의 값을 평가하는 단계와,㉥ 상기 비휘발성 저장 장치로부터 상기 스택 또는 섀도우 RAM으로 상기 CPU의 레지스터 값을 전송하는 단계와,㉦ 상기 섀도우 RAM내의 BIOS가 CPU 페이징이 활성화된 후에 액세스될 수 있도록 페이지 테이블 세트(a set of page tables)를 상기 섀도우 RAM내로 로드하는 단계와,㉧ 상기 CPU를 오류 모드로 하는 단계와,㉨ 상기 스택 또는 섀도우 RAM으로부터 상기 CPU로 상기 레지스터 값을 전송하는 단계와,㉩ 상기 오퍼레이팅 시스템으로 상기 CPU상에서 인터럽트된 코드의 실행을 재개시하는 단계를 포함하는 비휘발성 저장 장치로부터의 CPU 상태 복원 방법.
- 제 1 항에 있어서,마우스 데이터 패킷 사이에서 상기 루틴의 연속을 동기화시키는 상기 단계는,ⓐ 인터럽트를 디스에이블시키는 단계와,ⓑ 마우스 데이터 패킷 경계에 대해 제 1 사전결정된 시간동안 기다리는 단계와,ⓒ 인터럽트를 인에이블시키는 단계와,ⓓ 마우스 데이터 패킷이 도달하기를 제 2 사전결정된 시간동안 기다리는 단계와,ⓔ 인터럽트를 디스에이블시키는 단계를 포함하는 방법.
- ① 처리 유닛과,② 상기 처리 유닛과 통신하는 회로내에 어드레스가능한 메모리 위치를 갖는 메모리 회로와,③ 상기 처리 유닛 및 상기 메모리 회로와 통신하는 회로내의 메모리 관리자(a memory manager)-상기 메모리 관리자는 메모리 회로에 대한 처리 유닛에 의한 액세스에 영향을 주기 위한 연관된 페이지 디렉토리 베이스 레지스터를 구비하여, 선형 어드레스(a linear address)를 상기 메모리 회로내 상기 메모리 회로의 물리적 어드레스(a physical address)에 연관시킴-를 구비하는 컴퓨터 시스템에서, 상기 페이지 디렉토리 베이스 레지스터의 값을 평가하는 방법에 있어서,㉠ 페이지 변환 테이블(a page translation table)에 대해 적어도 모든 물리적 메모리 서브세트(a subset)를 탐색함으로써 페이지 변환 테이블을 위치시키는 단계와,㉡ 상기 위치된 페이지 변환 테이블의 물리적 어드레스를 결정하는 단계와,㉢ 상기 위치된 페이지 변환 테이블의 물리적 어드레스에 대응하는 제 1 엔트리를 갖는 페이지 디렉토리(a page directory)에 대해 적어도 모든 물리적 메모리의 서브세트를 탐색함으로써 페이지 디렉토리를 위치시키는 단계와,㉣ 상기 위치된 페이지 디렉토리의 물리적 어드레스를 결정하는 단계와,㉤ 상기 위치된 페이지 디렉토리의 상기 물리적 어드레스를 상기 페이지 디렉토리 베이스 레지스터의 값으로서 사용하는 단계를 포함하는 페이지 디렉토리 베이스 레지스터 값 평가 방법.
- 제 4 항에 있어서,페이지 변환 테이블에 대해 물리적 메모리의 페이지를 탐색하는 상기 단계는 고정된 오프셋(a fixed offset)으로 각각의 페이지내에 저장된 값을 사전결정된 값과 비교하는 단계를 포함하는 방법.
- ① 처리 유닛과,② 상기 처리 유닛과 통신하는 회로내의 메모리 회로와,③ 상기 처리 유닛 및 상기 메모리 회로와 통신하는 회로내의 메모리 관리자-상기 메모리 관리자는 상기 메모리 회로에 대한 상기 처리 유닛에 의한 액세스에 영향을 주기 위해 연관된 페이지 디렉토리 베이스 레지스터를 구비하여 선형 어드레스를 상기 메모리 회로내 상기 메모리 위치의 물리적 어드레스에 연관시킴-를 구비한 컴퓨터 시스템에서, 상기 페이지 디렉토리 베이스 레지스터의 평가된 값(an estimated value)을 검증하는 방법에 있어서,㉮ 페이지 디렉토리 베이스 레지스터의 값을 평가하는 단계와,㉯ 기지의 물리적 어드레스(a known physical address)와 연관된 선형 어드레스를 결정하는 단계와,㉰ 상기 페이지 디렉토리 베이스 레지스터의 평가된 값과 기지의 물리적 어드레스와 연관된 선형 어드레스를 이용하여 변환된 물리적 어드레스를 결정하는 단계와,㉱ 상기 변환된 물리적 어드레스를 상기 기지의 물리적 어드레스에 비교하는 단계를 포함하는 페이지 디렉토리 베이스 레지스터의 평가된 값 검증 방법.
- 제 6 항에 있어서,상기 변환된 물리적 어드레스를 상기 기지의 물리적 어드레스에 비교하는 단계는 상기 변환된 물리적 어드레스가 물리적 메모리내에 위치됨을 검증하는 단계를 포함하는 방법.
- ① 처리 유닛과,② 상기 처리 유닛과 통신하는 회로내의 메모리 회로와,③ 상치 처리 유닛 및 상기 메모리 회로와 통신하는 회로내의 메모리 관리자-상기 메모리 관리자는 상기 메모리 회로에 대한 상기 처리 유닛에 의한 액세스에 영향을 주기 위해 연관된 페이지 디렉토리 베이스 레지스터를 구비하여 선형 어드레스를 상기 메모리 회로내 상기 메모리 위치에 물리적 어드레스에 연관시킴-를 구비하는 컴퓨터 시스템에서, 상기 페이지 디렉토리 베이스 레지스터의 평가된 값을 검증하는 방법에 있어서,㉮ 상기 페이지 디렉토리 베이스 레지스터의 값을 평가하는 단계와,㉯ 적어도 하나의 기지의 엔트리를 갖는 테이블과 연관된 선형 어드레스를 결정하는 단계와,㉰ 상기 페이지 디렉토리 베이스 레지스터의 상기 평가된 값과 상기 적어도 하나의 기지의 엔트리를 갖는 테이블과 연관된 상기 선형 어드레스를 이용하여 변환된 물리적 어드레스를 결정하는 단계와,㉱ 상기 변환된 물리적 어드레스를 상기 기지의 테이블 엔트리에 비교하는 단계를 포함하는 페이지 디렉토리 베이스 레지스터의 평가된 값 검증방법.
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US097,246 | 1993-07-23 | ||
US08/097,246 US5497494A (en) | 1993-07-23 | 1993-07-23 | Method for saving and restoring the state of a CPU executing code in protected mode |
Publications (2)
Publication Number | Publication Date |
---|---|
KR950003975A KR950003975A (ko) | 1995-02-17 |
KR0134146B1 true KR0134146B1 (ko) | 1998-05-15 |
Family
ID=22262434
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1019940014723A KR0134146B1 (ko) | 1993-07-23 | 1994-06-23 | 컴퓨터 시스템에서 보호 모드로 코드를 실행중인 cpu의 상태 보존 및 복원 방법과 페이지 디렉토리 베이스 레지스터 값 평가 및 평가 값 검증 방법 |
Country Status (7)
Country | Link |
---|---|
US (2) | US5497494A (ko) |
EP (1) | EP0635788B1 (ko) |
JP (1) | JP2726004B2 (ko) |
KR (1) | KR0134146B1 (ko) |
CN (2) | CN1064151C (ko) |
CA (1) | CA2120053A1 (ko) |
DE (1) | DE69428010T2 (ko) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR101444783B1 (ko) * | 2013-05-16 | 2014-09-26 | 국방과학연구소 | 시스템 가용성 향상을 위한 시스템 운용 방법 |
Families Citing this family (134)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6158012A (en) * | 1989-10-30 | 2000-12-05 | Texas Instruments Incorporated | Real-time power conservation and thermal management for computers |
JPH07129287A (ja) * | 1993-11-01 | 1995-05-19 | Canon Inc | コンピュータ装置 |
US5560023A (en) | 1994-09-07 | 1996-09-24 | International Business Machines Corporation | Automatic backup system for advanced power management |
JP3224715B2 (ja) | 1994-09-07 | 2001-11-05 | インターナショナル・ビジネス・マシーンズ・コーポレーション | コンピュータ・システムをウェイクさせる低電力リング検出 |
US5530879A (en) | 1994-09-07 | 1996-06-25 | International Business Machines Corporation | Computer system having power management processor for switching power supply from one state to another responsive to a closure of a switch, a detected ring or an expiration of a timer |
US5671422A (en) * | 1994-11-14 | 1997-09-23 | Intel Corporation | Method and apparatus for switching between the modes of a processor |
JPH08147173A (ja) * | 1994-11-18 | 1996-06-07 | Seiko Epson Corp | エミュレーション装置 |
KR0139985B1 (ko) * | 1995-01-06 | 1998-07-01 | 김광호 | 옵션 카드의 하이버네이션 시스템 |
US5692197A (en) * | 1995-03-31 | 1997-11-25 | Sun Microsystems, Inc. | Method and apparatus for reducing power consumption in a computer network without sacrificing performance |
WO1996038784A1 (en) * | 1995-06-02 | 1996-12-05 | Systemsoft Corporation | Digital data processing method and apparatus for peripheral device control |
US5715464A (en) * | 1995-06-07 | 1998-02-03 | International Business Machines Corporation | Computer system having suspend once resume many sessions |
JP3062050B2 (ja) * | 1995-07-21 | 2000-07-10 | インターナショナル・ビジネス・マシーンズ・コーポレ−ション | ディスク駆動制御方法及び装置 |
US5859982A (en) * | 1996-06-05 | 1999-01-12 | Sun Microsystems, Inc. | Computer system and method for executing methods of downloaded programs with reduced run-time memory space requirements |
US5944829A (en) * | 1996-09-30 | 1999-08-31 | Intel Corporation | Adjusting software characteristics by user interface based upon battery level and the amount of time the user wants the battery to last |
US5978912A (en) * | 1997-03-20 | 1999-11-02 | Phoenix Technologies Limited | Network enhanced BIOS enabling remote management of a computer without a functioning operating system |
US5973734A (en) | 1997-07-09 | 1999-10-26 | Flashpoint Technology, Inc. | Method and apparatus for correcting aspect ratio in a camera graphical user interface |
US6266753B1 (en) * | 1997-07-10 | 2001-07-24 | Cirrus Logic, Inc. | Memory manager for multi-media apparatus and method therefor |
US6170055B1 (en) * | 1997-11-03 | 2001-01-02 | Iomega Corporation | System for computer recovery using removable high capacity media |
US6128732A (en) * | 1997-12-15 | 2000-10-03 | Compaq Computer Corporation | Implementing universal serial bus support with a minimum of system RAM |
US6098158A (en) * | 1997-12-18 | 2000-08-01 | International Business Machines Corporation | Software-enabled fast boot |
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 |
US6760784B1 (en) * | 1998-10-08 | 2004-07-06 | International Business Machines Corporation | Generic virtual device driver |
US6243831B1 (en) * | 1998-10-31 | 2001-06-05 | Compaq Computer Corporation | Computer system with power loss protection mechanism |
US6324651B2 (en) * | 1998-11-12 | 2001-11-27 | International Business Machines Corporation | Method and apparatus for saving device state while a computer system is in sleep mode |
US6317141B1 (en) | 1998-12-31 | 2001-11-13 | Flashpoint Technology, Inc. | Method and apparatus for editing heterogeneous media objects in a digital imaging device |
US6697954B1 (en) * | 1999-01-08 | 2004-02-24 | Compaq Computer Corporation | Method/apparatus for preserving state of an event during powerup reset sequence based on state of an event signal immediately prior to the reset |
US6141248A (en) * | 1999-07-29 | 2000-10-31 | Micron Technology, Inc. | DRAM and SRAM memory cells with repressed memory |
US6141238A (en) * | 1999-08-30 | 2000-10-31 | Micron Technology, Inc. | Dynamic random access memory (DRAM) cells with repressed ferroelectric memory methods of reading same, and apparatuses including same |
EP1085396A1 (en) * | 1999-09-17 | 2001-03-21 | Hewlett-Packard Company | Operation of trusted state in computing platform |
US6496944B1 (en) | 1999-10-06 | 2002-12-17 | International Business Machines Corporation | Method for database assisted file system restore |
US6968469B1 (en) | 2000-06-16 | 2005-11-22 | Transmeta Corporation | System and method for preserving internal processor context when the processor is powered down and restoring the internal processor context when processor is restored |
FR2810424B1 (fr) * | 2000-06-20 | 2006-06-16 | Bull Sa | Machine informatique avec systeme de gestion de fichiers sur disque tolerante aux arrets brutaux |
US6791555B1 (en) | 2000-06-23 | 2004-09-14 | Micron Technology, Inc. | Apparatus and method for distributed memory control in a graphics processing system |
GB2376763B (en) * | 2001-06-19 | 2004-12-15 | Hewlett Packard Co | Demonstrating integrity of a compartment of a compartmented operating system |
GB0102516D0 (en) * | 2001-01-31 | 2001-03-21 | Hewlett Packard Co | Trusted gateway system |
GB0102518D0 (en) * | 2001-01-31 | 2001-03-21 | Hewlett Packard Co | Trusted operating system |
GB2372592B (en) | 2001-02-23 | 2005-03-30 | Hewlett Packard Co | Information system |
GB2372595A (en) * | 2001-02-23 | 2002-08-28 | Hewlett Packard Co | Method of and apparatus for ascertaining the status of a data processing environment. |
US6883037B2 (en) * | 2001-03-21 | 2005-04-19 | Microsoft Corporation | Fast data decoder that operates with reduced output buffer bounds checking |
GB0114898D0 (en) * | 2001-06-19 | 2001-08-08 | Hewlett Packard Co | Interaction with electronic services and markets |
GB2376764B (en) * | 2001-06-19 | 2004-12-29 | Hewlett Packard Co | Multiple trusted computing environments |
GB2376762A (en) * | 2001-06-19 | 2002-12-24 | Hewlett Packard Co | Renting a computing environment on a trusted computing platform |
GB2378013A (en) * | 2001-07-27 | 2003-01-29 | Hewlett Packard Co | Trusted computer platform audit system |
US7921287B2 (en) * | 2001-08-13 | 2011-04-05 | Qualcomm Incorporated | Application level access privilege to a storage area on a computer device |
US7135734B2 (en) * | 2001-08-30 | 2006-11-14 | Micron Technology, Inc. | Graded composition metal oxide tunnel barrier interpoly insulators |
US7068544B2 (en) * | 2001-08-30 | 2006-06-27 | Micron Technology, Inc. | Flash memory with low tunnel barrier interpoly insulators |
US6754108B2 (en) * | 2001-08-30 | 2004-06-22 | Micron Technology, Inc. | DRAM cells with repressed floating gate memory, low tunnel barrier interpoly insulators |
US6778441B2 (en) * | 2001-08-30 | 2004-08-17 | Micron Technology, Inc. | Integrated circuit memory device and method |
US6963103B2 (en) * | 2001-08-30 | 2005-11-08 | Micron Technology, Inc. | SRAM cells with repressed floating gate memory, low tunnel barrier interpoly insulators |
US7087954B2 (en) * | 2001-08-30 | 2006-08-08 | Micron Technology, Inc. | In service programmable logic arrays with low tunnel barrier interpoly insulators |
US7476925B2 (en) * | 2001-08-30 | 2009-01-13 | Micron Technology, Inc. | Atomic layer deposition of metal oxide and/or low asymmetrical tunnel barrier interploy insulators |
US7075829B2 (en) * | 2001-08-30 | 2006-07-11 | Micron Technology, Inc. | Programmable memory address and decode circuits with low tunnel barrier interpoly insulators |
GB2382419B (en) * | 2001-11-22 | 2005-12-14 | Hewlett Packard Co | Apparatus and method for creating a trusted environment |
US20030101312A1 (en) * | 2001-11-26 | 2003-05-29 | Doan Trung T. | Machine state storage apparatus and method |
US7181560B1 (en) | 2001-12-21 | 2007-02-20 | Joseph Grand | Method and apparatus for preserving computer memory using expansion card |
US7133972B2 (en) | 2002-06-07 | 2006-11-07 | Micron Technology, Inc. | Memory hub with internal cache and/or memory access prediction |
US7221586B2 (en) | 2002-07-08 | 2007-05-22 | Micron Technology, Inc. | Memory utilizing oxide nanolaminates |
US7200024B2 (en) | 2002-08-02 | 2007-04-03 | Micron Technology, Inc. | System and method for optically interconnecting memory devices |
US7117316B2 (en) | 2002-08-05 | 2006-10-03 | Micron Technology, Inc. | Memory hub and access method having internal row caching |
US7254331B2 (en) | 2002-08-09 | 2007-08-07 | Micron Technology, Inc. | System and method for multiple bit optical data transmission in memory systems |
US7149874B2 (en) | 2002-08-16 | 2006-12-12 | Micron Technology, Inc. | Memory hub bypass circuit and method |
US7836252B2 (en) | 2002-08-29 | 2010-11-16 | Micron Technology, Inc. | System and method for optimizing interconnections of memory devices in a multichip module |
US6820181B2 (en) | 2002-08-29 | 2004-11-16 | Micron Technology, Inc. | Method and system for controlling memory accesses to memory modules having a memory hub architecture |
US7102907B2 (en) | 2002-09-09 | 2006-09-05 | Micron Technology, Inc. | Wavelength division multiplexed memory module, memory system and method |
US6922767B2 (en) * | 2002-10-29 | 2005-07-26 | International Business Machines Corporation | System for allowing only a partial value prediction field/cache size |
GB2395302B (en) * | 2002-11-13 | 2005-12-28 | Advanced Risc Mach Ltd | Hardware driven state save/restore in a data processing system |
US7245145B2 (en) | 2003-06-11 | 2007-07-17 | Micron Technology, Inc. | Memory module and method having improved signal routing topology |
US7120727B2 (en) * | 2003-06-19 | 2006-10-10 | Micron Technology, Inc. | Reconfigurable memory module and method |
US7428644B2 (en) | 2003-06-20 | 2008-09-23 | Micron Technology, Inc. | System and method for selective memory module power management |
US7107415B2 (en) | 2003-06-20 | 2006-09-12 | Micron Technology, Inc. | Posted write buffers and methods of posting write requests in memory modules |
US7260685B2 (en) | 2003-06-20 | 2007-08-21 | Micron Technology, Inc. | Memory hub and access method having internal prefetch buffers |
US7389364B2 (en) | 2003-07-22 | 2008-06-17 | Micron Technology, Inc. | Apparatus and method for direct memory access in a hub-based memory system |
US7210059B2 (en) | 2003-08-19 | 2007-04-24 | Micron Technology, Inc. | System and method for on-board diagnostics of memory modules |
US7133991B2 (en) | 2003-08-20 | 2006-11-07 | Micron Technology, Inc. | Method and system for capturing and bypassing memory transactions in a hub-based memory system |
US7136958B2 (en) | 2003-08-28 | 2006-11-14 | Micron Technology, Inc. | Multiple processor system and method including multiple memory hub modules |
US20050050237A1 (en) * | 2003-08-28 | 2005-03-03 | Jeddeloh Joseph M. | Memory module and method having on-board data search capabilities and processor-based system using such memory modules |
US6891740B2 (en) * | 2003-08-29 | 2005-05-10 | Hitachi Global Storage Technologies Netherlands B.V. | Method for speculative streaming data from a disk drive |
US7310752B2 (en) * | 2003-09-12 | 2007-12-18 | Micron Technology, Inc. | System and method for on-board timing margin testing of memory modules |
US7194593B2 (en) | 2003-09-18 | 2007-03-20 | Micron Technology, Inc. | Memory hub with integrated non-volatile memory |
US7120743B2 (en) | 2003-10-20 | 2006-10-10 | Micron Technology, Inc. | Arbitration system and method for memory responses in a hub-based memory system |
US7330992B2 (en) | 2003-12-29 | 2008-02-12 | Micron Technology, Inc. | System and method for read synchronization of memory modules |
US7188219B2 (en) | 2004-01-30 | 2007-03-06 | Micron Technology, Inc. | Buffer control system and method for a memory system having outstanding read and write request buffers |
US7181584B2 (en) | 2004-02-05 | 2007-02-20 | Micron Technology, Inc. | Dynamic command and/or address mirroring system and method for memory modules |
TWI234110B (en) * | 2004-02-05 | 2005-06-11 | Mediatek Inc | Method for managing a circuit system during mode-switching procedures |
US7788451B2 (en) | 2004-02-05 | 2010-08-31 | Micron Technology, Inc. | Apparatus and method for data bypass for a bi-directional data bus in a hub-based memory sub-system |
US7412574B2 (en) | 2004-02-05 | 2008-08-12 | Micron Technology, Inc. | System and method for arbitration of memory responses in a hub-based memory system |
US7366864B2 (en) | 2004-03-08 | 2008-04-29 | Micron Technology, Inc. | Memory hub architecture having programmable lane widths |
US7257683B2 (en) | 2004-03-24 | 2007-08-14 | Micron Technology, Inc. | Memory arbitration system and method having an arbitration packet protocol |
US7120723B2 (en) | 2004-03-25 | 2006-10-10 | Micron Technology, Inc. | System and method for memory hub-based expansion bus |
US7447240B2 (en) | 2004-03-29 | 2008-11-04 | Micron Technology, Inc. | Method and system for synchronizing communications links in a hub-based memory system |
US7213082B2 (en) | 2004-03-29 | 2007-05-01 | Micron Technology, Inc. | Memory hub and method for providing memory sequencing hints |
US6980042B2 (en) | 2004-04-05 | 2005-12-27 | Micron Technology, Inc. | Delay line synchronizer apparatus and method |
US7590797B2 (en) | 2004-04-08 | 2009-09-15 | Micron Technology, Inc. | System and method for optimizing interconnections of components in a multichip memory module |
WO2005103908A1 (ja) * | 2004-04-26 | 2005-11-03 | Matsushita Electric Industrial Co., Ltd. | 暗号又は復号を行うコンピュータシステム及びコンピュータプログラム |
JP2005316599A (ja) * | 2004-04-27 | 2005-11-10 | Matsushita Electric Ind Co Ltd | 割込制御装置 |
US7203041B2 (en) * | 2004-04-30 | 2007-04-10 | Power-One, Inc | Primary side turn-off of self-driven synchronous rectifiers |
US7162567B2 (en) | 2004-05-14 | 2007-01-09 | Micron Technology, Inc. | Memory hub and method for memory sequencing |
US7222213B2 (en) | 2004-05-17 | 2007-05-22 | Micron Technology, Inc. | System and method for communicating the synchronization status of memory modules during initialization of the memory modules |
US7363419B2 (en) | 2004-05-28 | 2008-04-22 | Micron Technology, Inc. | Method and system for terminating write commands in a hub-based memory system |
US7519788B2 (en) | 2004-06-04 | 2009-04-14 | Micron Technology, Inc. | System and method for an asynchronous data buffer having buffer write and read pointers |
US7310748B2 (en) | 2004-06-04 | 2007-12-18 | Micron Technology, Inc. | Memory hub tester interface and method for use thereof |
WO2006030036A1 (es) * | 2004-08-10 | 2006-03-23 | Microelectronica Española, S.A.U | Unidad de procesado y método de gestión de memoria en sistemas de procesado con recursos limitados |
US7392331B2 (en) | 2004-08-31 | 2008-06-24 | Micron Technology, Inc. | System and method for transmitting data packets in a computer system having a memory hub architecture |
US20060136608A1 (en) * | 2004-12-22 | 2006-06-22 | Gilbert Jeffrey D | System and method for control registers accessed via private operations |
US7636861B2 (en) * | 2005-01-27 | 2009-12-22 | Hewlett-Packard Development Company, L.P. | Bus technique for controlling power states of blades in a blade enclosure |
EP1866825A1 (en) | 2005-03-22 | 2007-12-19 | Hewlett-Packard Development Company, L.P. | Methods, devices and data structures for trusted data |
US7927948B2 (en) | 2005-07-20 | 2011-04-19 | Micron Technology, Inc. | Devices with nanocrystals and methods of formation |
US20100132053A1 (en) * | 2005-10-04 | 2010-05-27 | Nec Corporation | Information processing device, information processing method and program |
US7484062B2 (en) * | 2005-12-22 | 2009-01-27 | International Business Machines Corporation | Cache injection semi-synchronous memory copy operation |
US7454585B2 (en) * | 2005-12-22 | 2008-11-18 | International Business Machines Corporation | Efficient and flexible memory copy operation |
US7506132B2 (en) * | 2005-12-22 | 2009-03-17 | International Business Machines Corporation | Validity of address ranges used in semi-synchronous memory copy operations |
US9224145B1 (en) | 2006-08-30 | 2015-12-29 | Qurio Holdings, Inc. | Venue based digital rights using capture device with digital watermarking capability |
US8245068B2 (en) * | 2006-10-27 | 2012-08-14 | Freescale Semiconductor, Inc. | Power supply monitoring method and system |
US8799610B2 (en) * | 2010-10-28 | 2014-08-05 | Wms Gaming Inc. | Memory clear operations in wagering game machines |
JP5704904B2 (ja) * | 2010-11-29 | 2015-04-22 | キヤノン株式会社 | データ処理装置、データ処理装置の制御方法及びプログラム |
JP6186870B2 (ja) | 2012-09-13 | 2017-08-30 | 株式会社リコー | 情報処理装置、プログラム、会議システム及びコンテンツ提供方法 |
US9923762B1 (en) * | 2013-08-13 | 2018-03-20 | Ca, Inc. | Upgrading an engine when a scenario is running |
US9753863B2 (en) * | 2014-12-27 | 2017-09-05 | Intel Corporation | Memory protection with non-readable pages |
KR101658828B1 (ko) | 2015-03-23 | 2016-09-22 | 한국전자통신연구원 | 씨피유 코어의 기능복구를 위한 장치 및 방법 |
US20160381050A1 (en) * | 2015-06-26 | 2016-12-29 | Intel Corporation | Processors, methods, systems, and instructions to protect shadow stacks |
US9952895B2 (en) * | 2015-06-27 | 2018-04-24 | Vmware, Inc. | Implementing pseudo non-masking interrupts behavior using a priority interrupt controller |
US9952990B2 (en) * | 2015-06-27 | 2018-04-24 | Vmware, Inc. | Implementing pseudo non-masking interrupts behavior using a priority interrupt controller |
US10394556B2 (en) | 2015-12-20 | 2019-08-27 | Intel Corporation | Hardware apparatuses and methods to switch shadow stack pointers |
US10430580B2 (en) | 2016-02-04 | 2019-10-01 | Intel Corporation | Processor extensions to protect stacks during ring transitions |
US10452561B2 (en) | 2016-08-08 | 2019-10-22 | Raytheon Company | Central processing unit architecture and methods for high availability systems |
GB2554940B (en) | 2016-10-14 | 2020-03-04 | Imagination Tech Ltd | Out-of-bounds recovery circuit |
US10394711B2 (en) * | 2016-11-30 | 2019-08-27 | International Business Machines Corporation | Managing lowest point of coherency (LPC) memory using a service layer adapter |
CN108268286A (zh) * | 2016-12-29 | 2018-07-10 | 联想(上海)信息技术有限公司 | 计算机系统启动方法及计算机系统 |
CN109426579A (zh) * | 2017-08-28 | 2019-03-05 | 西门子公司 | 机床加工文件的中断恢复方法及适用该方法的机床 |
CN108446009A (zh) * | 2018-03-10 | 2018-08-24 | 北京联想核芯科技有限公司 | 掉电控制方法、装置、设备及介质 |
CN110795364B (zh) * | 2019-10-31 | 2023-06-02 | 四川效率源信息安全技术股份有限公司 | 一种ide模式下访问硬盘的方法 |
CN113467923A (zh) * | 2020-03-31 | 2021-10-01 | 华为技术有限公司 | 一种设备休眠方法及计算设备 |
CN111813454B (zh) * | 2020-07-07 | 2024-04-23 | 深圳微步信息股份有限公司 | 电子装置、开机画面显示方法和计算机可读存储介质 |
CN113360097B (zh) * | 2021-06-25 | 2023-01-10 | 苏州浪潮智能科技有限公司 | 一种磁盘端口状态转换方法及相关装置 |
Family Cites Families (19)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4907150A (en) * | 1986-01-17 | 1990-03-06 | International Business Machines Corporation | Apparatus and method for suspending and resuming software applications on a computer |
US4851987A (en) * | 1986-01-17 | 1989-07-25 | International Business Machines Corporation | System for reducing processor power consumption by stopping processor clock supply if a desired event does not occur |
US4933785A (en) * | 1988-03-01 | 1990-06-12 | Prairietek Corporation | Disk drive apparatus using dynamic loading/unloading |
US5239635A (en) * | 1988-06-06 | 1993-08-24 | Digital Equipment Corporation | Virtual address to physical address translation using page tables in virtual memory |
US5218607A (en) * | 1989-06-23 | 1993-06-08 | Kabushiki Kaisha Toshiba | Computer having a resume function and operable on an internal power source |
KR930012128B1 (ko) * | 1989-08-28 | 1993-12-24 | 가부시기가이샤 도시바 | 재개기능을 가진 컴퓨터 유니트 |
US5167024A (en) * | 1989-09-08 | 1992-11-24 | Apple Computer, Inc. | Power management for a laptop computer with slow and sleep modes |
US5021983B1 (en) * | 1989-11-13 | 1996-05-28 | Chips & Technologies Inc | Suspend/resume apparatus and method for reducing power consumption in battery powered computers |
US5276890A (en) * | 1989-11-30 | 1994-01-04 | Kabushiki Kaisha Toshiba | Resume control system and method for executing resume processing while checking operation mode of CPU |
JP2772103B2 (ja) * | 1990-03-28 | 1998-07-02 | 株式会社東芝 | 計算機システム立上げ方式 |
US5008829A (en) * | 1990-06-14 | 1991-04-16 | International Business Machines Corporation | Personal computer power supply |
AU634114B2 (en) * | 1991-02-08 | 1993-02-11 | Kabushiki Kaisha Toshiba | Computer having function of resume process |
JPH0776894B2 (ja) * | 1991-02-25 | 1995-08-16 | インターナショナル・ビジネス・マシーンズ・コーポレイション | プロセッサ用クロック信号の制御方法及び情報処理システム |
EP0584257B1 (en) * | 1991-05-17 | 2004-08-04 | Packard Bell NEC, Inc. | Power management capability for a microprocessor having backward compatibility |
US5297282A (en) * | 1991-05-29 | 1994-03-22 | Toshiba America Information Systems, Inc. | Resume processing function for the OS/2 operating system |
JPH077317B2 (ja) * | 1991-06-10 | 1995-01-30 | 松下電器産業株式会社 | システム再起動装置 |
JPH07101376B2 (ja) * | 1991-06-10 | 1995-11-01 | 松下電器産業株式会社 | システム再起動装置 |
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 |
DE69228340T2 (de) * | 1991-07-16 | 1999-08-26 | Canon K.K. | Elektronisches Gerät mit Wiederholungsfunktion |
-
1993
- 1993-07-23 US US08/097,246 patent/US5497494A/en not_active Expired - Fee Related
-
1994
- 1994-03-28 CA CA002120053A patent/CA2120053A1/en not_active Abandoned
- 1994-06-21 JP JP6138582A patent/JP2726004B2/ja not_active Expired - Fee Related
- 1994-06-23 CN CN94107574A patent/CN1064151C/zh not_active Expired - Lifetime
- 1994-06-23 KR KR1019940014723A patent/KR0134146B1/ko not_active IP Right Cessation
- 1994-06-23 CN CNB991213734A patent/CN1184577C/zh not_active Expired - Lifetime
- 1994-06-30 DE DE69428010T patent/DE69428010T2/de not_active Expired - Fee Related
- 1994-06-30 EP EP94304823A patent/EP0635788B1/en not_active Expired - Lifetime
-
1995
- 1995-10-03 US US08/538,532 patent/US5577220A/en not_active Expired - Fee Related
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR101444783B1 (ko) * | 2013-05-16 | 2014-09-26 | 국방과학연구소 | 시스템 가용성 향상을 위한 시스템 운용 방법 |
Also Published As
Publication number | Publication date |
---|---|
DE69428010D1 (de) | 2001-09-27 |
EP0635788A1 (en) | 1995-01-25 |
JP2726004B2 (ja) | 1998-03-11 |
US5497494A (en) | 1996-03-05 |
CN1254887A (zh) | 2000-05-31 |
CN1064151C (zh) | 2001-04-04 |
CN1101145A (zh) | 1995-04-05 |
EP0635788B1 (en) | 2001-08-22 |
CA2120053A1 (en) | 1995-01-24 |
CN1184577C (zh) | 2005-01-12 |
KR950003975A (ko) | 1995-02-17 |
JPH0744260A (ja) | 1995-02-14 |
US5577220A (en) | 1996-11-19 |
DE69428010T2 (de) | 2002-04-18 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR0134146B1 (ko) | 컴퓨터 시스템에서 보호 모드로 코드를 실행중인 cpu의 상태 보존 및 복원 방법과 페이지 디렉토리 베이스 레지스터 값 평가 및 평가 값 검증 방법 | |
US5513359A (en) | Desktop computer having a single-switch suspend/resume function | |
US5548763A (en) | Desk top computer system having multi-level power management | |
EP0636978B1 (en) | Desktop computer system having system suspend | |
US5682550A (en) | System for restricting user access to default work area settings upon restoration from nonvolatile memory where the settings are independent of the restored state information | |
KR100196893B1 (ko) | 컴퓨터 시스템 | |
KR100232314B1 (ko) | 컴퓨터 시스템 | |
US5758174A (en) | Computer system having a plurality of stored system capability states from which to resume | |
KR100196883B1 (ko) | 컴퓨터 시스템 | |
KR100190736B1 (ko) | 컴퓨터 시스템 | |
KR100218613B1 (ko) | 컴퓨터시스템및글리치회로 | |
US5715464A (en) | Computer system having suspend once resume many sessions | |
US5752044A (en) | Computer system having multi-level suspend timers to suspend from operation in attended and unattended modes | |
EP0749063A2 (en) | Method and apparatus for suspend/resume operation in a computer | |
AU732436B2 (en) | Desktop computer system having multi-level power management |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A201 | Request for examination | ||
E902 | Notification of reason for refusal | ||
E701 | Decision to grant or registration of patent right | ||
GRNT | Written decision to grant | ||
FPAY | Annual fee payment |
Payment date: 20051130 Year of fee payment: 9 |
|
LAPS | Lapse due to unpaid annual fee |