KR0128275B1 - 컴퓨터 시스템과그의 전력사용 관리방법, 인터럽트 제어기의 베이스 어드레스 상태 확인방법과 씨피유 상태보존 및 복원방법 - Google Patents
컴퓨터 시스템과그의 전력사용 관리방법, 인터럽트 제어기의 베이스 어드레스 상태 확인방법과 씨피유 상태보존 및 복원방법Info
- Publication number
- KR0128275B1 KR0128275B1 KR1019940014694A KR19940014694A KR0128275B1 KR 0128275 B1 KR0128275 B1 KR 0128275B1 KR 1019940014694 A KR1019940014694 A KR 1019940014694A KR 19940014694 A KR19940014694 A KR 19940014694A KR 0128275 B1 KR0128275 B1 KR 0128275B1
- Authority
- KR
- South Korea
- Prior art keywords
- state
- power
- computer system
- cpu
- routine
- Prior art date
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F1/00—Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
- G06F1/26—Power supply means, e.g. regulation thereof
- G06F1/32—Means for saving power
- G06F1/3203—Power management, i.e. event-based initiation of a power-saving mode
- G06F1/3234—Power saving characterised by the action undertaken
- G06F1/325—Power saving in peripheral device
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F1/00—Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
- G06F1/26—Power supply means, e.g. regulation thereof
- G06F1/32—Means for saving power
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F1/00—Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
- G06F1/26—Power supply means, e.g. regulation thereof
- G06F1/32—Means for saving power
- G06F1/3203—Power management, i.e. event-based initiation of a power-saving mode
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- 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)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Computer Security & Cryptography (AREA)
- Power Sources (AREA)
- Hardware Redundancy (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
Abstract
본 발명은 정규 동작 상태(normal operating state), 대기 상태(standby state), 중지상태 (suspend state) 및 오프 상태(off state)의 4가지 전력 관리 상태를 갖는 컴퓨터 시스템에 관한 것이다. 대기 상태는 비디오 제어기, 하드 드라이브와 같은 장치가 컴퓨터 시스템에 실행되는 운영체제 및 응용 프로그램에 투명한(transparent) 저-전력 모드(lower-power mode)에 놓이는 것을 특징으로 한다. 중지 상태는 실행코드가 인터럽트되는 것과 컴퓨터 시스템의 상태가 하드 드라이브에 저장된 후에 시스템 전력이 제거되는 방식으로 컴퓨터 시스템 전력이 제거되는 방식으로 컴퓨터 시스템의 상태가 하드 드라이브상의 파일에 보관되는 것을 특징으로 한다. 차후에, 시스템 전력이 복원된 후에, 컴퓨터 시스템의 상태는 하드 드라이브로부터 판독되고, 로딩되므로써 재시작되며, 이때 운영 체제 및 응용 프로그램에 나쁜 영향을 미치지 않는다. 동작 상태 및 오프 상태는 다수의 통상적인 컴퓨터 시스템의 전형적인 온 및 오프상태에 대응한다. 중지/재시작/대기 특징은 다수의 표준 구성소자 (standard components)를 사용하여 저가(low cost)로 구현된다.
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도는 본 발명의 저장 8059 상태 루틴의 상세한 흐름도.
* 도면의 주요부분에 대한 부호의 설명
17 : 전원 21 : 스위치
56: 비디오 제어기 60 : 캐시
92 : 인터럽트 제어기 102 : 타이머
106 : 전력 관리부
본 발명은 컴퓨터 시스템 구조 (computer system architecture)에 관한 것으로서, 특히 다수의 표준 구성소자를 사용하여 저 비용으로 구현되는, 통상의 정규 동작 상태 (usual normal operating state) 및 오프 상태(off state)에 부가하여 2 단계 준비 과정--사실상 전력을 필요로 하지 않는 중지 상태(suspend state)와 정규 동작 상태보다 적은 전력을 필요로 하는 대기 상태(standby state)-- 가지는 컴퓨터 시스템에 관한 것이다.
퍼스널 컴퓨터 시스템은 본 기술 분야에서 잘 알려져 있다. 일반적으로, 퍼스널 컴퓨터 시스템, 특히, IBM 퍼스널 컴퓨터는 오늘날 현대 사회의 많은 분야에 컴퓨팅 능력 (computer power)을 제공하기위해 광범위하게 사용되어 왔다.
퍼스널 컴퓨터는 전형적으로 데스크탑(desk top), 플로워 스탠딩(floor standing) 및 휴대용 마이크로컴퓨터(portable microcomputer)로 정의될 수 있는데, 이들은 단일 중앙 처리 장치(CPU), RAM 및 BIOS ROM을 포함하는 휘발성 메모리(volatile memory) 및 비휘발성 메모리(non-volatile memory), 시스템 모니터, 키보드, 하나 혹은 그 이상의 플로피 디스켓 드라이브(flexible diskette drives), 고정 디스크 저장 드라이브(fixed disk drive)(하드 디스크로도 알려짐). 소위 마우스(mouse)로 불리는 포인팅 장치(mouse pointing devices), 그리고 선택사양적 프린터(optional printer)를 포함한다. 이러한 시스템의 두드러진 특징들중의 하나는 이들 구성소자를 함께 전기적으로 접속하기 위해서 마더보드(motherboard) 혹은 시스템 플래너(system planar)를 사용한다는 것이다. 또한, 이러한 시스템은 주로 단일 사용자에게 독립적인 계산능력을 제공하도록 설계되었으며 개인이나 혹은 소규모 사업체가 구입가능하도록 낮은 가격으로 책정된다. 이러한 퍼스널 컴퓨터 시스템의 예를 들면, IBM사의 PERSONAL COMPUTER AT 및 IBM사의 PERSONAL SYSTEM/1(IBM PS/1)이 있다.
퍼스널 컴퓨터 시스템은 전형적으로 소프트웨어 (spread sheets)를 통한 데이터의 조작(manipulation of data), 데이터 베이스를 이용한 데이터 수집 및 관계 설정, 그래픽 디스플레이(displays of graphics), 시스템-설계 소프트웨어(system-design software)를 사용한 전기적 혹은 기계적 시스템 설계와 같은 다양한 동작들을 수행한다.
IBM PS/1 및 PS/2는 단일 장소에서 사용하기 위해 설계된 데스크탑 컴퓨터이다. 예를 들면, 오늘날 많은 사람들이 그들의 책상이나 혹은 컴퓨터보조 작업(computer-aided tasks) 전용방에 데스크탑 컴퓨터를 소유하고 있다. 데스크탑 컴퓨터는 전형적으로 한 장소에 설치된 후에 이동없이 한명 혹은 다수의 사용자에 의해 사용된다.
데스크탑 시스템은 네트워크(networked) 및 비-네트워크(non-network)컴퓨터 시스템으로 분류될 수 있다. 네트워크 컴퓨터 시스템들은 보다 큰 컴퓨터 시스템에 속하게 되며, 근거리망(LANs) 혹은 광역망 (WANs)을 통해 서버 (server) 나 혹은 또다른 컴퓨터에 접속된다. 이들 회로망은 특정 인터페이스 및 프로토콜(Interfaces and protocal)을 사용하여, 컴퓨터들이 효율적인 방식으로 데이터 및 프로그램을 공유토록 한다. 업무용 데스크탑 컴퓨터는 전형적으로 네트워크 컴퓨터 시스템이다. 반면에, 비-네트워크 컴퓨터는 어떠한 다른 컴퓨터와도 접속되지 않는다. 한 컴퓨터에서 다른 컴퓨터로의 데이터 전송은 한 장소내의 컴퓨터의 플로피 디스켓에 데이터를 기록하고, 다른 장소의 컴퓨터로 데이터를 판독하므로써 성취될 수 있다. 일반 가정에서 사용되는 데스크탑 컴퓨터는 전형적으로 비-네트워크 컴퓨터이다.
한 장소에서만 사용되도록 설계된 데스크탑 컴퓨터와는 달리, 휴대용 컴퓨터는 사용자가 가지고 다닐 수 있도록 설계되어 다수의 장소에서 사용이 가능한데, 이 컴퓨터는 크기에 따라 랩탑 컴퓨터(laptop computer)혹은 노트북 컴퓨터 (notebook computer)로 알려져 있으며, IBM사의 PS/2 L40 Think Pad와 같은 것이 있다. 예를 들면, 판매원은 그의 책상에서 회의 장소로 가야 하는 경우, 현재의 작업을 일시 중지하고 이 노트북 컴퓨터를 가지고 회의 장소로 갈 수 있다. 일단 회의가 시작되면, 판매원은 이 컴퓨터를 꺼내어 소프트웨어를 재실행하여, 회의도중 정보를 불러내거나 혹은 기록할 수 있다. 또다른 예를 들면, 학생들은 강의 시간까지 노트북 컴퓨터를 이용하여 집에서 학기말 리포트를 작성하고, 그 컴퓨터를 강의실에 휴대하고 가서 강의를 기록할 수 있다.
비록 사용자가 휴대용 컴퓨터를 사무실에서 사용하기 위해 사무실 LAN에 접속시키는 경우가 있지만, 전형즉으로 휴대용 컴퓨터는 비-네트워크 컴퓨터이다.
휴대용 컴퓨터는 데스크탑 컴퓨터와 여러 면에서 다르다. 휴대용 컴퓨터는 전형적으로 재충전 배터리(rechargeable batteries)로 전력을 공급받는다. 사용자는 플러그(wall-plug)로 부터의 전기를 사용하여 배터리를 충전하며, 배터리의 재충전이 필요할 때까지 컴퓨터를 사용한 후 재충전한다. 배터리가 재충전되는 동안에는 휴대용 컴퓨터를 이동시킬 수 없다.: 이 컴퓨터의 이동은 전원 코드 길이로 인해 제약을 받는다. 따라서, 재충전 배터리를 구비한 컴퓨터는 배터리가 충분히 재충전될때까지는 휴대성을 상실하게 된다. 회중 전등(flashlight)이나 혹은 다른 배터리-전원 장치처럼, 휴대용 컴퓨터가 전력을 많이 소비할수록 배터리를 재충전해야 할 때까지 컴퓨터를 사용할 수 있는 시간은 더 짧아진다. 따라서, 휴대용 컴퓨터를 구입시에 전력 소비를 중요한 변수로 간주하는 것은 컴퓨터 업계에서는 놀랄 일이 아니다. 그러므로, 컴퓨터 업계에서는 더욱더 적은 전력을 사용하는 휴대용 컴퓨터를 개발하기 위해 많은 시간과 비용을 투자하고 있다.
그러나, 여기에는 트레이드오프(trade off)가 있다. :저-전력 컴퓨터는 보다 고가(expensive)의 저-전력 소자(low-power components)를 사용해야 하며, 이 저-전력 소자는 고-전력 소자가 컴퓨터 커맨드(command)를 실행하는 속도만큼 신속하게 커맨드를 실행할 수 없다. 더구나, 휴대용 컴퓨터는 보다 고가의 소자를 사용하는 외에 전형적으로 보다 복잡한 설계를 사용하므로 비용은 더욱 증가된다.
이 휴대용 컴퓨터와 비교해 데스크탑 컴퓨터는 주로 플러그로부터 전력을 공급 받는다: 데스크탑 컴퓨터는(재충전없이 몇년동안 지속될 수 있는 실시간 클록(real-time clock)을 백업하기위한 아주 소형의 배터리를 제외하고는) 저-전력 배터리를 가지지 않는다. 결과적으로, 데스크탑 컴퓨터는 보다 신속하고 고-전력이면서 저가인 소자를 사용한다. 간단히 말하면, 휴대용 컴퓨터는 적은 전력을 사용하지만, 전형적으로 더 많은 전력을 사용하는 데스크탑 컴퓨터와 같은 강력한 계산능력을 가지지는 못한다.
오늘날 에너지 소비에 민감한 사회에서는, 하루종일 전력 공급을 받아야 하는 데스크탑 컴퓨터에 대한 간단한 대안이 있다. 한가지 대안은 휴대용 컴퓨터에 적용된 기술이다. 휴대용 컴퓨터가 일정 주기 시간, 통상 수분(a number of minute)동안, 유휴 상태(idle)인 경우, 이 컴퓨터는 고정 디스크 저장장치내 고정 디스크의 회전과 디스플레이를 자동적으로 정지한다. 이러한 두가지 동작 모두는 전력을 보존시킨다.
휴대용 컴퓨터는 또한, 배터리-전력을 보존하기 위해 또다른 보다 복잡한 방식을 채택한다. 시스템이 주어진 시간동안 유휴 상태(idle)인 경우, 어떤 휴대용 컴퓨터 설계는 데이터의 손실 없이 복원될 수 있는 방식으로 소자를 턴-오프(turn-off) 한다. 휴대용 컴퓨터는 CPU 및 그외 다른 회로에는 전력을 공급하지 않고 메모리의 전력만을 유지시키는 특별한 배터리 회로를 구비하여 데이터 손실 없이 메모리를 유지시킨다. 이러한 특별한 배터리 회로로 인하여 비용, 인쇄 회로 기판의 복잡성 및 시스템 구성 소자의 수가 증가된다. 중지/재시작 기능(suspend/resume function)을 구현하는 또다른 방법은 SL 패밀리(family)로 불리는 특별한 프로세서 패밀리의 CPU를 사용하는 것이다. SL CPU는 상이하게 설계되며, 설계자가 배터리-전력 절약 기능(battery-power saving functions)을 용이하게 구현할 수 있도록 특별한 커맨드를 가진다. 게다가, 휴대용 컴퓨터는 전형적으로 고가의 섀도우 레지스터(shadow register)를 구비하여 전형적인 컴퓨터 시스템에 볼 수 있는 다수의 기록-전용 레시스터(write-only registers)를 저장한다. 이러한 특별한 특징은 인쇄 회로기판 설계 비용과 복잡성을 증가시키며 컴퓨터 시스템 소자의 수도 증가시킨다. 더구나, 비-SL 80386 혹은 80486 상태의 저장은 불가능한 것으로 일반적으로 간주된다.
휴대용 컴퓨터와 데스크탑 컴퓨터가 상술한 차이점을 가지므로, 수요자는 노트북 컴퓨터 및 랩탑 컴퓨터가 데스크탑 컴퓨터보다 고가일 것이라 생각하며, 데스크탑 컴퓨터는 저가이면서 더 강력한 계산능력을 가지기를 예상한다. 따라서, 휴대용 컴퓨터에서 사용되는 고가이며 복잡한 기술을 사용하여 중지/재시작 방안(suspend/resume function)을 구현하는 데스크탑 컴퓨터는 너무 고가이므로 데스크탑 마켓에서는 팔리지 않는다. 그러므로, 데스크탑 설계시 전력 보존을 구현함에 있어서는, 전형적으로 기존의 소자를 이용하거나 혹은 적어도 데스크탑 시스템에 사용되는 표준 소자만큼 강력한 새로운 소자를 사용한다.
더우기, 네트워크와 비-네트워크 데스크탑 시스템은 상이한 요건(requirements)을 갖는다. 어떤 LAN프로토콜은 네트워크가 정상적으로 동작하도록 컴퓨터 시스템내 LAN하드웨어 전력을 지속적으로 공급하도록 요구한다. 비-네트워크 데스크탑 시스템은 LAN하드웨어가 없으므로, 이러한 시스템에서 LAN의 실패는 문제가 되지 않는다.
그러므로, 휴대용 시스템과 유사하거나 혹은 보다 성능이 뛰어난 전력 관리 특징(power management features)을 데스크탑 컴퓨터 시스템에 제공하는 것이 바람직하다.
또한, 유사한 특징을 지닌 휴대용 컴퓨터 시스템에서 사용되는 고가의 소자 및 보다 복잡한 설계를 사용하지 않으면서, 데스크탑 컴퓨터에 전력 관리 능력을 제공하는 것이 바람직하다.
또한, 유사한 특징을 지닌 휴대용 컴퓨터 시스템에 사용되는 고가의 소자와 보다 복잡한 설계를 사용하지 않으면서 비-SL 80386 혹은 80486상태를 저장하는 것이 바람직하다.
EPA는 에너지-효율적인 컴퓨터(energy-efficient computers)에 대한 지침을 공표해 왔다. EPA는 그린(Green) 즉, 에너지-효율적으로 간주될 수 있는 컴퓨터 시스템의 EPA 에너지 스타 요건(EPA energy star requirements)을 설정했다. 컴퓨터가 30와트(watts)보다 적은 전력을 소모하거나, 모니터(monitor)가 30와트보다 적은 전력을 소모하거나 혹은 컴퓨터와 모니터 양자 모두 각각 30 와트보다 적은 전력을 소모하는 경우, 컴퓨터는 EPA Energy Star라벨을 부착할 수 있다. 개별 제조자와의 EPA 협정 규약(Memorandums of Understanding) 에는 전력 요건이 명백히 개시되어 있다. 데스크탑 컴퓨터는 전형적으로 이러한 능력을 갖도록 설계되지는 않는다.
그러므로 그린표준을 만족하는 데스크탑 컴퓨터를 제공하는게 바람직하다.
또한, 에너지-보존 시스템(energy-conservation system)을 설계함에 있어 컴퓨터 시스템이 네트워크 데스크탑 컴퓨터인지를 고려하는 것이 바람직하다.
컴퓨터는 턴-온 될 때 전형적으로 부팅(booting)과정을 거친다. 컴퓨터가 부팅될 때, 첫동작은 파워-온 셀프-테스트(power-on self-test : POST)로 컴퓨터가 올바르게 동작하는지를 확인하기 위한 다양한 테스트를 실행한다. POST 수행후에, 컴퓨터는 전형적으로 IBM사의 PC-DOS와 같은 운영 체제(operating system : OS)를 로딩(loading)한다. OS가 로딩된 후에, 많은 컴퓨터들은 마이크로소프트사의 윈도우즈(Windos)와 같은 그래픽 사용자 인터페이스(GUI)를 로딩한다. 그다음, 사용자는 응용 소프트웨어를 개방(open)하여 작업 파일(working files)을 로딩하여야 한다. 이러한 전 과정은 상당한 시간--어떤 경우에는 수분 --이 걸릴 수 있다.
컴퓨터 시스템을 부팅하고 OS 및 GUI를 로딩하고, 응용 프로그램을 로딩하기를 기다리는 사용자에게 비록 수 분이 많지 않은 시간처럼 보일지 모르지만, 이 시간은 비생산적이자 지루한 시간이며, 그들의 컴퓨터를 턴-오프하여 전력을 절약하기가 매우 불편하므로, 사실상 사용자가 전력 보존을 못하도록 만든다. 즉, 수동 전력 관리 방안(manul power management schemes)은 이러한 사용상의 불편함(usability penalties)으로 인하여 실용적이지 못하다.
따라서, 유용성을 크게 해치니 않으면서 전력 관리 능력을 가지는 데스크탑 컴퓨터를 제공하는게 바람직하다. 즉, 전력-보존 모드(power-conservation mode)를 가지는 컴퓨터 시스템으로서, 수용가능한 양의 시간(acceptable amount of time)내, 그리고, 이 시스템을 재시작하는데 걸리는 시간보다 적은 시간이 걸리는 이벤트(event)에 의해, 차후에 재시작할 수 있는 컴퓨터 시스템을 제공하는게 바람직하다.
가끔 컴퓨터상에서 응용 프로그램이 실행되고 있는 동안, 사용자는 데스크탑 컴퓨터를 유휴상태로 둘 수 있다. 예를 들면, 사용자가 판매 리포트를 준비하기 위해 문서 처리 프로그램과 스프레드시트 프로그램을 동시에 사용중일 때, 전화벨이 울려 컴퓨터 책상으로부터 멀리 불려간다 하더라도, 컴퓨터는 여전히 응용 프로그램을 실행한다. 효과적인 전력 관리 구현은 전력 보존과 동시에, 예를 들어, 프로그램 실행 중에 컴퓨터 전원이 꺼지는 일이 발생하더라도 데이타 손실을 막을 수 있어야 한다. 게다가, 현존 소프트웨어 응용 프로그램은 자동적으로 그들의 상태를 저장하지 못하므로, 그들이 인터럽트(interrupt)된 곳에서 재시작할 수 없다.
따라서, 시스템상에서 응용 프로그램이 실행되는 동안, 전력-보존 모드(power-conservation mode)로 진입가능한 컴퓨터를 제공하는 것이 바람직하다. 더 나아가, 이러한 전력 보존 모드가 응용 소프트웨어에 투명(transparent)하도록 하는게 바람직하다.
가끔, 데스크탑 컴퓨터의 사용자는 컴퓨터가 잠시동안 필요치 않게 될 것이라는 것을 알때가 있다. 이 때는, 전력-보존 모드로 진입하기에 충분히 긴 유휴시간이 있었는지를 판단하는 동안, 컴퓨터에 사용되는 전력을 절약하기 위해 사용자가 컴퓨터를 수동으로 전력-보존 모드로 진입시키는 것이 바람직하다.
따라서, 우선, 응용 프로그램을 빠져나오지 않고서도 사용자가 수동으로 데스크탑 컴퓨터를 전력 보존 모드로 진입시킬 수 있고, 컴퓨터 전원이 턴-오프되지 않았던 것처럼 응용프로그램을 다시 재시작(resume )할 수 있도록 하는 것이 바람직하다.
전형적인 휴대용 컴퓨터는 전력 제어를 위한 스위치(switch)와 중지/재시작 기능을 구현하기 위한 또다른 스위치를 가지고 있다. 이로 인해 사용자의 혼란이 발생되며, 휴대용 컴퓨터의 비용과 복잡성이 증가된다. 따라서 다수의 버튼(buttons)을 사용하지 않고서도 전술한 전력-보존 능력을 가지는 컴퓨터를 제공하는 것이 바람직하다.
본 발명에 따라, 컴퓨터 시스템은 4 가지 상태로 설계된다: 즉, 정규 동작 상태(normal operation state), 대기 상태(standby state), 중지 상태(suspend state) 및 오프상태(off state)가 그들이다.
본 발명의 컴퓨터 시스템의 정규 동작 상태는 전형적인 데스크탑 컴퓨터의 정규 동작 상태와 사실상 동일하다. 사용자는 응용 프로그램을 사용할 수 있으며, 기본적으로 다른 컴퓨터들처럼 다룰 수 있다. 단, 한가지 차이는 사용자에게 투명(transparent)한 백그라운드(background) (BIOS 및 운영체제)에서 운영되는 전력 관리 구동기(power management driver)의 존재이다. 운영체제(OS)의 전력 관리 구동기 부분은 인텔사 및 마이크로소프트사에 의해 작성된 고급 전력 관리(Advanced Power Management, APM)고급 프로그래밍 인터페이스(advanced programming interface) 이며, 이제 인텔사의 80X86 패밀리 프로세서 상에서 작동되는 대부분의 운영체제에서 제공된다. BIOS(APM BIOS)에 있는 전력 관리 구동기는 본 발명에 있어 독특한 것이며, APM OS 구동기와 통신한다. APM OS 구동기와 APM BIOS 구동 루틴(routines)은 함께 컴퓨터의 또다른 3가지 상태로부터의 변환을 제어한다.
제 2 상태, 즉, 대기 상태는 정규 동작 상태의 전력보다 적은 전력을 사용하면서도, 모든 응용 프로그램이 다른 때 실행되던 것처럼 실행되도록 한다. 일반적으로, 전력은 장치들을 그들 각각의 저-전력 모드로 놓으므로써 대기 상태에서 보존된다. 예를 들면, 하드 디스크내 고정 디스크의 회전을 멈추고 , 비디오 신호의 발생을 중지하므로써 전력을 보존시킨다. 첫째로, 정규 동작 상태에서, 고정 디스크 저장장치내 고정 디스크는 전형적으로 분당 3600 회전(RPM)으로 항상 회전한다. 대기 상태에서, 고정 디스크 제어기는 고정 디스크 저장장치내 고정 디스크의 회전을 멈추게 하므로써, 고정 디스크 회전동안 전형적으로 고정 디스크 저장장치내 모터가 소비하는 전력을 보존시킨다.
두 번째, 정규 동작 상태에서, 컴퓨터 시스템의 비디오 제어기는 비디오 디스플레이 단말기상에 나타난 이미지에 대응하는 비디오 신호를 항상 발생한다. 대기 상태에서, 비디오 제어기는 비디오 신호의 발생을 중지하여(HSYNC, VSYNC, R, G, 및 B는 대략 0.00 VDC로 구동된다.), 이 비디오 제어기가 정상적으로 소비하는 전력을 보전한다. 어떤 시스템은 스크린-절약장치(screen-savers)를 가지고 있는데, 이 스크린-절약장치는 스크린을 어둡게 하므로써 비디오 디스플레이 단말기 전면에서의 포스포 번-인 현상(phosphor burn-in)을 방지한다. 이러한 대부분의 시스템에서, 비디오 제어기는 여전히 비디오 신호를 발생한다.; 단지 어두운 스크린에 상응한 비디오 신호를 발생한다. 따라서, 스크린 절약장치를 실행하는 컴퓨터 시스템은 여전히 비디오 신호를 발생시키는데 필요한 전력을 소비하며, 따라서 , 에너지-절약 상태(energy-saving state)에 놓일 수가 없다.
전술한 예들은 단순히 설명을 위한 것이며, 본 발명을 제약하려는 것은 아니다. 대안으로서, 또다른 장치들이 그들 각각의 저-전력 모드로 놓을 수가 있다. 예를 들면, HSYNC 및 VSYNC가 대략 0.00 VDC 인 경우, VESA방식 모니터는 자기자신을 턴-오프한다. 대기 상태에서, HSYNC 및 VSYNC가 대략 0.00 VDC이다. 그러므로, VESA 방식 모니터는 본 발명 시스템의 대기 상태로 진입할 것이다. 시스템이 대기 상태를 종료하고 정규동작 상태로 진입할 때, VESA방식 모니터는 그의 해당 정상-전력 모드로 진입할 것이다. 또다른 예를 들면, 대기 상태동안 CPU클록은 느려지거나 혹은 정지한다. 대기 상태가 종료되면, CPU 클록은 원래의 속도로 되돌아간다.
모든 데스크탑 시스템이 대기 상태를 채용하므로써 이득을 볼 수 있으나, 대기 상태는 대부분의 네트워크 컴퓨터 시스템처럼 전력 공급이 유지되어야 하는 시스템에서 전력을 절약하는 데 있어 이상적이다. 시스템 플래너에는 전력 공급이 유지되므로, LAN 하드웨어는 고정 디스크가 더 이상 회전하지 않는다거나 혹은 비디오 제어기가 비디오 신호를 발생하지 않는다는 사실에 영향을 받지 않는다. 이와 동일하게 컴퓨터 시스템상에서 실행되는 소프트웨어 응용 프로그램은 고정 디스크 및 비디오 제어기의 상태를 인식하지 못한다. 응용 프로그램이 디스플레이하려는 이미지를 변경하면, 그 응용 프로그램은 이를 반영한다. 일단, 비디오로 제어기가 비디오 신호를 발생하기 시작하면, 새로운 이미지가 디스플레이 될 것이다. 또한, 대기상태의 컴퓨터상에서 실행되는 응용 프로그램이 고정 디스크 저장장치를 액세스하려 시도하는 경우, 컴퓨터 시스템은 다시 고정 디스크를 회전시키기 시작하여 고정 디스크 저장장치를 액세스할 것이다. 이러한 모든 프로세스는 응용 프로그램 및 운영 체제에 투명(transparent)하다.
제 3 상태는 중지 상태(suspend state)이다. 중지 상태에서, 컴퓨터 시스템은 극히 적은 양의 전력만을 소비한다. 중지된 컴퓨터 시스템은 콘센트(wall outlet)로부터 매우 적은전력을 소비한다. 소비되는 전력은 단지 (시스템의 플러그를 콘센트에 끼우지 않았을 때) 컴퓨터 시스템내 배터리로 부터의 스위치 회로 유지를 위한 소량의 전력이거나, 혹은 (시스템의 플러그를 콘센트에 끼웠을 때) 전원장치에서 발생되는 소량의 전력이다.
이러한 소량의 전력 사용은 전원이 턴-오프 되기 전에 컴퓨터 시스템 상태를 고정 디스크 저장장치 (하드 드라이브)에 저장하므로써 이루어질 수 있다. 중지 상태에 진입하기 위해, 컴퓨터 시스템은 실행중인 CPU코드(code)를 인터럽트하고 컴퓨터 제어를 전력 관리 구동기에 전달한다. 전력 관리 구동기는 컴퓨터 시스템의 상태를 확인하여 이 상태를 고정 디스크 저장장치에 기록한다. 이런식으로, CPU 레지스터, CPU 캐시, 시스템 메모리, 시스템 캐시, 비디오 레지스터, 비디오 메모리 및 그 외 다른 장치들의 레지스터 상태가 저장된다. 시스템의 전체 상태는 인터럽트에 영향을 받는 응용프로그램 없이도 복원(restore) 될 수 있도록 저장된다. 그 다음, 컴퓨터는 컴퓨터가 중지되었음을 나타내는 데이터를 비휘발성 CMOS 메모리에 기록한다. 컴퓨터의 전체 상태는 안전하게 고정 디스크 장치에 저장되며, 시스템 전력은 현재 오프(off) 이며, 이 상태에서, 컴퓨터는 스위치 회로에 전력을 공급하기 위해 전원으로부터 소량의 통제된 전력만을 수신한다.
중지 상태는 어떤 불리한 결과도 초래함이 없이 모든 시스템 전력이 제거 될 수 있는 컴퓨터 시스템에 있어 이상적이다. 전력-오프 상태에서 복원(recover)할 수 있는 비-네트워크 컴퓨터 및 네트워크 컴퓨터가 전형적으로 중지된다.
제 4 상태이자 마지막 상태는 오프 상태(off state)이다. 이 상태에서 전원은 컴퓨터 시스템에 통제된 전력 공급을 중지하지만 시스템의 상태는 고정 디스크에 저장되지는 않는다. 전형적인 데스크탑 컴퓨터의 일반적인 방식인 턴-오프 상태와 사실상 동일하다.
한 상태에서 다른 상태로의 스위칭은 전력 관리 구동기에 의해 처리되며, 전형적으로 단일 스위치(switch)의 폐쇄 이벤트(closure events), 플래그(flag) 및 2개 타이머들(timers)을 근거로 한다: 비활동(inactivity) 대기 타이머, 및 비활동 중지 타이머. 키보드상의 키가 눌려지거나, 마우스를 움직이거나, 마우스 버튼을 누르거나 혹은 하드 파일 활동(hard file activity)과 같은 사용자의 활동이 없을 때, 두 타이머는 계수하기 시작한다. 시스템의 비활동 대기 타이머가 종료 될 때, 이 시스템은 전술한 바와 같은 대기 상태로 진압한다.
전형적으로, 비활동 중지 타이머는 비활동 대기 타이어 보다 긴 시간 주기로 설정될 것이다. 따라서, 컴퓨터는 일반적으로 정규 동작 상태에서 우선 대기 상태로 변한다. 그 다음, 컴퓨터 시스템은 또다른 비활동 주기경과 후에 중지상태로 진입할 것이다. 중지 상태를 용인할 수 없는 네트워크 시스템의 사용자는 비활동 중지 타이머가 결코 경과되지 않도록 선택적으로 설정할 수 있다.
어떤 사용자는 2가지 비활동 타이머(inactivity timers)를 리셋(reset)하므로써, 사용자가 시스템을 동작시키는 동안에 컴퓨터가 대기 상태 혹은 중지 상태로 진입하지 못하도록 한다.
대기 상태인 시스템에서, 사용자가 마우스를 움직이거나 혹은 키보드의 키를 건드리거나, 혹은 CPU상에서 실행되는 코드가 하드드라이브를 액세스한다면, 이 시스템은 대기 상태를 벗어나 정규 동작 상태로 변한다. 이 경우, 비디오 제어기는 비디오 신호를 다시 발생하기 시작하며, 고정 디스크는 다시 회전한다. 그러나, 중지 상태인 시스템에서, 사용자가 마우스를 움직이거나 혹은 키보드상의 키보드를 건드리는 경우에는, 이 시스템은 자동적으로 정규 동작 상태로는 변하지 않는다.
시스템은 단일 전력 버튼(single power button)을 가진다. 이 버튼은 컴퓨터 시스템의 턴-온, 중지, 상태 복원 및 턴-오프에 사용될 수 있다. 정규 동작 상태 혹은 대기 상태의 시스템에서 사용자가 버튼을 누르면, 컴퓨터는 플래그(flag) 값에 따라 중지 상태 혹은 오프 상태로 변한다. 플래그가 버튼이 눌려졌을 때 시스템이 중지되어야 한다고 표시하는 경우, 이 시스템은 중지되기 시작하여, 결국 중지 상태로 진입한다. 플래그가 버튼이 눌려졌을 때 시스템이 단지 턴-오프 되어야 한다고 표시하는 경우, 이 컴퓨터는 단지 오프 상태로 진입한다. 사용자는 플래그를 제어할 수 있다. 즉, 정규 동작 상태동안 버튼이 눌려질 때, 사용자는 시스템이 중지인지 혹은 턴-오프인지를 결정할 수 있다는 것이다. 또한, 운영체제에 전력 관리 구동기가 없을 때, 스위치는 전력의 단순한 온/오프 스위치 (on/off switch)로 동작한다.
오프 상태인 컴퓨터 시스템에서 전력 버튼이 눌려지면, 이 시스템은 정상적으로 시작할 것이다. 중지 상태인 컴퓨터 시스템에서 전력 버튼이 눌려지는 경우, 오퍼레이터는 선택할 수 있다. : 정상적으로 시스템을 시작하든지 혹은 중지되었을때의 시스템 상태로 시스템을 복구한다. 사용자가 응용 프로그램을 사용하는 도중에 시스템을 중지한 경우에는, 사용자는 아마도 컴퓨터 시스템의 상태를 복원하기를 희망할 것이다. 그러나, 어떤 이유로 사용자가 컴퓨터를 새롭게 시작하고 중지된 시스템을 포기하기를 희망하는 경우에는 이를 선택 할 수 있는 수단이 제공된다.
중지 상태에서 정규 동작 상태로 변경할 때, 컴퓨터 시스템은 응용 프로그램이 이러한 인터럽트에 의해 영향받지 않도록 컴퓨터 시스템의 상태를 복원해야만 한다. 고정 디스크로부터 CPU 레지스터, CPU 캐시, 시스템 메모리, 시스템 캐시, 비디오 레지스터, 및 비디오 메모리의 상태는 모두 판독되어야 한다. 전체 시스템 상태를 저장하여, 응용 프로그램이 그들이 인터럽트된 곳에서 진행되도록 해야 한다.
전력을 절약하기 위해 시스템을 단지 턴-오프 시키고 시스템을 다시 턴-온시키는 것에 비해, 중지/재시작을 사용하면 상당한 시간-절약을 가져온다.
게다가 , 대기 레벨 및 중지 레벨은 그린컴퓨터 시스템에 대한 EPA Energy Star 요건을 만족시킨다.
본 발명의 상기한 장점 및 기타 다른 장점들은 본 발명의 상세한 설명으로부터 보다 명백해질 것이다.
본 발명에 병합되어 본 명세서의 한 부분을 구성하는 첨부 도면에서, 본 발명의 실시예들이 예시되었으며, 전술한 본 발명의 일반적인 설명 및 하기한 본 발명의 상세한 설명과 함께 본 발명의 원리를 통해 이해할 수 있을 것이다.
비록, 본 발명이 본 발명의 바람직한 실시예가 도시된 첨부 도면을 참조하여 이하 상세히 기술될 것이지만, 당업자라면 본 발명의 바람직한 결과를 얻으면서도 다양한 변경을 가할 수 있음을 이해하여야 할 것이다. 따라서 다음의 설명은 당업자를 지향하여 광범위한 설명적인 내용을 담고 있으며, 본 발명을 제약하려는 것은 아님을 이해해야 할 것이다. 본 발명은 단지 컴퓨터 구조 설계에만 한정되지 않으며, 디지털 설계, BIOS 설계, 보호모드 80486 코드 설계(protected mode 80486 code design), 응용 코드설계, 운영 체제 코드 설계, 및 고급 전력 관리 고급 프로그래밍 인터페이스 사용을 포함하는 컴퓨터 시스템의 완전한 설계(complete design)를 다루고 있다. 본 출원서 컴퓨터 시스템의 모든 면에 대해 잘 알고 있는 이들을 위해 쓰여졌다.
이제 첨부 도면을 보다 상세히 참조하면, 본 발명을 구체화한 마이크로 컴퓨터 시스템이 도시되어 있으며, 참조번호 (10)(제1도) 로 표시되어 있다. 전술한 바와 같이, 컴퓨터(10)은 연관된 모니터 (11), 키보드(12), 마우스(13), 그리고, 프린터 혹은 플로터(14)를 구비하고 있다. 컴퓨터(10) (제2도)는 샤시(chassis)(19)와 함께 밀봉되고 차폐된 용적을 정의하는 장식용 외부 부재 (16)와 내부차폐 부재(inner shield member) (18)로 형성된 커버(15)를 구비하며, 밀봉되고 차폐된 용적내에 디지털 데이터를 처리하고 저장하기 위한 데이터 처리 및 저장소자를 가진다. 적어도 소정 소자는 다층 플래너(20) 혹은 샤시(19)상에 장착된 마더보드에 장착되며, 플로피 디스크 드라이브(floppy disk drives), 다양한 형태의 직접액세스 저장장치, 보조 카드 혹은 보드등과 같은 연관된 소자와 전술한 소자를 포함한 컴퓨터 소자를 전기적으로 상호접속시키는 수단을 제공한다. 차후에 보다 상세히 지적하는 바와 같이, 마이크로컴퓨터의 운영 소자로부터 입력/출력 신호를 전송하기 위한 수단이 플래너(20)에 제공된다.
컴퓨터 시스템은 전원(17) 및 이하 스위치(21)로 지칭되는 전력 버튼(21)을 구비한다. 전형적인 시스템의 통상적인 전원 스위치와는 달리, 전력 버튼(21)은 전원(17)으로부터 비통제된 (unregulated) 라인 전력을 스위칭하지 않는다. 샤시(19)는 베이스(base) (22), 전면 패널(front panel) (24), 후면 판넬(25) (제2도)을 가진다. 전면 패널(24)은 적어도 하나의 개방만 (open bay) (도시된 형태에서는 4개의 만)을 규정하여 자기(magnetic)혹은 광학(optical)디스크를 위한 디스크 드라이브, 테이프 백업 드라이브등과 같은 데이터 저장장치를 수용한다. 도시된 형태에서는 한쌍의 상부만(26, 28), 한쌍의 하부만 (29, 30)이 제공되어 있다. 하나의 상부만 (26)은 (3.5인치와 같은) 제 1크기의 주변 드라이브(peripheral drive)를 수용하는 적합화 되며, 다른 상부만(28)은 (3.5와 5.25인치와 같은 )2가지 크기중 선택된 하나를 받는데 적합화 된다. 하부만들은 단지 한가지 크기 (3.5인치)의 장치를 수용하도록 적합화된다. 제1도에 도시된 플로피 디스크 드라이브는(27) 재거가능 매체 직접 액세스 저장장치(removable medium direct access storage device)이며, 일반적으로 알려진 바와 같이, 그 속에 디스켓을 삽입할 수 있으며, 이 디스켓을 사용하여 데이터를 수신, 저장 및 전송할 수 있다. 하드 디스크(31)는 알려진 바와 같이, 데이터를 저장 및 전송할 수 있는 고정매체 직접 액세스 저장장치이다.
상술한 구조를 본 발명과 관련짓기에 앞서, 퍼스널 컴퓨터 시스템(10)의 일반적인 동작에 대한 개요를 재검토하는 것이 좋을 것이다. 제3도를 참조하면, 본 발명에 따라, 시스템(10)과 같은 컴퓨터 시스템의 플래너 (20)에 장착된 소자, I/O 슬롯에 플래너의 연결 및 다른 하드웨어를 포함하는 다양한 구성 소자를 예시하는 퍼스널 컴퓨터 시스템이 도시되어 있다. 플래너에 접속된 시스템 프로세서(40), 본 명세서에서, CPU(40)는 마이크로프로세서를 포함하며, 고속 CPU 로컬버스(42)에 의해 메모리 제어 장치(46)에 접속되고, 또한 이 메모리 제어 장치(46)는 메모리 제어기 (48), 어드레스 멀티플랙서(50) 및 데이터 버퍼(52)를 포함한다. 메모리 제어 장치(46)는 4개의 RAM 모듈 (54)로 된 랜덤 액세스 메모리 (53)에 접속된다. 또한, 메모리 제어기 (48)는 특정 RAM(53) 영역으로 마이크로프로세서 (40)로부터/로 어드레스를 사상(mapping)하는 논리를 포함한다. 앞서 BIOS가 차지한 RAM을 재이용하기 위해 이 논리를 사용한다. 메모리 제어기(48)는 ROM선택 신호(ROMSEL)를 발생하여 ROM(88)을 이네이블(enable)혹은 디스에이블(disable)시킨다. 시스템 프로세서(40)로는 임의의 적절한 마이크로프로세서가 사용될 수 있는데, 한가지 적당한 마이크로 프로세서를 들면 인첼사의 80486이다. 인텔 80486은 내부 캐시를 가지므로, 인텔 80486의 CPU(40)는 CPU캐시(41)를 가진다.
본 발명은 특히 제3도 시스템 블록도를 참조하여 기술되겠지만, 본 발명에 따른 장치 및 방법은 플래너 보드의 다른 하드웨어 구성과 함께 사용될 수 있다는 것을 알아야 한다. 예를 들면, 시스템 프로세서(40)는 인텔 80286 혹은 80386 마이크로프로세서일 수 있다. 여기에 사용된 80286,80386 혹은 80486에 관한 언급은 일반적으로 인텔사의 마이크로프로세서를 의미한다. 그러나, 최근에 또다른 제조자들은 인텔 X86구조의 인스트럭션 집합을 실행할 수 있는 마이크로프로세서를 개발해 왔으며, 상술한 용어는 이 인스트럭션 집합을 실행할 수 있는 마이크로 프로세서를 포함하기 위해 사용된다. 당업자들이 아는 바와 같이, 초기의 퍼스널 컴퓨터는 시스템 프로세서로 유명한 인텔 8088 혹은 8086 마이크로 프로세서를 전형적으로 사용했다. 이 프로세서들은 1메가바이트(megabyte) 메모리를 어드레스지정 할 수 있는 능력을 가진다. 보다 최근에, 퍼스널 컴퓨터는 전형적으로 고속인 인텔 80286,80386, 및 80486 마이크로 프로세서를 사용하는데, 이 프로세서들은 저속 8086 마이크로프로세서를 모방(emulate)하기 위해 가상(virtual) 혹은 실(real) 모드, 혹은 어떤 모델에 있어 1 메가바이트에서 4기가 바이트(Gigabyte)로 어드레스 지정 범위를 확장하는 보호모드(protected mode)로 동작할 수 있다. 본질적으로, 80286,80386, 및 80486의 실모드 특징은 8086과 8088 마이크로프로세서용으로 작성된 소프트웨어에 하드웨어의 호환성을 제공하는 것이다. 전술한 인텔사 패밀리의 프로세서들은 주로, 486처럼, 전체 유형명칭(type designator)의 마지막 3개의 디지트(digit)에 의해 식별된다.
제3도를 다시 참조하면, (데이타, 어드레스 및 제어 버스를 포함하는) CPU 로컬 버스 (42)는 마이크로프로세서 (40), 수치 코프로세서(math coprocessor) (144), 비디오 제어기 (56), 시스템 캐시 메모리 (60), 그리고 캐시 제어기 (62)의 접속을 제공한다. 비디오 제어기 (56)는 연관된 모니터 (혹은 비디오 디스플레이 단자)(57) 및 비디오 메모리 (58)를 가진다. 또한, CPU로컬 버스상에 버퍼 (64)가 연결된다. 버퍼(64)는 (CPU 로컬버스(42)와 비교하여) 저속 시스템 버스 (66)는 버퍼(64)와 또 다른 버퍼(68)간을 연결한다. 시스템 버스(66)는 버스제어, 타이밍 장치 (70) 및 DMA장치 (71)에 또한 접속된다. 부가적인 버퍼 (74)는 시스템 버스 (66)와 산업 표준 구조(Industry Standard Architecture, ISA)버스 (76)와 같은 선택사양적인 특징을 갖는 버스 사이의 인터페이스를 제공한다. 버스 (76)에는 (도시되지 않은) ISA 어댑터 카드를 수용하기 위해 다수의 I/O 슬롯(78)이 연결된다. ISA 어댑터 카드는 I/O 슬롯 (78)에 플러그로 연결되어, 시스템 (10)에 부가적인 I/O장치 혹은 메모리를 제공한다.
중재 제어 버스(arbitration control bus)(80)는 DMA제어기 (72) 및 중앙 중재기(82)를 I/O 슬롯 (78), 디스켓 어댑터 (84) 및 IDE(Integrated Drive Electronics)고정 디스크 제어기 (86)와 연결시킨다. 마이크로컴퓨터 시스템 (10)은 기본 4 메가바이트 RAM 모듈 (53)을 구비하는 것으로 도시되었지만, 추가로 제공된 선택사양적 고-밀도 메모리 모듈(optional higher-density memory modules)(54)과 같은 부가적인 메모리를 부가하여 제3도에 도시된 바와 같이 부가적인 메모리와 상호접속시킬 수 있다는 것을 이해해야 한다. 본 발명은 단지 예시를 위해 기본 4 메가바이트 메모리 모듈을 참조하여 설명된다.
래치 버퍼 (68)는 시스템 버스 (66)와 플래너 I/O버스 (90)사이에 연결된다. 플래너 I/O버스 (90)는 어드레스, 데이터, 제어 버스를 포함한다. 플래너 I/O버스 (90)을 따라 다양한 I/O 어댑터(84)와 또다른 소자, 즉, 디스켓 어댑터(84), IDE 디스크 어댑터(86), 인터럽트 제어기 (92), RS-232 어댑터(94), 또한 여기에 NVRAM으로 언급된 비휘발성 CMOS RAM(96), CMOS실시간 클록(98), 병렬 어댑터(100), 다수의 타이머(102), 판독전용 메모리(ROM) (88), 8042 (104), 그리고 , 전력 관리 회로(106)와 같은 소자에 연결된다. 8042(104)는 종속 마이크로프로세서(slave microprocessor)로서, 키보드(12)와 마우스(13)를 인터페이스한다. 전력관리회로(106)는 제 6도에 도시되었으며, 제6 및 7도를 참조하여 보다 상세히 기술될 것이다. 판독 전용 메모리 (88)는 마이크로프로세서(40)의 운영체제와 I/O장치간의 인터페이스에 사용되는 BIOS를 포함한다. ROM(88)에 저장된 BIOS는 RAM(53)으로 복사되어 BIOS의 실행시간을 감소시킬 수 있다. ROM(88)은 (ROMSEL 신호를 통해) 메모리 제어기(48)에 또한 응답한다. ROM은 마이크로프로세서 (40)로 부터의 어드레스 조회(address inquiries)에 응답치 않는다 (즉, BIOS는 RAM에서 실행된다. )
실시간 클록(98)은 당일의 시간 계산에 사용되고, NVRAM(96)은 시스템 구성 데이터(system configuration data)를 조정하기 위해 사용된다. 즉, NVRAM(96)은 본 시스템 구성을 나타내는 값을 포함할 것이다. 예를 들면, NVRAM(96)은 고정 디스크 혹은 디스켓 용량, 디스플레이 유형, 메모리 용량, 시간, 날짜등의 정보를 포함한다. 특히 중요한 것은, NVRAM은 (하나의 비트일 수 있는) 데이터를 포함하는데, 메모리 제어기(48)는 이 데이터를 이용하여, BIOS가 ROM혹은 RAM에서 실행되는지와 BIOS RAM에 의해 사용되도록 의도된 RAM을 재사용 할 지를 판단한다. 더우기, 세트 구성(SET Configuration)과 같은 특정 구성 프로그램이 실행될 때마다, 이 데이터는 NVRAM에 저장된다. 세트 구성 프로그램의 목적은 시스템의 특정짓는 값을 NVRAM에 저장하는 것이다.
전술한 거의 모든 장치는 휘발성 레지스터를 포함한다. 불필요한 도면의 혼잡을 막기 위해, 특정 장치의 레지스터는 그 장치로 참조될 것이다. 예를 들면, CPU(40) 레지스터는 CPU레지스터로 칭하며, 비디오 제어기 (56) 레지스터는 비디오 제어기 레지스터로 칭할 것이다.
전술한 바와 같이, 컴퓨터는 샤시(19)과 함께 밀봉되고 차폐된 용적을 형성하는 커버를 구비하여, 마이크로컴퓨터의 앞서 언급한 소자를 포함한다. 커버(15)는 바람직하게, 주조가능한 합성물질(modable synthetic material)로 제조된 단일 주조 소자인 외부 장식용 커버 부재 (16)와 장식용 커버 부재의 형상에 맞춰 형성된 얇은 금속판 라이너(a metallic thin sheet liner)(18)로 형성된다. 그러나, 커버는 다른 알려진 방식으로 제조될 수 있으며, 또한, 본 발명의 유용성은 개시된 유형에 한정되지 않는다.
동작상태
이제 제4도를 참조하면, 본 발명의 컴퓨터 시스템의 상태도(state diagram)가 도시되어 있다. 본 발명의 시스템(10)은 4가지 상태를 가진다: 정규 동작 상태 (150), 대기 상태 (152), 중지 상태 (154), 오프 상태 (156). 제4도에 도시된 상태들간의 전이는 바람직한 실시예의 설명을 위한 것일 뿐 본 발명을 한정하려는 것은 아니다. 따라서, 부가적인 이벤트가 상태 전이를 일으키는데 사용될 수 있다.
본 발명의 컴퓨터 시스템 (10)의 정규 동작 상태(150)는 전형적인 데스크탑 컴퓨터의 정규 동작 상태와 본질적으로 동일하다. 사용자는 응용 프로그램을 사용할 수 있고, 기본적으로 임의의 다른 컴퓨터처럼 다룰 수가 있다. 사용자에게 있어 한가지 분명히 다른 점은 운영 체제내 전력 관리 구동기(APM OS 구동기)의 존재로서, 백그라운드 및 다양한 APM BIOS 루틴에서 실행된다. APM BIOS 루틴은 후술될 것이며, 중지(suspend)루틴, 재시작(resume) 루틴, 부터-업(boot-up)루틴, 감시(supervisor) 루틴, 저장 CPU 상태(save CPU stare)루틴, 그리고, 복원 CPU 상태(restore CPU state)루틴을 포함한다. 도면에 도시되지 않은 APM BIOS루틴은 APM BIOS 라우팅 루틴(APM BIOS Routing Routine)이다. APM BIOS 라우팅 루틴은 본질적으로 APM OS 구동기의 커맨드(command)를 수신하여 적절한 APM BIOS루틴을 호출한다. 예를 들면, APM OS구동기가 중지 커맨드를 내릴 때, APM BIOS 라우팅 루틴은 중지 루틴을 호출한다. 또다른 예를 들면, APM OS 구동기가 획득-이벤트 커맨드(Get Event command)를 내릴 때, APM BIOS 라우팅 루틴은 감시 루틴을 호출한다. 이 루틴들은 BIOS내 위치하며 BIOS가 섀도우될 때 같이 섀도우 된다. OS 와 APM BIOS 루틴내 전력 관리 구동기는 컴퓨터의 4가지 상태간 전이를 제어한다. 문맥상 다른 것을 지칭할 수도 있지만, 단어 APM는 일반적으로 APM OS 구동기를 지칭한다.
두 번째 상태, 즉, 대기 상태 (152)는 정규 동작 상태 (150)보다 적은 전력을 사용하면서도, 응용 프로그램이 통상 실행되던것 처럼 실행될 수 있도록 한다. 일반적으로, 대기 상태 (152)에서 전력은 장치를 각각 저전력 모드로 전환시키는 코드에 의해 절약된다. 바람직한 실시예에서는, 대기 상태 (152)에서 고정 디스크 저장장치 (31)내 (도시되지 않는) 고정 디스크의 회전을 정지시키고, 비디오 신호의 발생을 중지함으로써 전력을 보존하는데, 이는 차후에 보다 상세히 기술될 것이다. 그러나, 이는 본 발명을 한정하려는 것이 아니며, 전력 소비 감소를 위해 CPU 클록을 느리게 하거나 혹은 정지시키는 것과 같은 다른 방법을 사용할 수 있다.
바람직한 실시예에서, 전력은 2개의 독립된 방식으로 보존된다. 먼저, 정규 동작 상태 (150)에서, 고정 디스크 저장장치 (31)내 고정 디스크는 전형적으로 분당 3600 회전수(RPM)로 항상 회전한다. 대기 상태 (152)에서, IDE 디스크 제어기 (86)는 고정 디스크 저장장치 (31)가 저-전력 모드로 진입토록 커맨드를 내려 (고정 디스크 저장장치 (31)내 고정 디스크의 회전을 정지) 고정 디스크의 회전동안 고정 디스크의 저장장치(31)내 (도시되지 않은)모터 (motor)가 전형적으로 소비하는 전력을 절약한다.
두 번째, 정상동작 상태 (150)에서, 컴퓨터 시스템의 비디오 제어기 (56)는 비디오 디스플레이 단자(57)에 나타난 이미지와 상응한 비디오 신호 (본 기술분야에서 잘 알려진 HSYNC 및 VSYNC, R, G, B 등)를 항상 발생한다. 대기 상태(152)에서, 비디오 제어기(56)는 비디오 신호 발생을 멈추어 비디오 제어기(56)가 소비하는 전력을 보존한다. HSYNC 및 VSYNC R, G, B 는 모두 대략 0.00 VDC로 구동된다. HSYNC 및 VSYNC가 대략 0.00 VDC일 때, VESA(Video Electronics Starndards Association)방식 모니터는 그들 자신을 턴-오프 한다.
어떤 시스템은스크린-절약장치(screen saver)를 구비하여, 스크린(57)을 어둡게 함으로써 비디오 디스플레이 단자 전면에서의 포스포 번-인 현상을 방지한다. 이러한 대부분의 시스템에서, 비디오 제어기 (56)는 어두운 스크린 혹은 동적 디스플레이(dynamic display)에 상응한 비디오 신호를 여전히 발생한다; 따라서, 스크린-절약장치를 실행하는 컴퓨터 시스템은 이 비디오 신호를 발생하는데 필요한 전력을 여전히 소비한다.
세 번째 상태가 중지 상태(154)이다. 중지 상태(154)에서, 컴퓨터 시스템은 아주 소량의 전력을 소비한다. 바람직한 실시예에서, 중지된 컴퓨터는 콘센트로부터 5 와트(watts)보다 적은 전력을 소비한다. 제5도와 관련하여 차후에 보다 상세히 기술하는 바와 같이, 소비된 전력은 단지 전원(17)의 AUX5 출력으로부터 혹은 컴퓨터 시스템내 배터리(171)로 부터의 극히 소량의 전력으로 스위치(21)를 감시하기 위한 것이다.
이러한 극히 소량의 전력 사용은 전원이 턴-오프되기에 앞서 컴퓨터 시스템의 상태를 고정 디스크 저장장치 (하드 드라이브)에 저장하므로써 성취될 수 있다. 중지 상태(154)에 진압하기 위해서, CPU(40)는 응용 프로그램을 인터럽트하고 CPU의 프로그램 실행 제어를 전력 관리 구동기로 전달한다. 전력 관리 구동기는 컴퓨터 시스템(10)의 상태를 조사하여, 컴퓨터 시스템의 전체 상태를 고정 디스크 저장 장치(31)에 기록한다. CPU(40) 레지스터, CPU 캐시(41), 시스템 RAM(53), 시스템 캐시(60), 비디오 제어기 (56) 레지스터, 비디오 메모리(58), 그리고, 나머지 휘발성 레지스터의 상태의 모두가 고정 디스크 드라이브(31)에 기록된다. 시스템(10)의 전체 상태는 유용성을 크게 해치지 않으면서(without significant usability penalties) 복원될 수 있는 방식으로 저장된다. 즉, 사용자는 통상적인 경우 요구되는 시스템 운영체제의 로딩과 그래픽 사용자 인터페이스의 로딩을 기다릴 필요가 없다.
그 다음에, 컴퓨터는 시스템이 중지되었음을 나타내는 데이터를 비휘발성 CMOS메모리 (96)에 기록한다. 결, CPU(40)는 전원 (17)의 통제된 전력 공급을 정지토록 한다. 컴퓨터 시스템(10)은 현재의 컴퓨터 전체 상태를 안정하게 고정 디스크 저장장치(31)에 저장하면서 전력 소비를 낮출 수 있다.
단어 상태(state)는 본 명세서를 통해서 혼동이 가능한 2가지 유사한 의미로 사용된다. 장치는 특정 상태에 놓일 수(in) 있다. 4가지 시스템 상태--정규(150), 대기(152), 중지(154) 및 오프(156)--는 본 발명의 컴퓨터 시스템의 일반적인 상태에 관한 것이다. 이 상태들은 일반적인 방식으로 컴퓨터 시스템(10)을 설명하고 있다. 예를 들면, 정규 동작 상태 (150)에 있는 동안, CPU(40)는 여전히 코드를 실행중이며, 시스템(10)내 다수의 레지스터를 변화시킨다. 또한, 유사한 활동이 대기 상태(152) 동안에도 일어난다. 따라서 시스템(12) 정규동작상태(150) 및 대기상태(152)에 있는 동안 컴퓨터의 메모리 및 레지스터 구성은 동적(dynamic)이다.
다른 장치들도 어떤 상태에 놓일 수(in) 있다. 제7도와 관련하여 후술되는 바와 같이, 프로그램가능 논리 어레이 U2(programmable logic array U2)는 다수의 상태에 놓일 수가 있다.
전술한 것과 대조적인 것은 장치의 상태(off state)로서, 예를 들면,컴퓨터 시스템(10)의 상태혹은 CPU(40)의 상태가 있다. 장치의 상태는 특정 컴퓨터 사이클에 있는 장치의 조건에 관한 것이다. 모든 메모리 영역 및 레지스터들은 특정 이진수 값(particular binary values)을 가질 것이다. 장치 의 상태는 그 장치 내용의 정적 이진 스냅숏(static binary snapshot)이다.
컴퓨터 시스템(10)의 상태는 동작상 동등물(operational cquivalents)을 지칭하며 복사본(exact copies)을 의미하지는 않는다. 예를 들면, 상태 A에 있는 컴퓨터 시스템은 CPU캐시 (41) 혹은 시스템 캐시(60)하는 메모리를 가질 수 있다. 이 컴퓨터 시스템을 상태 B에 놓으면서, 캐시의 내용을 다시 시스템 RAM(53)으로 플러시(flush) 하는 것이 가능하다. 간단히 말하면, 캐시와 시스템 RAM의 내용이 다르므로, 상태 A에 있는 컴퓨터 시스템의 상태는 상태 B 에 있는 컴퓨터의 시스템의 상태와 다르다. 그러나, (프로그램이 캐시를 이용하여 실행할 수 없기 때문에 발생하는) 시스템 속도의 약간의 경감을 제외하고는 실행중인 프로그램에 영향을 미치지 않으므로, 소프트웨어 동작상 관점에서 상태 A와 상태 B는 동일하다. 즉, 비록 플러시된 캐시로 인해, 컴퓨터는 캐시 영역이 유용한 코드로 재로딩될때까지 성능이 약간 떨어지겠지만, 상태 A의 컴퓨터와 상태 B의 컴퓨터는 소프트웨어 동작상 동일하다.
단어 전력(power)도 또한 혼동이 가능한 2가지 유사한 의미로 사용된다. 대부분의 전력은 전기 전력에 관한 것이다. 그러나, 전력은 또한 계산 능력(computational power)에 관한 것으로도 사용된다. 그러나, 이러한 차이는 문맥에 의해 명확히 파악할 수 있을 것이다.
회로(circuit)는 일반적으로 물리 전자 장치 혹은 전기적으로 상호 접속된 다수의 장치를 말한다. 그러나, 회로는 또한 , 물리적 전자 장치의 CPU 코드 동등물을 포함하도록 사용되었다. 예를 들면, 한편으로 2-입력 NAND 게이트는 74LS00 혹은 프로그램가능 장치 내에서 동일하게 구현될 수 있다. 이러한 2개의 장치는 물리 전자 장치들이다. 다른 한편으로, 또한, CPU(40)가 2개의 CPU-판독가능 입력 포트의 2개의 입력을 판독하고 CPU 커맨드를 사용하여 NAND 결과를 발생하며, CPU-기록가능 출력 포트를 경유하여 결과를 출력하도록 하므로써, NAND게이트를 구현할 수 있다. 이러한 CPU-인터페이스가능 포트는 본 기술분야에서 잘 알려진 디코드된 래치들(decoded latches), 그들의 프로그램가능 장치 동등물(programmable device equivalent)처럼 단순하거나, 혹은 PIAs와 같이 복잡할 수 있다. 회로는 NAND게이트 구현의 상술한 모든 3가지 예를 포함해야 한다.
어떤 경우, 회로는 거의 전기적 경로에 관한 것일 수 있다. 전기적 경로의 유형(types of electrical pathway)은 와이어(wire), 트레이스(trace) 혹은 인쇄 회로 기판(printed circuit board) 상의 비아(via), 혹은 하나의 전기적으로 접속된 경로를 형성하는 여러 경로 유형이 조합을 포함한다.
신호(signal)는 단일 전기 파형 혹은 다수의 파형일 수 있다. 예를 들면, 비디오 제어기는 비디오 신호를 발생한다. 이 비디오 신호는 실제로 다수의 전기 전도체상의 다수의 신호이다: 이 분야에 알려진 HSYNC, VSYNC, R, G, B등등.
제4도를 다시 참조하면, 네 번째이자 마지막 상태는 오프 상태 (156)이다. 이 오프 상태 (156)는 전형적인 컴퓨터 시스템의 통상적 의미인 턴-오프와 사실상 동일하다. 이 오프 상태에서, 전원(17)의 주/조절 장치(primary/regulation unit)(172)는 컴퓨터 (10)에 (제5도를 참조한 설명으로부터 알 수 있는 바와 같이, AUX5를 통한 소량의 통제된 전력(regulated power)을 제외하고는) 통제된 전력 공급을 멈추는데, 이 컴퓨터 시스템(10)의 상태는 고정 디스크 (31)에 저장되지 않는다. 중지 상태 (154) 및 오프상태 (156)는 전원(17)이 더 이상 통제된 전력을 생성하지 않는다는 점에서 유사하다. 다른 점을 보면, 오프상태 (156)에서는 중지 상태 (154)와는 달리 컴퓨터 시스템의 상태가 하드드라이브(31)에 저장되지 않는다는 것이다. 또한, 오프 상태 (156)을 벗어날 때, 컴퓨터 (10)는 마치 턴-온되는 것처럼부팅 (booting)된다. 즉, 어떠한 실행 코드가 사용자 혹은 AUTOEXEC.BAT 파일과 같은 수단에 의해 자동적으로 시작되어야만 한다. 그러나, 중지 상태를 벗어날때에는, 컴퓨터 (10)는 인터럽트되었던 속으로부터 다시 실행을 시작한다.
제4도에는 또한, 4가지 상태간의 전이를 일으키는 이벤트의 일반적인 개략도가 도시되어 있다. 이 이벤트들은 제6 내지 8도를 참조한 설명으로부터 보다 명백히 알 수 있다. 그러나, 개략적인 설명은 도움이 될 수 있다. 전력 버튼(21), 2개의 타이머 (비활동 대기 타이머 및 비활동 중지 타이머, 제9도를 참조한 설명을 참조하시오), 중지 진입 플래그(enter suspend flag) (제6 내지 7도를 참조한 설명을 참조하시요)의 모두는 컴퓨터가 진입하는 상태에 영향을 준다. 일반적으로 , 2개의 타이머는 하드웨어 혹은 프로그램으로 CPU상에서 실행되는 CPU 코드 타이머일 수 있다. 바람직한 실시예에서, 이 2개의 타이머는 BIOS 데이터 세그먼트(BIOS data segment)로부터 실행되는 CPU 코드 타이머들이다. 그러나, 이 2개의 타이머는 생각컨데 하드웨어 타이머일 수 있는데, 이것은 시스템의 오버헤드(overhead)를 감소시킨다는 점에서 더 나은 해결 방안이 될 수 있다. 이 타이머는 제9도를 참조한 설명으로부터 보다 명백히 알 수 있다. 두 타이머는 컴퓨터 (10)의 정규 동작 상태(150) 혹은 대기 상태 (152)에서 동작한다. 타이머들은 어느 한 타이머의 종료(expiration)가 아래 설명한 바와 같은 전이(transition)를 일으키도록 또다른 루틴과 서로 통신한다. 두 타이머 모두나 혹은 어느 한 타이머를 사용자의 특정 요구에 따라 어떤 시간 주기 후에 종료되도록 구성할 수 있다. 바람직한 실시예에서, 비활동 대기 타이머 및 비활동 중지 타이머는 15내지 90분후에 종료되도록 설정될 수 있다. 하나 혹은 두 타이머의 정지가 가능하다. 즉, 절대로 종료(expire)될 수 없도록 구성이 가능하다. 타이머의 정지(stopping)는 타이머의 증가되는 계수동작을 실질적으로 멈추거나 혹은 그들의 종료를 단지 무시하는 형태를 취할 수 있다. 바람직한 실시예에서, 타이머 종료값으로 0값을 설정하면 타이머 종료는 테스트되지 않는다. 예를 들면, 컴퓨터가 중지 상태에 진입하므로써 그 컴퓨터에 관한 LAN이 실패할 수 있으므로, 네트워크 컴퓨터의 사용자는 컴퓨터가 중지 상태(154)에 진입하지 않기를 원할 수 있다.
이론상, 타이버들은 카운트-업(count-up)혹은 카운트-다운(coun-down)할 수 있고, 고정된 사전결정된 상태(fixed predetermined state)로 리세트(reset) 할 수 있으며, 타이머가 시작 (혹은 재시작)될 때, 고정된 사전 결정된 또다른 상태로 카운트하거나 혹은 현재값을 사용하여 종점 종료 트리거(endpoint expiration trigger)로서 합이나 차이를 계산할 수 있다. 바람직한 실시예에서, 타이머가 리세트될 때, 실시간 클록(98)의 분 값(minutes value)의 현재값이 저장된다. 타이머는 저장된 분 값으로부터 현재의 분 값을 감산하고, 이 결과 값과 사용자가 선택한 값과의 차이를 비교하므로써 종료를 체크한다.
두 타이머는 소정 어떤 시스템 활동에 의해 영향을 받는다. 예를 들면, 바람직한 실시예에서, 키보드(12) 키를 누르고, 마우스 (13)를 이동시키고, 마우스(13)의 버튼을 부르는 사용자의 동작, 혹은 하드드라이브(31)의 동작은 타이머를 리세트 시킨다. 이는 제9도를 참조한 설명으로 부터 보다 상세히 알 수 있다: 그러므로, 사용자가 키보드(12)키를 누르거나, 마우스 (13)를 사용하는 동안 타이머는 절대로 종료되지 않는다. 또한 타이머를 리세트 시키기 의해 다른 시스템 이벤트들을 이용할 수도 있다. 이와 달이, 하드웨어 인터럽트를 모니터 하에 활동을 할 수 있다. 따라서, 프린팅(printing)은 시스템을 중지 상태(154)로 진입하지 못하도록 하는 것이 바람직하다.
중지 진입 플래그(enter suspend flag)는 프로그램 가능 논리 어레이 U2내 CPU-조작 가능 및 판독 가능 래치(CPU-manipulable and readable latch)로, 제7 도를 참조한 설명으로 부터 상세히 알 수 있다. 간단히 말해, 프로그램가능 논리 어레이 U2를 다른 모드로 설정한 채 스위치(21)를 누르면 시스템(10)은 오프상태가 되고, 이 프로그램가능 논리어레이 U2를 다른 모드로 설정한채 스위치(21)을 누르면 시스템(10)은 중지 상태(154)로 된다는 것이다. 시스템(10)이 정규 동작 상태(150)에 있고 프로그램가능 논리 어레이 U2에 설정된 중지 진입 플래그가 00₂인 동안 전력 버튼(21)을 누르면, (158)로 도시된 바와 같이, 컴퓨터 시스템(10)은 오프상태 (156)로 진입한다. 컴퓨터 시스템(10)이 오프상태(156)일 때 전력 버튼(21)을 누르면, 컴퓨터 시스템은 정규 동작 상태로 진입한다.
컴퓨터 시스템(10)이, 정규 동작 상태 (150)이면, 하나의 이벤트로도 컴퓨터를 대기 상태 (150)로 진입하도록 할 수 있다: 참조번호 (162)에 도시된 바와 같이, 비활동 대기 타이머가 종료되면, 컴퓨터 시스템은(10)은 대기 상태(152)로 변할 것이다. 참조번호 (164)에 도시된 바와 같이, 대기상태 (152)동안 전술한 종류의 어떤 시스템 활동이 있으며, 컴퓨터 시스템 (10)은 대기 상태를 벗어나 정규동작 상태로 재진입한다.
컴퓨터(10)가 정규 동작 상태(150)일 때 2개의 이벤트로 중지 상태(154)에 진입할 수 있다. 첫째, 참조번호 (166)에 도시된 바와 같이 , 비활동 중지 타이머가 종료되면, 컴퓨터 시스템(10)은 중지 상태 (154)로 진입할 수 있다. 두 번째, 참조번호(168)에 도시된 바와 같이, 프로그램가능 논리 어레이에 설정된 중지 진입 플래그가 01₂인 동안 전력 버튼(21)을 즉시 누르면 컴퓨터 시스템(10)을 중지 상태(154)로 진입시킬 수 있다.
또한, 참조번호(168)에서 처럼, 시스템(10)을 중지 상태(154)에서 정규 동작 상태(150)로 변하게 하기 위해 다수의 외부 이벤트를 사용할 수 있다. 예를 들면, 제6도 회로에 전화링 감지 회로(telephone ring detect circuit)를 추가하여, 접속된 전화선이 올릴 때 컴퓨터 시스템(10)이 중지 상태(154)를 벗어나 정규 동작 상태 (15)로 진입하도록 구성할 수 있다. 이러한 변형은 텔리팩스 데이터(telefax data)혹은 디지털 테이타(digital data)를 수신하는 시스템에 유용하다. 시스템은 입력되는 정보를 수신시에만 전력을 소비한다. 마찬가지로, 실시간 클록과 제6도 사이의 인터페이스는 알람형 이벤트(alarm-type event)가 시스템(10)을 중지 상태(154)에서 정규 동작 상태 (15)로 진입토록 만든다. 이러한 시스템은 저 전화사용율(lower telephone usage rates)의 이점을 이용하여 하루의 어떤 시각에 텔리팩스 혹은 디지털 데이터를 송신하는 데 유용하다. 결국, 참조번호(170)에서 처럼, 컴퓨터 시스템(10)이 대기 상태 (152)일 때 비활동 중지 타이머가 종료되면, 컴퓨터 시스템(10)은 중지 상태(154)로 변한다.
컴퓨터 시스템(10)은 중지 상태 (154)에서 대기 상태(152)로 변할 수 없고, 전이 (168)를 참조한 설명에서 알 수 있는 바와 같이, 단지 정규 동작 상태(150)로만 전이할 수만 있다.
분명한 것은, 컴퓨터 시스템(10)은 순간적으로 상태 변화를 살 수 없다. 4가지 상태중 어느 하나로 부터의 각 전이시에 시스템은 변화에 필요한 소정의 시간주기가 필요하다. 각 전이 주기에 대한 상세한 설명은 제6 내지 15도를 참조하여 상세히 기술될 것이다.
시스템 하드웨어
CPU(40)상에서 실행되는 코드를 상세히 설명하기에 앞서, 먼저 4가지 상태를 얻기위해 필요한 하드웨어에 관해 언급하는 것이 좋을 것이다. 제5도에는 전원(17)의 블록도가 도시되어 있다. 전원(17)은 제어 장치(174) 및 주/조절 장치(172)의 2가지 장치를 가진다. 전원(17)은 전형적인 콘센트로부터 115 VAC를 수신하는 라인-인(Line-in), 전원(17)의 조절 활동을 제어하는의 다수의 입력을 가진다. 전원(17)은 AC라인-아웃,±5 VDC, ±12 VDC, AUX5, GND,그리고 POWERGOOD의 다수의 출력을 가진다. AC라인-아웃은 전형적으로 비디오 디스플레이 단자(57)의 (도시되지 않은) 전력 입력으로 들어가는 비통제된 115 VAC이다. 제어 장치(174)는입력을 수신하고, POWERGOOD출력을 생성한다. 주/조절 장치(172)는 선택적으로 라인-인 입력으로부터 115 VAC를 ±5, ±12 VDC로 떨어지도록 선택적으로 조정한다. 제어장치 (174)와 인터페이스하여, 주/조절 장치 (172)의 전력 제어는의 값에 의존한다. 바람직한 실시예에서, 제어 장치 (174)는신호를 발생하는 회로에 예를 들어, 적절한 광절연체(optoisolator)와 같은 절연을 제공한다.
라인-인 입력과 AC 라인-아웃, ±5 VDC, ±12 VDC, GND, 그리고 POWERGOOD은 본 기술분야에서 잘 알려져 있다. 전원(17)이 오프,즉, 라인-인으로부터 통제된 전압을 제공하지 않을 때, POWERGOOD 신호는 논리즉으로 영(ZERO)이다. 전원(17)이 온일 때, 전원(17)은 115 VAC라인-인으로부터 ±5 VDC, ±12 VDC의 통제된 전압을 생성한다. 이러한 통제된 전압 및 이와 관계된 GND는 시스템 전력으로 이분야에 잘 알려져 있다. 통제된 전압이 수용가능한 허용오차내 수준이라면, POWERGOOD 신호는 논리 1(ONE)로 변할 것이다.
AUX5 출력은 보조 +5 VDC 전압을 플래너에 제공한다. 전원(17)이 공칭 115 VDC(nominal 115VAC)를 제공하는 전형적인 콘센트에 접속되어 있을 때 , 주/조절 장치(172)는 전원의 온 혹은 오프에 상관없이 통제된 +5 VDC를 AUX5에 제공한다. 따라서, 전원이 플러그인(plug-in)된 동안, 전원(17)은 항상 공칭 ±5 VDC를 AUX5에 제공한다. 주/조절 장치 (172)는 전원(17)의 온동안 +5 출력을 통해 통제된 +5 VDC 생성하는 반면에, AUX5 출력은 항상 +5 출력이라는 점에서 다르다. 또한, 바람직한 실시예에서, 주/조절 장치(172)는 +5 출력을 통해 +5 VDC로 수 암페어(amp)의 전류를 제공하는 반면, AUX5를 출력을 통해서는 +5 VDC로 1보다 적은 암페어를 제공한다는 점에서 다르다.
전형적인 종래 전원은 고-전류 쌍투 스위치(high-amperage double-throw switch)를 사용하여 전원의 통제부(regulation section)로부터/로 라인-인 입력을 접속하고 분리한다. 본 발명의 전원(17)은 고-전류 쌍투 스위치를 사용하지 않는다. 오히려, 스위치(21)는신호를 발생하는 회로를 제어한다. 바람직한 실시예에서, 스위치(21)는 순시 단극(momentary single-pole), 단투 푸쉬버튼 스위치(single throw pushbutton)이다. ; 그러나, 당업자라면 제6도 회로를 적용하여 단극 쌍투 스위치와 같은 다른 형태의 스위치를 사용할 수도 있다는 것을 알 것이다. AC 라인-인은 항상 콘센트로부터 주/조절 장치 (172)에 접속된다.이 논리 1(대략 AUX5 공칭 +5 VDC)일 때, 주/조절 장치(172)는 115 VAC 라인-인을 ±5 혹은 ±12 VDC로 조절하지 않는다. 주/조절 장치(172)는 AUX5 출력을 통해 단지 저-전류량 공칭 +5 VDC를 제공한다. 반면에,이 논리0(대략적으로 GND)일 때, 주/조절 장치 (172)는 115 VAC 라인-인을 4개의 ±5 및 ±12 출력을 통해 ±5 VDC 및 ±12 VDC로 각각 조정한다. 따라서,이 1일 때, 전원(17)은 오프이고,이 0 일때, 전원(17)은 온이다. 상술하면, 전술한 전원(17)처럼 AUX5 출력과입력을 구비한 전원은 다수의 종래 전원 공급자들로부터 얻을 수가 있다.
이제, 제6도를 참조하면, 본 발명의 전자회로의 개략도가 도시되어 있다. 제6도의 회로는 스위치(21), 전원(17), 비디오 디스플레이 단자(57) 및 CPU(40)상에서 실행되는 코드 사이의 인터페이스를 책임진다.
이 회로는 본 기술분야에 잘 알려진 U1 , 즉, 제 1사전프로그램형 PAL16L8 : U2,즉, 제 2 사전 프로그램형 PAL16L8 : 및 U3, 74HC132의 3가지 집적회로를 포함한다. 일반적으로 PAL U1 및 U2는 제3도의 플래너 I/O버스 (90)와 제6도의 회로간을 인터페이스 한다. 이 회로는 스위치 (21), 10개의 저항 (R1-R10), 5개의 커패시터 (C1-C5), 바람직한 실시예에서 논리 스위치로서 동작하기에 적합한 표준 저-전류 NMOS FET인 4개의 N-형 MOSFET(Q4-Q4), 표준 저-전류 다이오드 패키지인 2중 다이오드 패키지(CR1)를 포함하여, 제6도에 도시된 대로 구성된다. 이 저항들(R1-R10)은 1/4와트 저항들로 제6도에 도시된 값의 ±5%의 값을 가진다. 커패시터(C1-C2)는 제6도에 도시된 값의 ±10%의 값을 가지는 전해 커패시터들(electrolytic capacitors)이다. 커패시터 (C3-C5)는 0.1μF(±10%) 세라믹 커패시터(ceramic capacitors)이다.
제1 PAL U1은 SA(1) 내지 SA(15)의 어드레스선 및 AEN(어드레스 이네이블) 선에 접속된다. SA(1) 내지 SA(15) 및 AEN은 제3도의 플래너 I/O버스 (90)의 일부이다. 예정된 어드레스가 SA(1) 내지 SA(15)의 어드레스선에 제공되고 AEN(어드레스 이네이블)선이 활성일 때, 제 1 PAL U1은 단지 어드레스 디코더로 프로그램되어, 활성 로우 신호(active low signal) (PM_PORT_DCD#)를 제공한다.
제 2 PAL U2는 판독가능 바이트와 전술한 I/O 포트의 하위 3 비트(lower three bits)에 3개의 기록가능 비트를 제공하도록 프로그램되며, 또한, 본 명세서에서 전력 관리 포트로도 언급된다. 제 2 PAL U2는 플래너 I/O 버스(90)부터 8개의 입력을 가진다: SD(0), SD(1), SD(2), SD(0), IOW#, IOR#, RESERDRV 및 IRQ(1). 제 2 PAL U2는 핀 (2)에서 활성 하이 신호(active high signal) (RESETDRV)입력에 의해 알려진 초기 조건으로 리세트하는데, 이 신호는 본 기술분야에서 잘 알려진 메모리 제어기 (46)에서 발생된다. 제2 PAL U2는 제7도 및 테이블 Ⅰ내지Ⅱ를 참조하여 보다 상세히 기술될 것이다.
제 3 장치는 본 명세서에서 U3A와 U3B로 식별된 2개의 부분을 가지는데, 이 두 부분은 NAND 래치로도 알려진 SR 래치를 형성하는데, 이는 본 기술 분야에서 잘 알려져 있다. SR 래치는 입력으로 U3의 핀 (1,5) (핀(1)은 SET입력이고, 핀(5)는 REST 입력)을 가지며, 출력으로는 U3A의 핀 (3)을 가진다. 두 입력이 논리 1 인 동안, 출력은 SR 래치의 출력 값을 유지한다. SET이 논리 0인 경우 출력은 논리 1 이 되며, SAT 입력이 논리 1로 복귀하면 출력은 논리 1로 래치된다. REST 입력이 논리 0이면 출력은 논리 0이 되며, REST입력이 논리 1로 복귀하면 출력은 논리 0이 된다.
전압이 적당한 레벨로 조정되었다는 것을 나타내는 POWERGOOD 신호가 논리 0인 경우, U3C 로 식별된 제 3장치의 제 3부분은 제 2 PAL U2의 출력 핀 (12)에 대한 인버터(inverter)로 동작한다. POWERGOOD 신호의 논리 0은 VCC가 +5 VDC로부터 램핑-업 혹은 램핑-다운(ramping up or ramping down )하거나 혹은 그라운드 근처에서 부동(floating)하고 있음을 나타내는데, 이런 경우, 제 3장치의 제 3 부분 , U3C의 핀(8) 출력은 논리 1로 유지되며, 제 2PAL U2의 핀(12)이 제 3 장치의 제 1 및 제 2 부분인 U3A 및 U3B에 의해 생성된 SR 래치에 미치는 노이즈(noise)의 영향을 방지한다.
스위치(21)는 제6도의 JP1 회로에 접속된다. 저항/커패시터 부회로 R2 및 C1은 스위치(21)의 폐쇄 이벤트(colsure event)를 디바운싱(debouncing)한다. 제 3 장치의 제 4 부분, U3D은 R6을 통해 (AUX5가 공치 +5 VDC일 때, 대략 +4.3 VDC) VBAT까지 이어진 핀(12)을 가지는 인버터로 구성되며, 디바운싱된 스위치 폐쇄를 반전(invert)시킨다. 전류-제한 저항(current-limiting resistor) (R10)은 장치가 파워-업 혹은 파워-다운될 때 제 2PAL U2의 핀(8)로 부터 흐를 수 있는 전류가 제 3 장치 U3D의 제 부분의 핀(11)으로 흐르지 못하게 한다. SR 래치는 절대로 파워-오프 되어서는 안된다. 그러나, SR 래치가 파워-오프 되는 경우에는, R7 및 C3는 SR래치가 파워-업 상태가 되도록 설계되어, SR 래치가 재파워될 때 전원(17)은 오프상태가 된다.
저항(R1, R2, R3, R4, R5, R6, R7, R8 및 R9)은 개별 선을 VCC, VBAT 혹은 AUX5까지 승압시키는 풀-업(pull-up) 저항들이다. 트랜지스터(Q1, Q2, Q3 및 Q4)는 인버터들이다. 저항(R4) 및 커패시터 (C2)는 RC쌍을 형성하여, VCC에 도달할 때까지 커패시터 (C2)를 충전시킨다. 커패시터(C2)에 저장된 전압이 대략 +2.7 VDC 아래이면, 트랜지스터(Q1)이 통전되지 않으며, 저항(R3)는 제2PAL U2의 핀(11) 입력을 VCC로 승압시켜 논리 1로 만든다. 커패시터(C2)가 대략 +2.7 VDC나 혹은 그이상으로 충전되는 경우 트랜지스터(Q1)이 통전되어 핀(11)입력을 접지(GND )로 입력하여 논리 0으로 만든다.
제 2 PAL U2의 핀(18) 출력이 논리 0일때, 저항(R8 및 R9)은 각각 선(BLNK# 및 ESYNC)을 VCC로 승압시킨다. 비디오 제어기(56)는 VCC와 이어진 선(ESYNC 및 BLNK#)을 이용해 비디오 신호를 발생한다. 제 2 PAL U2의 핀(18)출력이 논리 1 일 때, 트랜지스터(Q2 및 Q3)가 통전되어 선(BLNK# 및 ESYNC)를 각각 접지(GND)와 결합하므로써, 비디오 제어기(56)는 비디오 신호 발생을 중지한다
제6도에 도시된 전자 회로는 VCC, AUX5및 VBAT의 3개의 전원을 가진다. VCC 및 AUX5.는 전원(17)에 의해 생성되며, 이들은 공칭 +5.0 VDC이다. 본 기술분야에서 잘 알려진 바와 같이, VCC 및 이와 관계된 GND 복귀선(return line)은 플래너(20)상의 (도시되지 않은) 주 전력 커넥터(main power connector)를 통해 진입한다. AUX5는 JP2의 핀(1)에서 회로와 접속된다. 이 AUX5 복귀선은 JP2의 핀(3)에서 GND 선에 접속된다. VBAT는 배터리(171)의 전력 출력으로 공칭 3.5 VDC이다. 배터리(171)는 리튬(lithium) 배터리로서, 본기술 분야에서 분야에 잘 알려져 있다.
PAL U1 및 U2는 VCC와 연결된 핀(20)에서 VCC 입력을 가진다. 또한, 다수의 저항(R4, R4, R8 및 R9)은 VCC에 접속된다. 본 기술분야에서 잘 알려져 있는 바와 같이, 전원이온이고 공칭 115 VAC를 공급하는 전형적인 콘센트에 플러그-인 된 경우 전원(17)은 단지 통제된 +5 VDC만을 제공한다. 따라서 전원이 온이고 공칭 115 VAC를 공급하는 전형적인 콘센트에 플러그-인 된 경우 전원(17)은 단지 통제된 +5VDC만을 제공한다. 따라서 전원이 오프 혹은 플러그-인 되지 않은 경우에는 PAL U1, U2 및 저항(R4, R4, R8, R9)은 +5 VDC를 수신하지 않는다.
반면에, 전원(17)이 공칭 115 VAC를 공급하는 전형적인 콘센트에 플러그될때마다, 전원(17)은 온이든 혹은 오프이든지간에 AUX5에 통제된 +5VDC를 제공한다. 따라서 AUX5에 접속된 이들 장치는 전원(17)이 플러그-인될 때마다 +5 VDC를 수신한다.
더구나, CR1의 다이오드들은 VBAT에 접속된 장치들이 항상 전력을 수신하도록 하는 방식으로 VBAT 과 AUX5를 인터페이스하므로, U3 및 저항들(R1, R2 및 R6 )은 항상 전력을 수신한다. 전원(17)이 전형적인 콘센트에 플러그-인 된 동안, 이 전원은 AUX5로 +5 VDC를 제공하며, VBAT에 접속된 장치들(U3 및 R1, R2, R6)은 대략 +4.3 VDC(AUX5의 +5 VDC으로부터 AUX5 VBAT 사이의 CR1내 다이오드의 다이오드 강하(diode drop)를 뺀 수치임)를 수신한다. 전원(17)이 플러그-인되지 않은 경우, 이 전원은 AUX5선으로 의 통제된 전력 공급을 멈추고, U3 및 저항(R1, R2, 및 R6)은 VBAT으로 부터 전력을 수신한다. 전형적인 74HC132는 +2.0의 최소 DC 공급 전압을 요구한다. 따라서, VBAT가 +2.0 VDC를 제공하기 에 충분한 전하(charge)를 포함하는 한, U3는 충분한 전력을 공급받는다.
제6도의 회로는 본 발명의 범위내에서 다수의 변형을 가질 수 있다. 예를 들면, 하루의 특정 시간에 컴퓨터 시스템(10)을 중지 상태(154)에서 정규 동작 상태(150)로 변하도록 제6도의 회로에 실시간 클록(98)을 전기적으로 접속하여, ON# 신호에 다이오드 OR(diode OR) 되도록 구성할 수 있다. 마찬가지로, 전화링-감지 회로를 제6도의 회로에 부가하고, ON# 신호에 다이오드 OR 되도록 구성하여, 접속된 전화선의 울림으로 시스템(10)이 중지 상태(154)에서 정규 동작 상태(150)로 진입하도록 할 수 있다.
제6도를 다시 참조하면, 제 2 PAL U2-상태 기계(state machines)이다. 제7도에는 제 2 PAL U2내의 상태 기계중 하나의 상태도가 도시되어 있다. 테이블Ⅰ 및 테이블Ⅱ 는 제 2 PAL U2의 또다른 상태 기계와 그외 부수적인 면들을 도시하고 있다.
제7도는 제 2 PAL U2내 상태 기계중의 하나이다. TE1 과 TE0는 결합하여 4가지 상태를 허용한다: 스위치 상태 00₂(176), 스위치 상태 01₂(178), 스위치 상태 11₂(180) 및 스위치 상태 10₂(182).
TE1과 TE0는 제 2 PAL U2에 직접 기록될 수 없으며, 오히려 스위치(21)의 폐쇄 이벤트와 컴퓨터 시스템(10)을 리셋팅하는 것과 같은 다른 이벤트들에 응답하여 변한다. 전원(17)이 시스템 전력을 공급하지 않을 때, 제 2 PAL U2 는 전력 공급을 받지 못하며, 따라서, 상태(174)에서 이 제 2 PAL U2의 상태는 의미가 없다. 제6도를 참조한 설명으로부터 보다 상세히 알 수 있는 바와 같이, 스위치 (21)의 누름 및 (전원(17)이 시스템 전력을 공급하도록하는 전화링 감지기와 같은) 또다른 이벤트들은 전원(17)이 시스템 전력의 공급을 개시하도록 한다. 스위치(21)를 누르거나 혹은 RESETDRV 신호가 활성일 때, 제 2 PAL U2는 스위치 상태 00₂(176)로 진입한다. 스위치(21)가 개방되거나 혹은 스위치가 개방된 동안 RESETDRV 신호가 비활성이 되면, 제 2 PAL U2는 스위치 상태 01₂(178)로 진입한다. 스위치 (21)를 다시 누르면, 제 2 PAL U2는 스위치 상태 10₂(182)로 진입한다. 제7도에 도시된 바와 같이, 스위치 (21)의 후속적인 패쇄로, 제 2 PAL U2는 4가지 상태를 거치는 사이클로 진입하게 된다. 시스템(10)이 정규 동작 상태(150)인 경우, 제 2 PAL U2는 스위치 상태 (178)에 있다.
스위치 상태 01₂(178)는 TE1, TE0 상태 기계에 대한 정규 상태에 대응하는 스위치 상태이다. 응용 프로그램은 이 상태 동안 실행된다. 시스템(10)은 이 상태에서 대기 상태(152)로 진입 및 이탈할 수 있다. 이 스위치 01₂(178)는 또한 사용자-발생 중지 포기 요청(user-generated suspend abort request)에 대응한다. 스위치 상태(102)는 사용자에 의한 중지 요청에 대응하는 스위치 상태이다. 즉, 오프 상태(156)에 있는 시스템(10)을 개시하기 위해서, 스위치(21)를 눌러 컴퓨터 시스템(10)을 정규 동작 상태(150)에 놓이게 한다. 제9도를 참조한 설명으로부터 보다 상세히 알 수 있는 바와 같이, 스위치를 다시 한번 누르면 중지 요청(전력 관리 포토에서 OFFH)이 발생되고, 이는 감시 루틴에서 판독된다. 시스템(10)이 중지 상태 (154)에 들어가기 전, 스위치(21)를 세 번째 누르면 중지 포기 요청(전력 관리 포토에서 OFEH)이 발생되며, 이는 중지 루틴에서 판독된다.
표 Ⅰ은 제7도의 4 가지 상태에 다수의 코맨트(comments)를 부가한다. 스위치 00₂(176), 01₂ (178) 및 11₂(180)인 동안, 전력 관리 포트는 판독에 응답하여 OFFH를 출력한다.
반면, 스위치가 10 (182)인 동안, 전력 관리 포트는 판독에 응답하여 OFEH를 출력한다. 스위치는 누른후 개방하면, 제2 PAL U2는 스위치 상태 01를 벗어나 스위치 상태 10(182)로 진입하며, 하드웨어 중지 요청 신호를 발생시킨다. 감시 루틴은 전력 관리 포트를 판독하여, 하드웨어 중지 요청을 인식한다. 판독에 응답한 OFEH는 하드웨어 중지 요청을 나타낸다.
TE1, TE0 상태 기계는 또한 비디오 블랭킹 회로(video blanking circuitry)에 영향을 미친다. 후술하는 바와 같이, 스위치 상태가 00 (176)인 동안, 디스플레이 블랭킹 비트가 클리어되어 비디오 제어기(56)는 비디오 신호를 발생한다. 스위치 상태 102 (182)인 동안, 디스플레이 블랭킹 비트는 세트되어, 비디오 제어기 (56)는 비디오 신호 발생을 멈춘다. 스위치 상태 012 (178) 및 112 (180)인 동안, 비디오 블랭킹 비트는 SD2의 기록에 의해 제어된다.
표 Ⅱ는 제 2 PAL U2의 다른 상태 기계를 보여주며, SD2의 기록이 어떻게 비디오 신호에 영향을 미치는 가를 설명하고 있다.
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로 단정(assert)되어 비디오 신호를 오프시킴으로써 트랜지스터(Q2 및 Q3)를 도전시키고 선(BLNK# 및 ESYNC)은 GND로 통하게 되어, 비디오 제어기 (56)는 비디오 발생을 멈춘다. 이와 마찬가지로, 전력 관리 포트의 SD(2)에 0을 기록하면DISPLAY-OFF 출력은 논리 0가 되고 트랜지스터(Q2 및 Q3)의 통전을 막아 저항(R8 및 R9)에 의해 선(BLNK# 및 ESYNC)을 VCC로 승압시킴으로써, 비디오 제어기(56)는 비디오 신호를 발생한다.
IRQ(1) 입력은 또한, 비디오 블랭킹을 제어한다. IRQ(1)는 키보드 하드웨어 인터럽트이다.; 키보드(12)상의 키를 누르면 IRQ(1)는 펄스를 생성한다. 비디오 신호가 오프인 동안, IRQ(1)의 펄스는 즉시 비디오 신호를 다시 턴-온 시켜 핀(18) DISPLAY-OFF출력을 논리 0로 단정시키며 트랜지스터 Q2 및 Q3의 도전을 중지시키고, 저항 (R8 및 R9)으로 하여금 선(BLNK# 및 ESYNC)을 VCC로 승압시킴으로써, 비디오 제어기(56)는 비디오 신호를 발생한다. 이런 방식으로 IRQ(1)을 이용하면, 사용자는 대기 상태(152)에서 정규 동작 상태(154)로 복귀할 때 복원된 비디오 디스플레이 형태로 즉각적인 피드백을 얻을 수 있다. 제9도를 참조한 설명으로부터 알 수 있는 바와 같이, IRQ(1)가 없다면, 사용자는 APM이 사용자의 활동을 체크할 때 아마도 2 초가 경과할 때까지 피드백을 수신하지 못할 것이다.
SD(1)과 SD(2)는 결합하여 4가지 동작 상태를 제공한다; 00₂,01₂,10₂,11₂. 제 2 PAL U2는 RESETDRV 입력에 의해 00₂상태로 초기화 된다. 게다가, 4가지 상태중 어느 한 상태인 동안, 전력 관리 포트에 XXXXXX00₂을 기록하면 제 2 PAL U2 는 00₂ 상태에 놓이게 된다. 제5도를 참조한 설명으로부터 알수 있는 바와 같이, 00₂상태에서의 스위치(21)는 전형적인 전력 공급원들의 전력 스위치처럼 동작한다. 00₂ 상태인 동안 스위치(21)를 누르면, 제 2 PAL U2의 핀 (12)의 출력이 논리 1 로 단정되며 SR 래치의 핀(3)의 출력은 논리 0 상태로 래치되고, rm bar ON은 저항(R6)에 의해 하이로 승압되어, 전원(17)의 주/조절 장치(172)는 ±5 및 ±12 선을 통한 통제된 전압 제공을 중지한다. 본 명세서의 시스템 소프트웨어를 기술한 부분에서 보다 상세히 알 수 있는 바와 같이, 이 상태에서 APM은 분리(disconnect)된다. 00₂상태인 동안, 전력 관리 포트를 판독하면 회로는 OFEH를 반환(return)한다. 바람직한 실시예에서는 하드웨어의 존재를 확인하기 위해 이 바이트를 판독하고 테스트한다.
4가지 상태중 어느 한 상태인 동안, 전력 관리 포트에 XXXXXX01₂를 기록하면 제 2 PAL U2은 01₂ 상태로 진입한다. 01₂ 상태는 정상적인 APM상태이다. 스위치(21)가 눌려지기전, 01₂ 상태에 진입한 후 즉시 전력 관리 포트를 판독하면, 회로는 OFEH를 반환한다. 01₂ 상태인 동안 스위치(21)를 누른후 개방하면 2가지 이벤트가 발생된다: (1) 전력 관리 포트의 판독에 의한 반환값에 의해 OFEH와 OFFH간이 토글(toggle)되고, (2) 핀(18)에서 단정된 값이 반전되면, 스위치를 매번 누를때마다, 비디오 제어기(56)는 각 비디오 신호를 온과 오프로 토글시킨다. 또한, 스위치(21)가 제인 처음 눌려질 때, 고장안전 타이머가 개시되며, 핀 (19)TRIGGER# 출력을 논리 0로 단정시켜, 트랜지스터(Q5)의 통전을 막고, 커패시터(C2)는 충전이 시작된다. 커패시터(C2)에 저장된 전압이 +2.7 VDC 이하일 때, 트랜지스터(Q1)은 통전되지 않으며, 저항(R3)은 제 2 PAL U2의 핀(11) 입력을 VCC로 승압시켜 논리 1로 만든다. 커패시터(C2)가 대략 +2.7 VDC 혹은 그 이상까지 충전되면, 핀(11) 입력이 GND로 통하게 되어 논리 0가 된다. 핀(11) DELAY-IN#가 논리 0일때마다, 제 2 PAL U2의 핀 (12) 출력은 논리 1로 단정되고, SR 래치의 출력 핀(3)은 논리 0상태로 래치되며, R6에 의해 rm bar ON은 하이로 승압되고, 전원(17)의 주/조절 장치(172)는±5 및 ±12 선을 통제된 전압 제공을 중지하므로써, 전원(17)을오프시킨다. 스위치를 반복해 누르면 고장안전 타이머의 온과 오프의 토글이 발생한다.
따라서, 01₂ 상태인 동안, 스위치가 눌려지기 전에, 판독에 의한 반환값은 00FFH이며 비디오 신호가 발생된다: 스위치(21)가 제일 처음 눌리면, 판독에 의한 반환값은 OFEH로 변하고 비디오 신호의 발생은 중지되며, 비디오 디스플레이 단자(57)는 블랭크(blank)된다. 스위치(21)가 두 번째로 눌리면, 판독에 의한 반환값은 OFFH로 다시 변하고 비디오 신호 발생이 다시 개시된다. 토글 특성(toggling nature)으로 인해, 반복된 스위치의 폐쇄는 스위치가 폐쇄된 총수가 홀수변인 경우 결과적으로 OFEH값이 되며 비디오 신호는 블랭킹이 되고, 스위치가 폐쇄된 총수가 짝수변인 경우에는 결과적으로 OFFH값이 되며 비디오 신호는 발생하는 결과를 낳는다.
4가지 상태들중 어느 한 상태인 동안, 전력 관리 포트에 XXXXXX10₂를 기록하면 제 2 PAL U2는 10₂ 상태로 진입하게 된다. 10 상태에 진입하면, 제2 PAL U2의 핀(12)출력은 논리 1로 단정되고 SR 래치의 출력 핀(3)은 논리 0 상태로 래치되어, R6에 의해 rm bar ON은 하이(HIGH)로 승압되므로써, 전원(17)의 주/조절 장치(172)는 ±5 및 ±12 선을 통한 통제된 전압 제공을 중지토록 만든다. 이 상태에서는 전원(17)상의 시스템(10) 제어가 가능하다.
4가지 상태중의 어느 한 상태인 동안, 전력 관리 포트에 XXXXXX11₂가 기록되면, 제 2 PAL U2는 11 상태로 진입하게 된다. 112 상태에 진입하면, 핀 (19) TRIGGER# 출력을 논리 1로 단정하고, 트랜지스터(Q5)를 통전시키고, 커패시터(C2)를 접지로 방전시키므로써 고장안전 타이머를 리세트한다. 이 상태를 벗어나 01₂상태로 진입하면, 핀(19) TRIGGER# 출력을 논리 0으로 단정하고, 트랜지스터(Q5)의 통전을 막고 커패시터(C2)를 재충전 하므로써, 고장안전 타이머를 재시작 한다.
제6도 회로의 기능에 대한 다음의 설명에서는 전원(17)이 전형적인 콘센트에 플러그-인 되어 AUX5로 +5 VDC를 발생한다고 가정한다. 따라서, 많은 장치들, 특히 U3는 충분한 전력을 공급 받는다.
제6도 회로에 대해서는 전원(17)이 오프인 동안 조사하는 것이 가장 쉽게 이해될 것이다. 전원이오프되도록 하기 위해서는 JP2의 핀(2)에서의 신호은 논리 1이 되어야 한다. 따라서, 트랜지스터(Q4)는 통전되어서는 안되며, U3의 핀 (3)은 논리 0이 되어야 한다. 즉, U3A 및 U3B의 SR 래치는 논리 0 출력으로 래치된다. POWERGOOD는 논리 0이며, 제 2PAL U2에는 전력이 공급되지 않는다. 따라서, U3C의 핀(8)은 논리 1이 되어 SR 래치의 RESET 입력도 논리 1 이 된다. 이와 마찬가지로, SR래치 SET입력, 즉 U3A의 핀 (1)은 R1에 의해 논리 1로 승압된다. 이 상태에서, SR래치는 논리 0 출력으로 래치된다.
스위치(21)가 눌려질 때, 이러한 스위치의 폐쇄는 저항(R2) 및 커패시터 (C1)에 의해 디바운싱되고, SR 래치 SET입력, 즉 U3A의 핀(1)은 GND(논리 0)로 통하게 된다. 이로인해 SR래치 출력, U3A의 핀(3)은 논리 1로 변하고, 트랜지스터(Q4)가 통전되어,은 GND로 통하게 되므로써, 전원(17)은 ±5 및 ±12 선에 통제된 전력 제공을 개시한다. 스위치를 개방하면, SR 래치 SET 입력, 즉 U3A의 핀(1)은 논리 1이 되고, SR래치는U3A 핀(3)출력에 논리 1을 래치하므로써, 전원(17)은 온 상태로 래칭시킨다.
POWERGOOD 신호가 논리 1이 된 후에 모든 전압은 허용범위 내에 있게 된다. POWERGOOD가 논리 0인 동안 제 2 PAL U2는 다음과 같이 초기화된다:
(1)핀(12) OFF출력을 논리 0으로 단정하여, SR래치가 현 래치된 상태를 벗어나도록하며, (2) 핀(18) DISPLAY-OFF출력을 논리 1로 단정하여, 비디오제어기가 비디오 신호를 발생케하고, (3) 핀(19) TRIGGER# 출력을 논리 1로 단정하여, 트랜지스터(Q5)로 하여금 커패시터(C2)를 GND와 통하게 하므로써, 핀 (11) DELAY-IN# 입력을 저항(R3)에 의해 논리 1로 승압시킨다.
전술한 바와 같이 제7도의 제 2 PAL U2회로는 전력 관리 포트에 3 비트-SD(0), SD(1), SD(2)-를 제공한다. SD(2)는 제 2 PAL U2의 핀(18) DISPLAY OFF 출력을 제어한다. 전력 관리 포트의 SD(2)에 논리 1을 기록하면, 비디오 제어기(56)는 비디오 신호 발생을 멈춘다. 이와 마찬가지로, 전력 관리 포트의 SD(2)에 논리 0를 기록하면, 비디오 제어기 (56)는 비디오 신호를 발생한다.
또한, 전술한 바와 같이, SD(1) 과 SD(0)은 함께 협력하여 4가지 동작 상태를 제공한다: 00₂,01₂,10₂, 및 11₂, 제 2 PAL U2는 RESETDRV 입력에 의해 00₂ 상태로 초기화 된다. 이 상태동안, 스위치(21)를 누르면, 단지 전원(17)이 턴-오프 되도록 한다. 코드 실행의 관점에 있어서, 사용자가 원한다면 소프트웨터는 전력 관리 포트에 XXXXXX01₂를 기록할 것이며, 이는 제 2 PAL U2를 01₂상태로 진입토록 할 것이다. 01₂ 상태는 정규 APM 상태이다. 각 APM 획득- 이벤트(get-event) 동안 감시 루틴은 비활동 대기 타이머가 종료되었는지 혹은 비활동 중지 타이머가 종료되었는지를 판단하기 위해 체크한다. 비활동 대기 타이머가 종료되면, 감시 루틴은 XXXXX1XX₂를 I/O 포트에 기록하여, 비디오 신호를 블랭킹할 것이다. 컴퓨터가 대기 상태를 벗어나 정규 동작 상태로 다시 들어가면, 감시 루틴은 XXXXX0XX₂를 I/O 포트에 다시 기록하여, 비디오 제어기(56)는 비디오 신호를 다시 발생한다. 제10도를 참조한 설명으로부터 보다 상세히 알 수 있는 바와 같이, 비활동 중지 타이머가 종료되면, 감시 루틴은 중지 루틴을 호출한다.
또한, 각 APM획득-이벤트동안, 감시 루틴은 전력 관리 포트를 판독한다. OFFH가 반환되면, 스위치(21)는 눌려지지 않은 것이다. 반면에, OFEH가 반환되었으면, 스위치(21)는 눌려졌으며, 컴퓨터 시스템은 중지 루틴을 시작하는데, 이는 제 10도를 참조하여 보다 상세히 기술될 것이다. 스위치(21)가 눌려지거나 혹은 비활동 중지 타이머가 종료되면, 고장안전 타이머가 개시되어, 커패시터(C2)는 충전된다: 따라서, 고장안전 타이머가 전원(17)을 턴-오프 되지 못하게 하기 위해, 중지 루틴은 XXXXXX11₂를 I/O포트에 기록하여 타이머를 리세트 시킨후, 즉시 XXXXXX01₂를 I/O포트에 기록하여 01₂모드를 다시 시작한다. 시스템이 중지되면, 중지 루틴은 XXXXXX11₂를 I/O 포트에 기록하여 전원을 즉시 턴 오프시킬 것이다.
시스템 소프트웨어
본 발명의 컴퓨터 시스템(10)의 하드웨어적 측면을 설명했지만 코드적 측면은 여전히 설명해야 할 것으로 남아 있다.
이제 제8도를 참조하면, 파워-업 루틴(power-up)의 일반적인 개략도가 도시되어 있다. 이 루틴은 (200)에서 시작되며, CPU기 리세트 벡터(Reset Vactoer)에 의해 상기 지정된 코드로 점프하여 실행한다. 이는 CPU가 리세트 하드웨어 신호에 의해 리세트되거나, 혹은 RESET 커맨드가 리세트 벡터에 의해 지정된 코드로 점핑하기 위해 실행될 때마다 일어난다. 이 리세트 절차는 이 분야에 잘 알려져 있다.
일반적으로 파워-업 루틴의 흐름은 시스템이 오프 상태(156)인지 혹은 중지 상태(154)여부에 의해 좌우된다. 즉, CMOS NVRAM(96)에서 각각 중지 플래그가 클리어 혹은 세트인지 여부에 의해 좌우된다. 작업(202)에 도시된 바와 같이, 시스템(10)은 비휘발성 CMOS메모리 (96)로부터 중지 플래그를 판독하여, 오프 상태(156)인가 혹은 중지 상태(154)인가를 판단한다. 시스템이 정규 동작상태(150)을 벗어나 오프 상태(156) 혹은 중지 상태(154)로 진입할 때 각 루틴은 NVRAM(96)의 중지 플래그를 세트(SET) 혹은 클리어(clear)한다. 중지플래그가 NVRAM(96)에서 세트이면 컴퓨터 시스템(10)은 중지상태 (154)에 있으며, 이 시스템(10)의 상태는 고정 디스크 저장장치(31)에 저장되어 있다. 반면에, 중지 플래그가 NVRM(96)에서 클리어이면, 컴퓨터 시스템(10)은 오프상태(156)에 있고 컴퓨터 시스템의 상태는 고정 디스크 장치(31)에 저장되지 않았다. 따라서, 중지 플래그가 NVRM(96)에서 세트가 아니면, 컴퓨터 시스템은(10)은 작업(204-210)에서 정상(normal) 부트 루틴(boot routine)을 실행한다. 제 1 작업은, (204)에 도시된 바와같이, 파워-온 자기-진단 (POST)으로, 제11도를 참조하여 보다 상세히 기술될 것이다. POST로부터 복원된후, 작업(206)에서 처럼, CPU(40)는 PBOOT 루틴을 호출하여 운영 체제를 로드한다.
PBOOT 루틴은 IBM PS/2컴퓨터를 운영하는 전형적인 루틴을 약간 변형한 것인데, 이는 후술될 것이다. PBOOT는 (하드 드라이브(31)로 부터인지 혹은 플로피 드라이브(27)내 디스크로 부터인지의) 부팅 장소를 판단하고, 운영 체제를 로드하고, CONFIG.SYS 파일이 지시하는 대로 시스템 변화를 분석하고 실행한 후, 궁극적으로, 제어를 운영 체제로 넘기기 전에 AUTOEXEC.BAT 배치 파일을 실행한다. PBOOT루틴은 이 분야에 잘 알려져 있다. 그러나, 본 발명의 컴퓨터 시스템(10)에 있어 특이한 것을, 부팅 루틴이 운영체제에 내장된 고급 전력 관리(APM) 고급 프로그래밍 인터페이스(API)와 통신한다는 것이다. APM API는 인텔 및 마이크로소프트사에 의해 개발되었으며, 많은 운영 체제가 현재 APM API를 구현한다: 예를 들면, IBM사의 OS/2, IBM사의 PC-DOS, 마이크로 소프트사의 MS-DOS, 및 마이크로소프트사의 윈도우즈, APM BIOS 부팅 루틴은 감시 루틴의 존재를 APM OS에 통보한다. 작업(210)에서 처럼, 운영체제는 사용자가 명령한 대로 무기한으로 코드를 실행한다. 그러나, 작업(212)에서 처럼, API를 감시루틴에 통보하면, APM BIOS 및 APM OS은 감시루틴을 실행 프로그램과 함께 병렬(parallel)로 실행시킨다. 즉, 컴퓨터 시스템(10)은 시분할 멀티테스킹 시스템(time-multiplexed multitasking system)이고, APM 획득-이벤트와, 결국 감시 루틴은 주기적으로(periodically) 실행된다. 최종 결과는, 감시 루틴은 대략 매초마다 실행된다는 것이다. 감시 루틴은 제9도를 참조하여 보다 상세히 기술 될 것이다. 제4도를 참조한 설명으로 부터 보다 상세히 알 수 있는 바와 같이, 정상 부트 루틴(204-210)이 끝난 후, 컴퓨터 시스템(10)은 정규 동작 상태(150)에 있게 된다.
작업(202)을 다시 참조하면, 중지 플래그가 NVRAM(96)에서 세트이면, 시스템 상태는 하드 드라이브(31)에 저장되었으며, 작업(214-220)에 도시된 바와 같은 부트 루틴을 다시 시작한다. 제일 먼저, (214)에서와 같이, 시스템은 단축된 POST를 시행한다. 단축된 POST에 대해서는 제11도를 참조하여 보다 상세히 기술될 것이다. 단축된 POST 후에, 작업(216)에서와 같이, 시스템은 재시작 루틴을 호출한다. 재시작 루틴은 제12도를 참조하여 보다 상세히 기술될 것이다. 말하자면, 재시작 루틴은 컴퓨터 시스템의 상태를 이 시스템(10)이 중지되기전의 구성으로 다시 복원한다. 작업(204-210)의 정상 부트 루틴과는 달리, APM 루틴은 시스템을 중지시키기위해 실행되었기에, 재시작 부트 루틴은 감시 루틴의 존재를 APM API 루틴에 통보할 필요가 없으며, 시스템 상태가 복원될 때, APM 은 메모리로 다시 로드된다. 따라서, 재시작 루틴이 시스템(10)의 상태를 저장하는 것을 끝마쳤을때 , 작업(212 및 220)에서와 같이, APM은 이미 적절한 곳에서 복원 코드로 병렬 실행중이다. 재시작 부트 루틴(214-220)이 끝난 후에, 제4도를 참조한 설명으로부터 보다 상세히 알 수 있는 바와 같이, 컴퓨터 시스템(10)은 정규 동작 상태(150)에 있다. 따라서, 정상 부트 루틴(204-210) 혹은 재시작 부트 루틴(214-220)이 실행된 후, 컴퓨터 시스템(10)은 정규 동작 상태(15)가 된다.
제9도에는 획득-이벤트동안 매초마다 APM에 의해 호출되는 감시 루틴의 상세한 흐름도가 도시되어 있다. 다른 운영체제는 다른 주파수에 획득-이벤트를 실행할 것이다.
제9도에서, 감시 루틴은 작업(222)에서 시작한다. 이하의 설명은 컴퓨터 시스템(10)은 정규 동작 상태(150)에서 개시된다는 가정을 한다. 제 1 작업은 작업(224)에서 처럼, 사용자가 스위치(21)를 눌렀는지를 테스트하기 위한 것이다. 제6 내지 7도를 참조한 설명으로 부터 보다 상세히 알 수 있는 바와 같이, 스위치 (21)는 전력 관리 포트 바이트를 판독하므로써 테스트된다. 제 2 PAL U2 스위치 상태 01₂ 에 있는 동안 판독시 스위치가 눌려지지 않았으면 전력 관리 포트는 FFH를 반환하고, 스위치가 눌려졌으면 FEH를 반환한다.
작업(224)의 테스트에서 사용자가 스위치(21)를 눌렀음을 나타내면, (226)에서 감시 루틴은중지 요청(Suspend Request) APM 반환 코드를 세트하고, (228)에서 APM으로 복귀한다. 세트 중지 요청APM 반환 코드에 응답하여, APM은 (하드디스크의 동기화와 같은) 어떤 필요한 시스템 작업을 수행하고 중지 커맨드를 발생하여, APM BIOS 라우팅 루틴은 중지 루틴을 호출한다. 중지 루틴은 제10도를 참조하여 보다 상세히 기술될 것이다. 중지 루틴은 본질적으로 시스템(10)을 정규 동작 상태(150)에서 벗어나 중지 상태(154)로 진입토록하며, (시스템이 중지될 준비가 되지 않았으면) 다수의 인스트럭션후에, 혹은 (시스템이 중지되고 재시작된다면) 다수 분, 시간, 일, 주 혹은 년 후에 감시 루틴으로 제어를 반환할 수 있다. 중지루틴이 중지없이 복귀하거나 혹은 완성된 중지 및 재시작 후에 복귀하거나에 상관없이, 중지 루틴은 항상 정규 중지(Normal Suspend) APM코드를 세트한다.
대체로, 스위치(21)는 늘려지지 않았으며, 루틴은 작업(230)으로 넘어가 시스템이 재시작했는 지를 조사한다. 중지 루틴이 중지없이 복귀하든지, 혹은 완성된 중지 및 재시작후에 복위했든지 간에, 중지 루틴이 호출되면 시스템은 이제 막 재시작되었다고 생각한다. 재시작은 작업(230)에서 테스트되고, 시스템이 정확히 재시작되었다면, (혹은, 파일 작동의 DMA동작으로 중지가 실행되지 않았다면),정상 재시작 APM 반환 코드가 작업(232)에서 세트되고, 작업 (234)에서 APM으로 복귀한다. 응답시, APM OS 구동기는 시스템클록과 중간에 진부하게된 다른 값들을 갱신(update)한다.
대체로, 시스템(10)은 방금 재시작되지 않으며, 감시 루틴은 작업(236)으로 넘어가, 사용자 활동을 테스트한다. 작업(236)에서, 3가지 유형의 사용자 활동이 테스트된다: 하드파일(hardfile)(31)활동, 키보드(12)활동, 마우스 (13)활동, 모든 APM 획득-이벤트마다, 감시 루틴은 하드파일 헤드, 실린더 및 섹터의 값을 판독하고, (수직 위치를 나타내는) 전송된 마우스(13) 마지막 바이트의 1-바이트 값을 판독하고, (마지막 키가 눌려진) 키보드 포트에서의 1-바이트 값을 판독하고, 그리고 실시간 클록(98)로부터 분 값을 판독하는데, 이 범위는 0 내지 59 분까지이며 각 시간의 시작때마다 0분으로 되돌아간다. 5개의 활동 변수(헤드, 실린더, 섹터, 마우스 바이트 및 키보드 바이트)와 분 값이 일시적으로 저장된다.. 현재의 5개의 값은 이전의 획득-이벤트로부터 저장된 5개의 활동 변수와 비교된다. 현재의 5개의 값이 이전의 획득-이벤트로 부터의 5개의 값과 동일하면, 사용자의 활동은 없었다. 비교한 값이 다르면, 사용자의 활동이 있었음을 뜻하며, 현재의 활동 변수값이 저장되어 다음 획득-이벤트 동안 판독된 값과 비교된다.
전술한 활동-감지 방안은 루틴이 CPU 상에서 실행되는 방안이다. 이와 달리, 활동이 하드웨어 방식으로 감시될 수 있다. 예를 들면, 하드웨어 인터럽트선(16)이 활동을 감시할 수 있다.
활동이 있으면, 작업(238)에서 감시 루틴은 대기 상태 플래그를 테스트하여, 컴퓨터 시스템(10)이 대기 상태 (152)에 있는 지를 판단한다. 대기상태 플래그가 세트되어 시스템(10)이 대기 상태(152)에 있음을 나타내면, (240)에서, 감시 루틴은 대기 상태(152)를 벗어나 정규 동작 상태(150)로 진입한다. 대기 상태(152)에 진입하면, 파워-다운된 장치를 다시 파워-업하므로써 감시 루틴은 대기 상태(152)를 벗어난다. 바람직한 실시예에서, (1) 01H를 전력관리 포트에 기록하여, 비디오 제어기(56)가 비디오 신호 발생을 개시하도록 하고, (2) 적절한 값을 고정 디스크 제어기(86)에 기록하여, 하드 드라이브(31)내 하드디스크가 회전을 중지토록 하며, (3) 시스템(10)이 정규 동작 상태(150)에 있음을 나타내기위해 대기 플래그를 클리어한다.
부가적으로, 활동이 있으면, 또한, 실시간 클록(98)의 분 값을 저장하여, 후속적인 획득-이벤트동안 판독된 분값과 비교한다. 작업(241)에서, 현재의 분값을 저장하여 비활동 대기 타이머와 비활동 중지 타이머를 효과적으로 리세트시킨다. 정상적인 사용동안, 사용자 활동이 있을 것이며, 작업(242)에서, 감시 루틴은 무 이벤트(No Event) APM 반환 코드를 세트하고, 작업(243)에서 APM호출 코드를 반환할 것이다. APM은 무 이벤트반환 코드에 응답하여 더 이상의 루틴을 호출하지 않는다.
작업(236)의 테스트에서 사용자의 활동이 없다고 나타내면, 작업(245 및 247)에서 각각 감시 루틴은 비활동 대기 타이머 및 비활동 중지 타이머가 종료되었는지를 테스트한다. 시스템(10)이 대기상태(152)에 있다면, 비활동 대기 타이머의 종료에 관해 조사하지 않는다. : 도리어, 테스트는 작업(244)에서 건너뛴다.
저장된 분 값에서 현재의 분 값을 감산하여, 사용자 활동이 있은 이래 경과 된 분의 수(the number of minutes)와 대응하는 값을 얻는다. 작업(245)에서는 이 값을 비활동 대기 타임아웃(timeout)값과 비교하고, 작업(247)에서는 이값을 비활동 중지 타임아웃값과 비교한다. 2개의 타임아웃값은 사용자에 의해 선택가능하며, 시스템이 대기 상태(152)혹은 중지상태(154)에 절대로 들어가지 못하도록 세트할 수 있고 타이머중 하나의 종료로 인해 대기 상태(152) 혹은 중지 상태 (154)로 들어 갈 수 없도록 세트할 수 있다. 타임아웃값을 0으로 세트하는 것은, 타이머가 절대로 종료할 수 없다는 것을 나타낸다.
마지막 사용자의 활동이래 분의 수가 비활동 대기 타임아웃값과 동일하거나 혹은 크다면, 작업(246)에서, 감시 루틴은 시스템(10)이 대기 상태(152)로 들어가게 한다. 비활동 대기 타이머가 종료되지 않았으면, 작업(247)에서, 감시 루틴은 비활동 대기 타이머의 종료를 테스트 한다. 반면에, 비활동 대기 타이머가 종료되었으면, 감시 루틴은 소정 소자를 각각 저-전력 모드로 두어, 시스템(10)을 대기 상태(152)로 진입토록 한다. 바람직한 실시예에서는, (1) 05H를 전력 관리 포트에 기록하므로써, 제 2 PAL U2를 01₂ 상태로 두며, 비디오 제어기(56)의 비디오 신호 발생을 중지토록 만들고, (2) 적절한 값을 고정 디스크 제어기(86)에 기록하여, 하드 드라이브(31)가 저-전력 모드로 진입토록 하고(하드 드라이브내 하드 디스크의 회전을 중지한다.) 그리고, (3) 시스템(10)이 대기 상태 (152)에 있음을 나타내는 대기 플래그 세팅하는 것을 포함한다. 간단히 말하면, 바람직한 실시예에서, 감시 루틴은 비디오 신호를 블랭킹하고, 하드 드라이브(31)내 하드 디스크를 스핀 다운(spindown) 하고, 시스템(10)이 대기 상태(152)에 있음을 나타내는 플래그를 세팅한다. 시스템(10)을 대기 상태(152)로 진입토록 한 후에, 작업(247)에서, 감시 루틴은 비활동 중지 타이머의 종료를 테스트한다.
작업(247)에서, 감시 루틴은 비활동 중지 타이머가 종료되었는지를 판단한다. 마지막 사용자 활동이래 분의 수가 비활동 중지 타임아웃 값과 동일하거나 혹은 크다면, 작업(248)에서, 감시 루틴은 중지 요청 APM 반환 코드를 세팅하고, 작업(243)에서, APM으로 복귀한다. 작업(226)을 참조한 설명으로부터 알 수 있는 바와 같이 , 설정중지 요청 APM 반환 코드에 응답하여, APM은 소정 필요한 시스템 작업을 수행하고 중지 루틴을 호출한다. 제10도를 참조한 설명으로부터 보다 상세히 알 수 있는 바와 같이, 간단히 말해, 중지 루틴은 시스템(10)이 정규 동작 상태(150)를 벗어나 중지 상태(154)에 들어가도록 한다. 작업(226)을 참조한 설명으로부터 보다 상세히 알 수 있는 바와 같이, 시스템을 중지하거나 혹은 중지하지 않고서, 중지 루틴에서 감시 루틴으로 제어를 넘길 수 있다. 반면에, 비활동 중지 타이머가 종료되지 않았으면, 작업(242)에서, 감시 루틴은 무 이벤트 APM 반환 코드를 세팅하고, 작업(243)에서, APM 호출 코드로 복귀한다.
비록 대부분의 경우에 무 이벤트 APM 반환 코드가 APM으로 반환되지만, 다양한 다른 이벤트들이 APM으로 반환될 수 있다. 그러나, 단지 하나의 APM 반환 코드가 각 APM 획득-이벤트에 대해 명시될 수 있다. 예를 들면, 대기 상태(152)에 진입한 후, 무 이벤트는 APM으로 반환된다. 중지 상태(154)를 벗어난 후에,정규 중지(Normal Suspend) APM 반환 코드는 APM으로 반환된다. APM에 대해 큐잉된(queued) 특정 메시지는 컴퓨터 시스템의 정확한 특성에 의존한다. 또한 감시 루틴은 정규 재시작(Normal Resume) 반환 코드 혹은 중지 재시작APM 반환 코드를 반환한다.
파워-업 및 재시작 루틴은 중지 루틴을 이해함으로써 잘 이해될 것이다. 따라서, APM BIOS 루틴의 설명은 다음의 순서에 입각할 때 가장 명확하게 이해된다고 사료된다: 본 발명의 파워-업 루틴의 일반적인 개략도(제8도), 감시 루틴의 상세도(제9도), 본 발명의 중지 루틴(제10도), 본 발명의 파워-업 처리 (제11도), 본 발명의 재시작 루틴의 상세도(제12도), 저장 CPU 상태의 루틴의 상태도(제13도), 복원 CPU 상태 루틴의 상세도(제14도), 그리고 저장 8259 상태 루틴의 상세도(제15도).
비록 대부분의 루틴이 다른 루틴과 상호동작하고 중지/재시작 처리의 연속적인 사이클로 인해, 본 발명의 컴퓨터 시스템(10) 설명이 다소 순환적(circular)이지만, 부트 루틴 (제11도) 혹은 재시작 루틴(제12도)전에 중지 루틴(제10도)을 설명하는 것이 가장 도움이 될 것이다. 이제 제10도를 참조하면, 중지 루틴의 흐름도가 도시되어 있다. 정상 부트 루틴(204-210) 혹은 재시작 부트 루틴(214-220)이 실행된 후, 이 중지 루틴을 재호출하면, 컴퓨터 시스템(10)은 정규 동작 상태에 있게된다. 더우기, 제8도를 참조한 설명으로부터 알 수 있는 바와같이, 컴퓨터 시스템이 정상적으로 부팅(204-210)되든지 혹은 재시작-부팅(214-220) 되든지 간에, 이러한 루틴이 끝나면, APM OS 구동기는 감시 루틴과 같은APM BIOS 루틴을 인식한다. 그 결과, APM은 대략 매초마다 감시 루틴을 폴링(polling)한다.
제10도에서는 작업(250)에서 시작하는 중지 루틴이 도시되어 있다. 감시 루틴이 중지 요청 APM반환 코드를 APM에 반환하는 것에 응답하여, APM은 중지루틴을 호출한다. 우선 작업 (252)에서 저장 CPU 상태 루틴을 호출한다.
저장 CPU상태 루틴은 제13도를 참조하여 보다 상세히 기술될 것이다. 이제 다음과 같은 사항을 주지하면 족하다. 즉, 중지 루틴이 최초로 호출될 때 CPU(40)가 어떤 모드인가에 상관없이, 중지 루틴의 나머지는 실모드(Real Mode)로 CPU(40)에서 실행될 것이므로, 따라서, 허용된 어드레스 공간의 범위를 넘어선 인스트럭션 실행을 시도하거나 혹은 특권 인스트럭션(priviledged instruction) 실행을 시도하므로써 일어날 수 있는 에러 발생의 염려없이 실행할 수 있는 것이다.
작업(253)에서, 저장 CPU 상태 루틴은 독특한 방식으로 프로그램 제어를 중지 루틴으로 반환한다. 저장 CPU 상태 루틴으로부터 중지 루틴으로의 반환은 CPU 리셋팅과 관련이 있으며, 이는 제 13도의 작업(630) 및 (632)을 참조하여 보다 상세히 기술될 것이다. 중지 루틴에 관한 중요한 사항은 CPU레지스터가 세그먼트 E000H데이타 구조에 기록되고 CPU(40)는 이제 실모드라는 것이다.
다음 작업(254)에서, 중지 루틴은 스위치(21)가 눌려졌는지를 확인한다. 스위치(21)의 패쇄는 제6 내지 7도를 참조한 설명에서 알 수 있는 바와 같이 테스트한다. 간단히 말하면, 스위치(21)가 눌려졌으면, 판독시 전력 관리 포트는 FEH를 반환한다. 스위치가 눌려지지 않았으면, 판독시 FFH를 반환한다. 스위치가 눌려지지 않은 경우, 중지의 진행은 소프트웨어-중지 플래그는 CMOS NVRAM(96)에서 세트된다. 이는 소프트웨어 중지와 스위치 폐쇄로 개시되는 하드웨어 중지를 혼동치 않게 해준다. 중지가 소프트웨어-중지이면, 다음 스위치 누름은 중지가 하드웨어 중지가 되도록 해 준다. 소프트웨어 중지를 하드웨어 중지로 변환한 수의 그 스위치 폐쇄는 중지의 포기를 초래한다.
다음 작업(260)에서, BIOS ROM(88)을 섀도우해제(unshadow)한다. 세그먼트 C000H 와 D000H로의 ISA액세스를 처음으로 턴-오프 하므로써, BIOS ROM을 섀도우해제 시킨다. BIOS백터가 세스컨트 C000H와 D000H를 가리키는 것에서 ROM(88)을 다시 가리키도록 변경된다. 다음 작업(262)에서, 세그먼트 C00H에 스택을 설정한다.
중지 루틴에 스택을 설정한 후, 작업(264)에서, DMA 제어기(72), 디스켓 어댑터(84) 및 IDE 디스크 제어기(86)를 조사하여, DMA 전송, 플로피 드라이브 전송, 혹은 하드파일 전송이 각각 현재 진행중인지를 알아본다. 만약 진행중이면, 이들 3가지 유형의 전송의 특별한 특성으로 인해 만족스런 중지가 수행될 수 없다. 예를 들면, 하드 드라이브로부터 하드파일 전송이 진행중이라면, 이 데이터는 IDE 제어기에 의해 벌써 판독되었으나 아직 시스템 메모리(53)로 전송되지는 않았다. 이 데이터는 CPU에 의해 상세히 액세스 될 수 없으므로, 시스템이 하드 하일 판독 중간에 중지될 때 데이터를 잃어버릴 가능성이 있다. 따라서, 이 3가지 유형이 전송중의 어느 하나가 진행중이면, 중지는 다음 APM 획득-이벤트때까지 연기되는데, 이 때 DMA 제어기와 디스켓 제어기의 활동을 한번 더 테스트된다.
결과적으로, 제어가 다시 APM으로 돌아갈 수 있도록 (252, 260 및 262)에서 수행된 작업을 역으로 해야만 한다. 우선 작업(265)에서, BIOS를 판독/기록에서 판독-전용으로 변화시킨다. 이는 세그먼트 C000H 와 D000H를 폐쇄하므로써 이루어지는데, 이 세그먼트들은 여전히 섀도우된 데이터를 포함한다. 그러면, 이 두 세그먼트에 대한 ISA 액세스가 다시 턴-온 된다. 작업(262)에서 생성된 스택(stack)이 팝(pop)되어 복원된다. 마지막으로 작업(266)에서는 복원 CPU상태 루틴에서 CPU상태를 복원한 후, (267)에서, 제어를 APM으로 반환한다. 다음 획득-이벤트 동안 약 또다른 초(second)내에 APM은 중지 루틴을 다시 폴링(polling) 할 것이다. 그때, 중지 처리를 불가능하게 했던 전송(들)이 완료되어 중지가 계속되도록 허용할 것이다.
이제 작업(264)을 다시 참조하면, 현재 진행중인 DMA 전송, 플로피 드라이브 전송, 혹은 하드파일 전송이 없다면, 중지가 수행될 수 있다. 중지 루틴은 작업(268)에서 계속된다. 전력 버튼(21)이 눌려질 때, 고장안전 타이머가 이 네이블됨을 상기하라. 따라서, 제6도를 참조한 설명에서 기술된 바와 같이 , 작업(268)에서, 첫 작업은 고장안전 타이머를 리세트하는 것이다. 제6 내지 7도를 참조한 설명에서 기술된 바와 같이, 전력 관리 포트에 0X11₂를 기록하여 고장안전타이머를 리세트한다. 이로 말미암아 (제6도에서의) 제 2 PAL U2의 핀(19)는 저항(R4)을 통해 커패시터(C2)에서 전압 방전을 일으켜, 커패시터(C2)의 대략 2.7 VDC의 축적된 전압이 트랜지스터(Q1)로 통전되지 못하도록 한다. 제6 내지 7도에서 보다 상세히 설명한 바와 같이, 트랜지스터(Q1)이 도전되면, 제 2 PAL U2의 핀(11)은 논리 0이 되고, 제 2 PAL U2의 핀(12) 출력은 논리 1이 되어, 전원(17)은 컴퓨터 시스템(10)에 통제된 전공급을 멈춘다는 것을 상기하라. 따라서, 중지의 중간에 전력이 소모되지 않도록, 중지 루틴은 적어도 대략 매 10초마다 커패시터(C2)를 방전해야한다.
다음 작업(270)에서는 8042 코프로세서(104)의 상태를 저장한다. 8042 코프로세서(104) 레지스터는 본 기술분야에 잘 알려져 있다. CPU(40)는 레지스터들을 직접 판독가능하며, 이 판독된 값을 D000H의 데이터 구조내에 직접 기록한다.
다음 작업(272)에서는 8259 인터럽트 제어기(92)의 상태를 저장한다. 중지 루틴은 8259 저장 상태 루틴을 호출하는데, 이는 제15도를 참조하여 상세히 기술될 것이다. 이 시점에서는 비록 몇 레지스터들이 기록-전용일 지라도, 8259저장 상태 루틴은 2개의 8259인터럽트 제어기(92)의 알지 못하는 레지스터들의 내용을 확인함을 인식하는 것으로 충분하다. 이 레지스터들의 값은 D000H의 데이터 구조내로 직접 기록한다.
인터럽트 제어기(92)의 상태가 저장된 후, 인터럽트 제어기(92)의 구성은 알려진 상태로 변하여, 중지 루틴이 실행하는 다양한 인터럽트-구동 작업(interrupt-driven tasks)의 적절한 동작을 가능토록 해야만 한다. 따라서, 작업(274)에서, BIOS 데이터 영역 및 벡터 테이블이 교환(swap)된다. 중지 루틴은 세스컨트 0000H의 현재-상태(present-state) BIOS데이타 영역 및 백터 테이블의 내용을 세그먼트 D000H의 위치에 복사한다. 다음, 세그먼트 D000H의 위치에 복사한다. 다음, 세그먼트 D000H의 데이터 구조로 부터의 알려진-상태 BIOS데이타 영역 및 벡터 테이블의 내용을 세그먼트 0000H의 위치에 복사한다. 알려진-상태 BIOS데이타 영역 및 벡터 테이블을 세그먼트 D000H에 복사하는 것은 제11도 부트-업 루틴의 작업(414)에서 후술될 것이다. 마지막으로, 세그먼트 0000H의 현재-상태 BIOS 데이터 영역 및 벡터테이블을 세그먼트 D000H내 데이터 구조에 복사한다. 작업(274) 루틴이 끝나면, 인터럽트 13H(디스크 판독/기록)과 인터럽트 10H(비디오 액세스)와 같은 모든 인터럽트는 예상대로 동작할 것이다.
다음 작업(276)에서, 타이머(102)의 상태를 저장한다. 타이머의 레지스터들은 본 기술분야에 잘 알려져 있다. CPU(40)는 모든 레지스터를 직접 판독할 수 있으며, 판독된 레지스터값은 직접 D000H내 데이터 구조로 기록된다. 작업(276)에서, 또한, IDE 디스크 제어기(86)의 상태가 저장된다. IDE 디스크 제어기(86) 레지스터들은 본 기술분야에서 잘 알려져 있다. CPU(40)는 모든 레지스터들을 직접 판독할 수 있으며, 이 판독된 값들은 D000H내 데이터 구조에 직접 기록된다.
다음 단계는 하드 드라이브(31)상의 중지 파일에 기록된 시스템 메모리를 준비하는 것이다. 시스템 메모리는 (주 메모리와 확장 메모리를 포함하는) 시스템 RAM(53) 및 비디오 메모리(58)를 구비하고 있다. 이때, RAM(53) 일부는 외부 캐시(external cache) (60)일 수 있다. 작업(628)에서, CPU 캐시 플러시(flush) 하는데, 이는 제13도를 참조하여 기술될 것이다. 따라서, RAM(53)이 하드 드라이브(31)에 기록되기 전에, 외부 캐시는 플러시 되어야 한다. 따라서, 작업(286)에서 시스템 캐시(60)는 플러시 된다. 플러싱이 완전히 끝난후, RAM(53)은 완전(whole)하며 CPU 캐시 (41) 혹은 시스템 캐시(60)는 메모리 데이터가 남아있지 않다.
시스템(10)상에서 실행되는 코드는 IDE 제어기(86)를 알려진 상태로 둘 수가 있다. 따라서, 작업(292)에서 다음 단계는 IDE 제어기(86)를 알려진 상태로 초기화한다. 이는 IDE제어기(86)를 알려진 상태로 초기화한다. 이는 IDE 제어기(86)내 레지스터들에 값을 직접 기록하므로써 성취된다. 중지 파일의 헤드, 섹터, 및 실린더는 CMOS메모리(96)에 저장된다. 일단 중지 파일의 위치가 정해지면, 파일 크기, 기호(signature)가 판독된다. 바람직한 실시예에서, 기호는 임의 길이의 ASCII 코드로 중지 파일의 존재를 나타낸다. 기호 구현을 위한 또다른 대안으로서는 하드 파일 시스템상에서 임의로 발견될 확률이 매우 낮은 이진스트링(binary string)을 사용하는 것이 있다.
중지 파일에 대한 파일크기 및 기호를 판독후, 작업(296)에서 다음 단계 몸 기호와 파일크기가 정확한지를 확인하는 것이다. 기호가 부정확하여 다른 프로그램이 중지 파일을 수정하였음을 나타내거나 혹은 크기가 부정확하여 중지 화일 크기가 수정되었다는 것을 나타낸다면, 작업(298)에서, 중지 루틴은 제13도의 작업(652)에서 개시되는 치명적 중지 에러 루틴(Fatal Suspend Error Routine)을 호출한다. 치명적 중지 에러 루틴을 벗어나기 위해 사용자가 스위치(17)를 누르면, 프로그램은 작업(299)에서 작업(506)으로 점프한다.
반면에, 기호가 정확하고 중지 파일이 충분히 크다면, 중지 루틴은 컴퓨터 시스템의 상태를 메모리에 기록하는 것을 계속할 수 있다.
컴퓨터 시스템(10)의 상태를 하드 드라이브(31)에 기록하기 전에, 고장안전 타이머(C2)를 리세트하고, 스위치(21)가 다시 눌려졌는가를 감지하기 위해 스위치를 테스트한다. 제6 내지 7도에서 보다 상세히 설명한 바와 같이, 전력관리 포트의 판독결과가 FEH를 반환한다면, 스위치(21)는 다시 눌려지지 않은 것이며, 중지는 계속되어야 한다. 반면에, 전력 관리 포트의 판독결과 FFH를 반환하면, 스위치(21)는 다시 눌려진 것이며, 중지는 포기된다. 커패시터(C2)가 방전되고, 중지 루틴내 다수의 지점에서 스위치(21)의 패쇄에 대한 테스트가 행해진다. 작업(297)은 단지 예시적인 것이다.; 적용가능한 기술분야의 통상회로 설계자라면, 커패시터(C2) 방전간 시간 및 수를 결정할 수 있을 것이다. 중지 루틴은 커패시터(C2)를 확실히 방전시켜야 하며, 따라서, C2는 전원(17)이 턴-오프되도록 하기 전에 고장안전 타이머를 리셋팅한다. 이와 마찬가지로, 스위치(21)가 때때로 체크되어야 한다. 스위치(21)가 다시 눌려지는 경우, 사용자가 중지를 포기하기를 원하다는 것을 나타내는 것이므로, 코드는 재시작 루틴내 적절한 지점으로 점프하여 중지 루틴에 의해 이미 중지된 것을 중지 해제(un-suspend)시킨다.
유사하게, 작업(350)에서, Ctrl-Alt-Del의 키 동작은 중지를 포기(abort)한다. Ctrl-Alt-Del키를 누르는 것은 (Ctrl 키,Alt 키, 및 Delete 키를 동시에 누르는 것은) IBM BIOS 및 인텔 80X86 CPU 계열을 근거로한 전형적인 컴퓨터 시스템을 리셋팅하는 알려진 방법이다. 본 기술분야에서 잘 알려져 있는 바와 같이, 컴퓨터 시스템(10)은 BIOS 인터럽트 1 처리기(BIOS interrupt 1 handler)로 Ctrl-Alt-Del를 관리한다. 컴퓨터 시스템(10)은 작업(350)에서 다소 변형된 인터럽트 1 처리기를 구비하여, 작업(352)에서 CMOS 메모리(96)내 중지 플래그를 클리어한 다음, 작업(354)에서, 리세트된 부트-업 루틴으로 점프한다.
본 발명의 컴퓨터 시스템(10)에서, 중지 루틴이 실행되는 동안 Ctrl-Alt-Del를 누르는 것은 이 컴퓨터 시스템(10)이 오프 상태(156)로 진입토록한다. 제 2 PAL U2는 스위치(21)가 눌려진 후에 스위치 상태 10₂에 있기 때문에, Ctrl-Alt-Del를 누르면 부트-업 루틴이 호출되고, 부트-업 루틴은 00H을 전력 관리 포트에 기록하여 제 2 PAL U2를 알려진 상태에 둔다. 그러나, 제6 내지 7도를 참조한 설명에서 기술된 바와 같이, 제 2 PAL U2가 스위치 상태 10₂에 있는 동안, 00H를 제 2 PAL U2에 기록하면 제 2 PAL U2는 전원(17)이 시스템 전력 공급을 중지토록 만든다. 따라서, 중지 루틴 동안 Ctrl-Alt-Del을 누르면, 컴퓨터 시스템(10)은 오프상태(156)로 진입하게 된다.
이제 작업(300)을 참조하면, 중지 파일은 하드 드라이브(31)상에 다시 위치한다: 작업(300)에서, 기호구(signature phrase)는 중지 파일의 첫 바이트에 기록된다. 다음, 작업(302)에서, 세그먼트 D000H내 전체 64 킬로바이트 데이터가 중지 파일에 기록된다. D000H의 이러한 64K 복사는 실질적으로 장소 유지기(place holder)로서 역할하며, 중지 루틴 종료시 동일한 장소로 재기록될 것이다.
그다음, 시스템 메모리가 중지 파일에 기록된다. 이것은 트윈- 버퍼 시스템(twin-buffer system)이 시스템 메모리로부터 데이터를 판독하고 압축(compress)한 후, 이 압축된 데이터를 세스컨트 C000H에 기록하고, 마지막으로 세그먼트 C000H에 기록된 이 압축된 데이터를 중지 파일에 기록하므로써 성취된다. 2개의 루틴들이 시분할 장치(time-multiplexed arrangement)내에서 동작한다: 하나는 데이터를 압축하여 세그먼트 C000H에 기록하며, 다른 하나는 이 압축된 데이터를 중지 파일에 기록한다. 전자는 포어그라운드(foreground)에서 실행되고, 후자는 백그라운드(background)에서 실행되는 인터럽트-구동 루틴이다. 분명히, 단지 하나의 CPU(40)만 있으므로 단지 하나의 루틴만이 주어진 시간내에 실행가능하다: 그러나, 후자 루틴은 인터럽트-구동 방식이므로 중지 파일의 데이터 전송 속도 최적화의 필요에 따라 전자 루틴의 실행을 인터럽트할 수 있다. 양 버퍼는 각각 8 킬로바이트 길이로, 이 길이는 하드 드라이브 (31)로의 전송 시간을 최적화한다고 사료된다.
이 프로세스는 작업(304)에서 개시되며, 데이터를 판독 및 압축후, 8K 버퍼의 시작부를 채우기에 충분한 데이터를 세그컨트 C000H에 기록한다. 데이터는 연속 길이 인코딩 방법(run length encoding method)을 사용하여 압축된다: 그러나, 다른 적절한 압축 방법이 사용될 수도 있다. 이 때에는 작업(307)에서 일반적으로 나타난 버퍼-기록 루틴(Write from Buffer Routine)에서 개시된다. 버퍼-기록 루틴(307)은 인터럽트-구동 루틴으로서, 백그라운드에서 실행되며 작업(308-310)으로 구성된다. 작업(311)으로 표시된 압축 루틴(Compression Routine)은 작업(312-318)으로 구성되며 포어그라운드 루틴이다. 먼저(308)에서, 버퍼-기록 루틴(307)은 작업(304)에서 채워진 버퍼를 중지 파일에 기록한다. 버퍼-기록 루틴이(307) 버퍼의 내용을 중지 파일에 기록하는 동안, 작업(312)에서, 압축 루틴(311)은 시스템 메모리로부터 다음 바이트를 계속 판독하여 압축한 후, 이 압축된 데이터를 다른 2개의 8K버퍼에 기록한다. 일단 압축 루틴(311)이 압축된 데이터를 버퍼에 채우면, 다음 단계인 작업(314)에서는, 전체 시스템 메모리의 압축 여부를 판단한다.
IDE 제어기(86)는 데이터를 하드 드라이브(31)에 매우 신속하게 기록할 수는 없다. 이 결과, 버퍼-기록 루틴(Write from Buffer Routine) (307)이 버퍼를 하드 드라이브(31)에 기록하는 작업을 종료하기전에, 압축 루틴(311)은 하드 드라이브(31)에 기록되고 있지 않은 8K 버퍼를 채우는 작업을 종료할 것이다. 따라서, 압축 루틴은 버퍼-기록 루틴이 버퍼를 하드 드라이브(31)에 기록하는 것을 끝마치기를 기다려야만 한다. 압축 루틴(311)이 전 시스템 메모리의 압축 및 기록을 종료하지 않은 경우, 작업(316)에서 압축 루틴(311)은 버퍼-기록 루틴(307)를 기다린다. 압축 루틴(311) 및 버퍼-기록 루틴(307)이 현재의 버퍼를 중지 파일에 기록하는 것을 끝마치면, 이 루틴은 버퍼 플래그를 스위칭하여, 압축 루틴(307)이 중지 화일에 기록된 버퍼를 압축된 데이터로 채우기 시작할 수 있다는 것을 나타낸다. 다음, 작업(297)을 참조한 설명에서 기술한 바와 같이, 고장안전 타이머 C2가 리세트되고 스위치(21)는 패쇄 이벤트(closure event)에 대하여 체크된다.
작업(310)에서, 버퍼-기록 루틴(307)은 중지 파일에 기록된 버퍼가 기록되어야할 마지막 버퍼인지를 판단한다. 마지막 버퍼가 아닌 경우, 버퍼-기록 루틴은 압축 루틴(311)에서 채워진 버퍼를 중지 파일에 기록한다. 그 동안에, 압축 루틴(311)은 버퍼 플래그를 조사하여 버퍼가 압축된 시스템 메모리를 더 수신할 준비가 되었는지를 판단한다. 즉, 작업(316)에서, 압축 루틴은 버퍼-기록 루틴이 현재의 버퍼를 끝마칠 때 까지 기다린후, 작업(312)에서 압축 루틴을 계속한다. 유의할 것은 비디오 메모리(58)는 압축되지 않는다는 점이다. 앞서 보다 상세히 기술한 바와 같이, 오히려, 비디오 메모리(58)는 VESA 요청을 이용하여 비디오 제어기(56)를 통해 판독되고, 트윈-버퍼 시스템을 사용하여 압축되지 않은 상태로 기록된다.
일단 압축 루틴(311)이 모든 시스템 메모리의 압축을 끝마치면,(318)에서, 버퍼-기록 루틴(307)이 마지막 버퍼를 중지 파일에 기록하는 것을 종료할 때 까지 기다린다. 일단 버퍼-기록 루틴이 종료된 경우, 버퍼-기록 루틴은 작업(310)에서 (318)로 분기하여 사라진다. 이때, 어떠한 백그라운드 루틴도 실행중이 아니며, 주 프로그램은 작업(32)에서 계속된다.
다음 작업(320)에서, 비디오 제어기(56)의 상태가 저장된다. 이 비디오 제어기(56) 레지스터(register)는 본 기술분야에 잘 알려져 있다. 모든 레지스터들은 CPU에 의해 직접 판독 가능하고, 이 판독된 값들은 D000H내 데이터 구조로 직접 기록된다. 또한 작업(320)에서, DMA 장치(71) DMA 제어기(72) 및 중앙 중재기(Central Arbiter)(82), 8277 디스켓 제어기(84), RS-232 UART(94)의 상태가 저장된다. 이 장치들은 레지스터를 구비하며, 이들은 본 기술분야에서 잘 알려져 있다. 디스켓 제어기(84) 및 UART(94)내 모든 레지스터들은 CPU(40)에 의해 직접 판독가능하고, 이 판독된 값들은 D000H내 데이터 구조로 직접 기록된다. DMA장치는 판독가능한 레지스터들을 가지고 있지 않다. 오히려, 각 DMA 전송동작전에 일반적으로 셋업(set-up)된다. 이러한 이유 때문에, DMA 전송이 진행중인 경우 중지 루틴은 중지를 그만둔다.
일단 컴퓨터 시스템(10)이 중지 상태(150)에 진입하면 중지 파일과의 모든 전송을 탐지해낼 수 있어야 바람직하다. 예를 들면, 어떤 사람이 수정된 중지 파일을 생성하여, 이 중지 파일을 하드 드라이브(31)로 이동시킨후, 전에 저장된 상태와 다른 상태로 컴퓨터 시스템(10)이 복원되도록 시도하는 것이 가능하다. 이를 위하여, 의사-랜덤값(pseudo-random value)이 세그먼트 D000H 데이터 구조내에 놓인다. 작업(328)에서 도시된 바와 같이, 16-비트 타임스템프(16-bit time-stamp)는 고속 타이머(102)중의 하나로부터 판독된다. 그 후, 이 타임스탬프는 세그먼트 D000H 데이터 구조로 기록된다.
다음, 캐리 비트를 고려하지 않고 세그먼트 D00H내에 각 16-비트 단어를 부가하므로써 전체 D000H세그먼트에 대한 16-비트 검사합(checksum)이 계산된다. 작업(330)에서, 이 검사합은 세그먼트 D000H 데이터 구조로 기록되고, 작업(332)에서는 CMOS NVRM(96)으로 기록된다. 이러한 과정후에 작업(334)에서, 모든 작업 변수(working variables)는 CPU(40)에서 세그먼트 D000H 데이터 구조로 기록되고, 작업(336)에서, 중지 파일의 기호부 뒤에(기호바로 다음에) 전체 세그먼트 D000H가 중지 파일로 재기록된다. 다음 작업(338)에서, 컴퓨터 시스템(10)의 상태가 중지 파일로 저장되었음을 표시하기 위해 CMOS NVRAM(96)내 중지 플래그가 세트된다.
마지막으로, CPU(40)는 X102를 전력 관리 포트에 기록하여 전원을 턴-오프하고, 제 2 PAL U2는 102 상태로 진입하게 된다. 제 2 PAL U2가 102 상태로 진입하면, 전원(17)이 턴-오프되고, 제 2 PAL U2의 핀(12) 출력은 논리 1로 단정되며, SR래치의 출력 핀(3)이 논리 0 상태가 되어이 저항(R6)에 의해 하이로 승압되도록 하므로써, 전원(17)의 주/조절 장치(172)는 ±5 및 ±12 선을 따라 통제된 전압 제공을 중지한다. 상기 전압이 대략 0으로 램프-다운하는데는 다수 초가 걸리면, 이 동안 CPU(40)는 다수의 커맨드를 실행할 수 있다. 따라서,CPU(40)는 동작을 중지할 때까지 전원(17)에서 생성되는 시스템 전력 전압의 감쇠를 기다림에 따라, 작업(342)에서, 무한 루프(회전 (spin))를 실행한다.
이제 제 11도를 참조하면, 부트-업 루틴(Boot-Up Routine)의 상세히 도시되어 있다. 부트과정은 일반적으로 제 8도를 참조한 설명에 기술되어 있다. CPU(40)가 리세트 벡터(Reset Vector)로 점프하여 이 리세트 벡터에 의해 지시된 코드를 실행할 때, 부트-업 루틴은작업(380)에서 시작한다. 이것은 CPU(40)가 파워업될 때마다, CPU(40)가 리세트 벡터에 의해 지시된 코드로 점핑하여 리세트될 때마다 일어난다. 이 리세트 절차는 본 기술분야에서 분야에 잘 알려져 있다.
첫 작업은, 작업(382)에서, CPU(40)를 테스트하고 메모리 제어기(46)를 초기화하는 것이다. CPU는 POST루틴에 의해 테스트된다. 메모리 제어기 (46)는 POST추틴에 의해 초기화된다.
그후, 섀도우 메모리(shadow memory)가 테스트되고, BIOS가 ROM(88)에서 RAM(53)의 섀도우 메모리의 부분으로 복사된다. 실행된 코드의 흐름은 CMOS NVRAM(96)내 중지 플래그의 세트여부에 좌우된다. 중지 플래그가 세트이면, 컴퓨터 시스템(10)은 중지 상태(150)에 있고 이 컴퓨터 시스템은 중지되었을 당시의 상태로
복원되어야 한다. 세그먼트 E000H 및 F000H내 시스템 RAM(53)은 단축된 테스트로 행해진다. 컴퓨터가 재시작하는데 걸리는 시간량을 감소시키기 위해, 메모리는 단지 적당 크기만 체크되고, 0이 된다(000H가 각 위치에 기록된다).
반면에, 중지 플래그가 CMOS NVRAM(96)에서 클리어(clear)된 경우, 세그먼트 E000H및 F000H내 시스템 RAM(53)은 다음을 포함하는 표준, 심층 메모리 테스트(standard, in-depth memory test)로 주어진다: (1) 스틱키-비트 테스트(sticky-bit test), (2) 이중-비트 메모리 테스트(double-bit memory test),(3) 교차 어드레스선 테스트(a crossed address line test).
세그먼트 E000H 및 F000H가 테스트된후에 BIOS는 ROM BIOS(88)의 내용을 시스템 RAM(53)으로 복사하고 RAM에서 BIOS를 실행하도록 메모리 제어기를 구성하여 새도우(shadow)될 수 있다. BIOS의 새도우는 시스템 속도수를 증가시킨다: BIOS는 저속의 ROM(88)(전형적인 액세스 속도는 250 nano초)이 아닌 고속의 시스템 RAM(53)(전형적인 액세스 속도는 80 nano초)에서 실행되므로 시스템 성능이 향상된다. BIOS의 섀도우잉은 BIOS복사기(BIOS copier)를 하위메모리(lower memory)내 어드레스로 로딩하고, ROM(88)으로 부터의 BIOS를 시스템 RAM(53)의 세그먼트 E000H 및 F000H로 복사하고, 섀도우 RAM을 이네이블하는 것을 포함한다.
다음, 작업(384)에서 , 비디오 제어기(56)가 테스트되고 초기화되며, 비디오 메모리(58)가 테스트된다. 이러한 테스트와 초기화는 본 기술분야에서 잘 알려져 있다.
작업(386)에서, 실행된 코드의 흐름은 CMOS NVRAM(96)내 중지 플래그의 세트여부에 의존한다. 중지 플래그가 세트된 경우, 작업(383)에서 처럼 남아있는 시스템 RAM(53)은 단지 크기만 체크되고 0이 된다. 그러나, CMOS NVRAM(96)내 중지 플래그가 클리어된 경우, 작업(398)에서, 작업(383)을 참조한 설명에서 기술된 바와 같이, 3-단계 심층 테스트를 사용하여 남아 있는 시스템RAM(53)이 테스트된다.
작업(400)에서, 메모리가 테스트된 후, 보조 장치(auxiliary devices)--8259, UART, 8042, 및 그외 다른 것들--가 테스트되고 초기화된다. 작업(408)에서, 고정 디스크 제어기가 초기화된다.
작업(409)에서, 실행된 코드의 흐름은 CMOS NVRAM(96)내 중지 플래그가 세트되었는 지의 여부에 의존한다. 중지 플래그가 세트되어 전원이 마지막으로 제거되었을 때 시스템의 상태가 성공적으로 저장되었음을 나타내는 경우, 중지 플래그가 세트인 경우, 부트-업 루틴은 하드드라이브 제어기(86)와 하드 드라이브(31)의 테스트를 건너뛴다(skip). 반면에, CMOS NVRAM내 중지 플래그가 클리어되어 전원이 마지막으로 제거되었을 때 시스템의 상태가 저장되지 않았음을 나타내는 경우, 작업(410)에서, 부트-업 루틴은 고정 디스크 제어기(86)와 하드드라이브(31)의 완전한 테스트를 수행하는데, 이는 본 기술 분야에서 잘 알려져 있다.
다음 작업(412)에서, 플로피 드라이브 제어기(84)가 테스트되고 초기화된다.
이 때, 모든 장치들이 초기화되고 벡터는 알려진 위치를 가리켜, 모든 인터럽트 루틴은 예상대로 동작할 것이다. 따라서, 작업(414)에서, 부트-업 루틴은 BIOS 데이터 영역 및 벡터 테이블을 스냅숏(snapshot)하여, BIOS 데이터 영역 및 벡터 테이블의 복사를 세그먼트 D000H내 데이터 구조에 기록한다. 작업(274)에서, 이 BIOS 데이터 영역 및 벡터 테이블의 복사를 이용하여 컴퓨터 시스템(10)을 중지 루틴이 모든 인터럽트가 예상대로 동작하는 알려진 상태에 둔다.
작업(416)에서, 본 기술분야에서 잘 알려져 있는 바와 같이, BIOS 확장 BIOS가 스캔 인(scanned in)되고 초기화된다. 되고 초기화된다. BIOS 확장은 네트워크 어댑터들과 같은 주변 어댑터들에 의해 시스템에 부가된 BIOS 코드의 블록들이다. BIOS 확장은 전형적으로 ISA 버스(76)상의 세그먼트 C000H 및 D000H에 위치하고, 이러한 BIOS 확장을 식별하기 위한 연관된기호를 가진다. BIOS 확장이 검출되면, 길이가 체크되고 검사합이 계산되어 체크된다. 기호, 길이 및 검사합의 모두가 유효한 BIOS 확장이 존재함을 나타내는 경우, 프로그램 제어는 기호를 넘어선 3 바이트지난 위치에 위치한 인스트럭션으로 넘겨지고, BIOS 확장은 주변 어댑터의 초기화와 같은 소정 필요한 작업을 수행할 수 있다. 일단 확장이 실행이 종료되면, 제어는 다시 부트-업 루틴으로 넘어가고, BIOS 확장이 더 존재하는 지를 검색한다. 더 많은 BIOS확장들도 전술한 BIOS 확장처럼 처리된다. 더 이상의 BIOS 확장이 검출되지 않으면, 부트-업 루틴은 작업(417)으로 옮겨간다.
작업(417)에서, 부트-업 루틴은 중지 파일에 특별히 할당된 분할부(allocated partition)에 나타나는 하드 드라이브(31)에 대한 분할부를 검색한다. 분할부 테이블에서 PS/1식별자(FE )를 가지는 분할부가 발견되며, 이 분할부는 특정 시스템의 중지 파일을 수용하기에 충분히 큰 경우, 중지 파일을 위한 분할부로 확정된다. 결과적으로, 본 기술분야에 잘 알려져 있는 바와 같이, 중지 파일은 파일 할당 테이블(FAT)내에 할당되며, 중지 파일 기호는 파일의 첫 바이트에 기록되고, 파일의 헤드, 섹터, 실린더는 CMOS NVRAM(96)에 기록된다.
그 후, 실행 코드의 흐름은 작업(418)으로 분기하여, CMOS NVRAM(96)내에서 중지 플래그가 세트되었는지 여부에 의존한다. 중지 플래그가 클리어된 경우, 작업(420)에서, 부트-업 루틴은 제어를 PBOOT 루틴으로 넘긴다. PBOOT는 본 기술분야에 잘 알려져 있으며, 플로피 디스크 혹은 하드 드라이브(31)로부터의 커맨드 인터프리터(command interpreter) 및 운영체제(OS)를 로딩한다. 본 발명의 정상 부팅 루틴은 OS가 로딩될 때, 작업(417)에서 중지 파일에 대한 분할부가 발견되지 않는 경우, OS-특정 드라이버를 실행하여, FAT내에 연속섹터 파일을 할당하고, 중지 파일의 첫 바이트에 기호를 기록하며, 중지 파일의 시작헤드, 섹터, 실린더를 CMOS NVRAM(96)에 기록하므로써 다소 수정된다.
중지 파일이 할당되는 시점과 무관하게, FAT내 영역은 연속적인 섹터로, 중지와 재시작동안 각각 디스크로 신속한 기록과 디스크로부터의 신속한 판독이 가능해야한다.
다음, PBOOT는 CONFIG.SYS 파일내에 발견된 인스트럭션을 기초로하여 시스템을 구성한다. 최종적으로, PBOOT는 AUTOEXEC.BAT 파일에 실행 제어를 넘겨, 실행제어는 결국 운영 체제로 넘어간다. 중지 플래그가 COMS NVRAM내에서 클리어 되어 전원이 마지막으로 제고되었을 때 시스템의 상태가 저장되지 않았음을 나타내는 경우, RESUME.EXE가 무시되는데, 이는 텍스트 첨부 작업(421)에서 보다 상세히 설명된다.
작업(418)을 다시 설명하면, 중지 플래그가 CMOS NVRAM(96)내에서 세트되어, 전원이 마지막으로 제거되었을때 시스템의 상태가 저장되지 않았음을 나타내는 경우, CMOS NVRAM(96)내에서 재초기화 어댑터 플래그(Reinitialize Adapter Flag)가 세트되었는지 여부에 따라 작업(419)에서 분기한다. 재초기화 어댑터 플래그가 세트된 경우, 부트-업 루틴은 제어를 작업(421)의 PBOOT 루틴으로 넘긴다. 통상적인 PBOOT 루틴처럼, 본 발명의 PBOOT 루틴은 본 기술분야에서 잘 알려져 있는 바와 같이, 무엇보다도, 로드 드라이브(load drivers) 및 시스템 구성에 관계된 CONFIG.SYS 및 AUTOEXEC.BAT 파일의 커맨드에 따라 시스템을 구성한다.
CONFIG.SYS 및 AUTOEXEC.BAT 내 커맨드는 시스템내 어댑터 카드(adapter card)를 초기화할 수 있다. 이 응용에는 3가지 유형의 어댑터 카드가 존재한다: 유형 Ⅰ 어댑터는 초기화를 필요로 하지 않는다: 유형 Ⅱ 어댑터는 초기화를 필요로 하지는 않지만 CONFIG.SYS 및 AUTOEXEC.BAT 파일에 의해 로드된 구동기 혹은 BIOS 확장에 의해 알려진 작업 상태에 놓이게 된다.: 유형 Ⅲ 어댑터는 시스템상에서 코드 실행에 의해 수정된다. 유형 Ⅰ 및 유형Ⅱ 어댑터를 구비한 시스템은 중지와 복원(suspend and restor)이 가능하다: 그러나, 다수의 네트워킹 어댑터들(networking adaptoers)을 포함하는 유형Ⅲ 어댑터를 구비한 시스템은 에러 복구를 위한 루틴을 가지는 카드없이는 복원될 수 없다. 시스템은 에러를 복구할 수 있는 유형Ⅲ 카드를 중지할 수 있다.
바람직한 실시예에서 RESUME.EXE 파일은 AUTOEXEC.BAT 파일에 부가되어, PBOOT로부터 재시작 루틴으로 프로그램 제어를 전달하는 역할을 한다. 작업(420)에서 , PBOOT는 RESUME.EXE의 존재를 무시한다. : 그러나, 작업 (421)의 PBOOT는 RESUME.EXE를 실행하여, 유형 어댑터가 CONFIG.SYS 및 AUTOEXEC.BAT의 PBOOT에 의해 로드된 장치 구동기에 의한 초기화가 끝난후에, 제어를 재시작 루틴으로 넘긴다.
작업(419)를 다시 설명하면, 재초기화 어댑터 플래그가 CMOS(96)에서 클리어된 경우, 부트-업은 CONFIG.SYS 및 AUTOEXEC.BATM이 처리없이 실행 제어를 직접(422)의 재시작 루틴으로 넘긴다. 재시작 루틴은 중지 파일로부터 시스템 상태를 하드 드라이브에 복원하며, 이는 제12도를 참조한 설명에서 보다 상세히 기술될 것이다.
이제 제12도를 참조하면, 작업(450 내지 530)으로된 재시작 루틴(Resume Routine)이 상세히 도시되어 있다. 구성 프로세스동안, BIOS 데이터 영역 및 벡터 테이블은 아마도 미지의 상태로 수정된다: 그러므로, 기본 BIOS루틴은 예상한대로 동작할 수도 있고 그러하지 않을 수도 있다. 따라서, 작업(454)에서, 재시작 루틴은 판독/기록으로 세그먼트 D000H를 이네이블하며, 작업(456)에서 교환 BIOS 데이터 영역 및 벡터 테이블 루틴을 호출한다. 이 루틴은 작업(414)에서 세그먼트 D000H로 복사되었던 알려진 양호한 BIOS 데이터 영역 및 벡터 테이블을 현재 세그먼트 000H에서 활성인 수정된 BIOS 데이터 영역 및 벡터 테이블과 교환(swap)한다. 루틴이 종료되었을 때, 알려진 BIOS 데이터 영역 및 벡터 테이블이 세그먼트 D000H에서 활성이 되며, BIOS 루틴은 예상한 대로 동작할 것이다.
그 다음 작업(458)에서, 재시작 루틴은 하드 드라이브와 키보드를 지원하는 것들을 제외하고는 모든 인터럽트를 디스에이블한다. 그다음 작업(460)에서, 재시작 루틴은 하드 드라이브상의 중지 파일을 위치시키며, 중지 파일의 파일 크기 및 전술한 바와 같이 멀티-바이트 식별자인 기호를 판독한다. 작업(462)에서, 실행 코드의 흐름은 중지 파일이 올바른 크기와 기호를 가졌는지의 여부에 따라 분기한다. 중지 파일이 올바른 기호를 가지지 않는 경우, 작업(464)으로 분기하여 CMOS 메모리(96)내 중지 플래그를 클리어 한후, 작업(466)에서 프로그램 제어는 리세트 벡터에 의해 지시된 장소재의 코드로 넘어가고, 시스템이 중지되지 않았던 것처럼 이 시스템을 부팅시킨다. 반면, 중지 파일내 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)에서, 시스템을 재부팅 시킨다. 그러나, 재부팅중, 제 2PAL U2는 스위치 상태 012 에 놓이며, 따라서, X00H를 전력관리 포트에 기록하는 것은 전원(17)의 시스템 전력 공급을 그만두게 할 수 없다. 따라서, Ctrl-Alt-Del이 눌려지고 재시작 루틴이 실행중일 때, 시스템은 정상적으로 재부팅된다.
다음 작업(480,482 및 484)에서 8277 디스켓 제어기(84), DMA 장치(71) 및 UART(94)는 세스컨트 D000H 데이터 구조의 값을 그들 제각기의 레지스터에 기록하므로써 복원된다.
그후 작업(486 내지 500)에서, 시스템 메모리는 작업(304 내지 318)을 참조한 설명에서 기술된 루틴과 유사한 트윈-버퍼(twin buffer) 루틴을 이용하여 중지 파일로부터 복원된다. 이 트윈-버퍼 시스템은 중지 파일로부터 압축된 데이터를 판독하여, 이 판독된 데이터를 세그먼트 C000H에 기록한 후, 그것을 다시 압축 해제하여(decompress) 시스템 메모리에 기록한다. 두 루틴은 시분할로 작동한다: 한 루틴은 중지 파일로부터 데이터를 판독하고, 이 판독된 세그먼트를 C000H에 기록하며, 다른 한 루틴은 데이터를 압축해제하여, 이 데이터를 시스템 메모리에 기록한다. 후자는 포어그라운드에서 실행되며, 전자는 백그라운드에서 실행되는 인더럽트-구동 루틴이다. 분명히 단지 하나의 CPU(40)만이 존재하므로, 단지 하나의 루틴만이 주어진 시간내 실행될 수 있다.: 그러나, 전자의 루틴은 인터럽트-구동 루틴이므로, 중지 파일로 부터의 데이터 전송속도를 최적화하기 위한 필요에 따라 후자 루틴의 실행을 인더럽트할 수 있다. 각각의 두 버퍼길이는 전송 시간을 최적화 한다고 사료되는 8K 바이트 길이이다.
이 프로세스는 작업(486)에서 시작하여, 중지 파일로부터 판독하고, 이 판독된 데이터를 8K 버퍼의 시작부분을 채우기에 충분한 데이터 세그먼트 C000H에 기록한다. 이때, 버퍼- 판독 루틴(Read from Buffer Routine)(489)으로 부터의 판독은 백그라운드에서 실행되며 작업(490-492)으로 구성되는 인터럽트-구동 루틴이다. 압축해제 루틴(Decompression Routine)(493)은 작업(494-498)으로 구성되며 포어그라운드 루틴이다. 먼저 작업(490)에서 버퍼-판독 루틴(489)은 중지 파일의 다음8K를 판독하기 시작하여, 이 판독된 데이터를 이제 현재 버퍼(current buffer)인 다른 버퍼에 기록하기 시작한다. 버퍼 루틴으로 부터의 판독이 중지 파일의 다음 8K를 판독하여 현행 버퍼에 기록하는 동안, 작업(494)에서, 압축해제 루틴(493)은 작업(486)에서 채워진 버퍼를 판독한 후, 압축된 데이터를 압축해제하여 시스템 메모리에 기록한다. 일단, 압축해제 루틴(493)이 버퍼내 모든 데이타를 압축해제한 경우, 다음 단계인 (496)에서는 전체 시스템 메모리가 압축해제되었는지를 판단한다.
IDE제어기(86)는 하드 드라이브(31)로부터 매우 신속하게 데이터를 판독할 수 없다. 따라서, 압축 해제 루틴(493)은 항상 버퍼-판독 루틴이 하드 드라이브(31)로부터 현행 버퍼로 데이터를 판독하는 것을 종료하기 전에 하드 드라이브(31)에 기록되고 있지 않은 8K 버퍼의 압축 해제를 종료할 것이다. 따라서, 압축해제 루틴(493)은 버퍼-판독 루틴(489)이 하드 드라이브(31)로부터 데이터 판독을 종료할 때까지 기다려야만 한다. 압축해제 루틴(493)이 전체 시스템 메모리의 압축 및 기록을 종료하지 않은 경우, 작업(498)에서, 압축 해제 루틴(493)은 버퍼- 판독 루틴(489)을 기다려야만 한다. 압축해제 루틴(493) 및 버퍼- 판독 루틴(489)은 플래그 세트(a set of flags)를 통하여 통신한다. 버퍼- 판독 루틴(489)이 중지 파일로부터 현행 버퍼로 데이타 판독을 끝마칠 때, 작업(490)에서, 루틴(489)은 버퍼 플래그를 스위칭하여 중지 파일로부터 판독된 버퍼내 데이터의 압축해제를 시작할 수 있음을 압축해제 루틴(493)에 표시한다. 그 후, (492)에서, 버퍼-판독 루틴(489)은 중지 파일로부터 판독할 8K 블록이 남아있는지를 판단한다. 판독할 블록이 남아 있지 않는 경우, 작업(502)에서, 버퍼- 판독 루틴은 중지 파일로부터 남아있는 데이터를 판독하여 이 판독된 데이터를 현재 버퍼에 기록한다. 그 후 작업(500)에서, 버퍼-판독 루틴은 백그라운드에서 실행을 멈추고, 사실상 압축해제 루틴의 마지막 메모리의 압축해제를 끝마치기를 기다린다.
이 동안, 압축해제 루틴(493)은 버퍼 플래그를 조사하여 버퍼가 시스템 메모리에 압축해제될 준비가 되었는지를 판단한다. 즉, 압축해제 루틴은 버퍼-판독 루틴이 현재 버퍼에 대한 작업을 종료할 때까지 기다리며, 이때 압축해제 루프는 작업(494)에서 계속된다.
일단 압축해제 루틴(493)이 모든 시스템 메모리에 대한 압축해제를 종료하면, 어떤 백그라운드 루틴도 실행되지 않으며, 주 프로그램은 작업(504)에서 계속된다.
다음 작업(504,506)에서, 비디오 제어기(56) 및 IDE 제어기(86)는 D000H 데이터 구조로 부터의 값을 장치 각각의 레지스터들에 기록하므로써 복원된다. 그후 작업(508)에서 CPU캐시(41) 및 시스템 캐시(60)는 적절한 값을 CPU(40) 및 캐시 제어기(62)에 기록하여 이네이블된다. 다음 작업(510-514)에서, 재시작 루틴은 세그먼트 D000H 데이터 구조의 값을 각각의 장치내 레지스터들에 기록하므로써 타이머 제어기(102), 8042 키보드 인터페이스 마이크로 프로세서(104) 및 8259 인터럽트 제어기(92)의 상태를 복원한다.
다음 작업(516)에서 재시작 루틴은 교환 BIOS 데이터 영역 및 벡터 테이블 루틴(Swap BIOS Data Area 및 Vector Table Routine)을 호출한다. 이 루틴이 호출되기 전에, 알려진 BIOS 데이터 영역 및 벡터 테이블은 세그먼트 0000H에서 활성이며, 중지 파일로부터 판독된 BIOS 데이터 영역 및 벡터 테이블은 세그먼트 D000H에서 비활성적이다. 교환후, 알려진 BIOS 데이터 영역 및 벡터 테이블은 세그먼트 D000H에서 비활성이며, 중지 루틴에 의해 저장된 BIOS 데이터 영역 및 벡터 테이블은 세그먼트 0000H에서 활성이다.
마지막으로, 작업(518)에서, 재시작 루틴은 복원 CPU루틴으로 점프하여, CPU(40)는 중지되기전 상태로 복원된다. 복원 CPU루틴(Restore CPU Routine)은 제14도를 참조하여 보다 상세히 기술될 것이다. 결국 복원 CPU루틴은 실행 제어를 다시 APM으로 넘긴다.
최종적으로, CPU(40)는 복귀 인스트럭션을 실행하여, 시스템이 APM으로 복귀토록 한다. 지금 시스템은 시스템이 전혀 중지되지 않았던것 처럼 코드 실행을 계속한다. 실제로, 시스템은 중지/재시작 절차에 의해 영향을 받지 않는다.
이제 제13도를 참조하면, 저장 CPU 상태 루틴(Save CPU State Routine)이 도시되어 있다. 작업(600)에서, 중지 루틴은 저장 CPU 상태 루틴으로 점프한다. 유의할 것은, APM은 판독/기록처럼 이러한 루틴을 실행하여 세그먼트 E000H 및 F000H를 이네이블한다는 것이다. 부가하여, 작업 (602)에서 EFLAGS 및 8개의 범용 레지스터들(general purpose registers)이 APM에 의해 저장된다. 작업(604)에서, 저장 CPU 상태 루틴은 먼저 어떤 DMA 동작이 끝나기를 기다리고, 마우스(13) 데이터 패킷과 동기화(synchronize)시켜, 이 루틴이 마우스 패킷과 전송간에 실행되도록 한다. 다음 단계들은 DMA가 종료되도록 하고, 마우스 패킷에 동기화시킨다: (1) 인터럽트를 이네이블하고, (2) 어떤 DMA가 종료되는 동안 7밀리초(milliseconds)를 기다리고, (3) 인터럽트를 디스에이블 시키고,(4) 마우스 패킷 경계(mouse packet boundary)동안 5 밀리초를 기다리고, (5) 인터럽트를 이네이블시키고, (6) 마우스 패킷이 도착하는 동안 5 밀리초를 더 기다리고, (7) 인터럽트를 디스에이블 시킨다. 이들 단계후에, 코드는 마우스 패킷들간에 안전하게 실행된다.
다음 작업(606)에서, 어드레스선(20)(I/O포트 92H)의 상태는 스택(stack)에 푸시(PUSH)되고, 작업(608)에서는 수치 코프로세서(arithmetic coprocessor)(44)의 상태가 스택에 푸시된다. 그후 작업(610)에서, CPU가 32-비트인지 혹은16-비트 모드로 실행중인지를 각각 나타내기 위해 플래그가 세트된다.
실행 코드의 흐름은 작업(612)으로 진행하여, CPU(40)가 보호모드(Protected Mode)에서 실행중인지 혹은 아닌지의 여부에 따라 분기한다. CPU (40)가 보호모드에서 실행중인 경우, 실모드(Real Mode)로 실행중이여야 하며, 레지스터들은 매우 간단한 방식(straightforward manner)으로 저장될 수 있다. 먼저 작업(614)에서, 기계 상태 단어(machine status word) 및 CR3내 값들은 세그먼트 E000H데이타 구종에 기록된다. 또한 작업(614)에서, TR 및 LDTR이 실모드에서 0이므로, TR 및 LDTR에 대응하는 영역인 세그먼트 E000H 데이터 구조에 0이 기록된다.
그 다음, 코드는 작업(616)에서 공통 코드 경로(common code path)와 병합(merge)하여, GDTR LDTR에 저장된 값들은 세그먼트 E000H 데이터 구조에 기록된다. 다음, 실행 코드의 흐름은 작업(618)으로 진행하여, CPU(40)가 가상 8086 모드에서 실행되는지 아니지의 여부에 따라 분기한다. CPU(40)가 가상 8086 모드에서 실행중이 아닌 경우, 코드는 공통 경로에 따라 작업(620)으로 진행하여, 디버그 레지스더들(DR7, DR6, DR3, DR2, DR1 및 DR0)이 스택에 푸시된다. 이들 레지스터는 디버거 혹은 다른 루틴에 의해 사용된다. 그 다음 작업(622)에서 DS, ES, FS 및 GS가 스택에 푸시된다. 그다음, CS, SS 및 ESP의 값들은 세그먼트 E000H 데이터 구조에 기록된다.
이 시점에서, 세그먼트 E000H 데이터 구조에 기록되어야 할 모든 값들이 기록되었고, 따라서, 섀도우 RAM 세그먼트 E000H 및 F000H는 판독-전용으로 변경될 수 있다. 다음 작업(628)에서 CPU 캐시(41)는 라이트-백(Write-Back)과 무효화 캐시 명령(Invalidate Cache command)을 사용하여 플러시(flush) 된다.
최종적으로, 작업(630)에서는 독특한 셧-다운 플래그(shutdown Flag)가 CMOS 비휘발성 메모리(96)에서 세트된다. 마지막으로 저장 CPU 상태 루틴은 사실상 중지 화일로 '복귀(Return)한다. 복귀는 사실상 RESET에 이은 코드 내 분기이다. CPU(40)는 리세트 벡터에 의해 지시된 코드로 점핑하므로써 리세트된다. CPU(40)를 리세트 벡터에 의해 지시된 코드로 점핑하므로써 리세트된다. CPU(40)를 리세트하는 것은 CPU를 실모드에 들어가도록 만드는 것이며, 모든 장치 및 메모리 영역은 보호 폴트(protection fault) 발생의 염려 없이 액세스 될 수 있다. 이 시점후에, CPU상태가 저장되고, 중지 루틴은 시스템의 나머지 상태를 저장해야만 한다. 리세트 백터에 의해 지시된 코드내에서, 프로그램 제어는 셧 다운 플래그(Shutdown Flag)가 CMOS(96)에서 세트되었는지의 여부에 따라 분기한다. 셧 다운플래그가 크리어된 경우, 시스템은 정상적으로 부팅한다. 반면에, 셧-다운 플래그가 세트된 경우, 코드는 나머지 중지 루틴으로 분기한다: 즉 실행 제어는 중지 루틴내에서 제10도의 작업(253)으로 점프하여, 시스템(10)을 중지를 종료한다. 따라서, (630)에서, 저장 CPU 상태 루틴은 중지 루틴으로 효과적으로 복귀한다.
작업(612)를 다시 설명하면, CPU가 보호모드에 있는 경우, 코드는 작업(634)에서, CPU가 가상 8086 모드인지 혹은 아닌지의 여부에 따라 분기한다. CPU가 가상 8086 모드가 아닌 경우, 코드는 다시 작업(636)에서, 현재 특권 레벨(current priviledge level)이 0 인지 혹은 아닌지의 여부에 따라 분기한다. 현재 특권이 0 이 아닌경우, 적당한 특권이 없는 루틴이 저장 CPU 상태 루틴을 실행중이며, (작업(652)에서 시작하는) 치명적 중지 에러 루틴(Fatal Suspend Error Routine)이 호출된다. 치명적 중지 에러 루틴은 후술될 것이다. 프로그램 제어가 치명적 중지 에러 루틴으로부터 반환되는 경우, CPU는 저장 CPU 상태 루틴이 호출되기 전의 상태로 복귀되어야 하며, 따라서 프로그램 실행은 제14도의 작업(794)으로 분기하여, CPU의 부분 복원(partial restore)을 수행한다. 단지 부분 복원만이 필요한데 그 이유는 CPU의 매우 작은 수정이다.
작업(636)을 다시 설명하면, 호출 코드가 적당한 특권 레벨을 가지는 경우, 작업(642)에서 저장이 계속되어 CR0, CR3, TR 및 LDTR의 값들이 세그먼트 E000H 데이터 구조에 저장된다. 그후, 전술한 바와 같이, 작업 (616)에서 이 코드 경로는 공통 코드 경로와 병합하여 GDTR 및 IDTR의 값들이 E000H 데이터 구조에 저장된다. 여기서부터, 코드는 전술한 (618)내지 (632)의 경로를 따르며, 그 결과 나머지 중지 루틴 코드로 복귀(RESET + 분기)한다.
작업(634)을 다시 설명하면, CPU(40)가 가상 8086 모드에 있는 경우, 실행은 작업(644)으로 계속되어, 기계 상태 단어(CR0의 하위 16비트)의 값이 E000H 데이터 구조에 저장되고, 세그먼트 E000H 데이터 구조의 플래그가 세트되어 CPU가 가상 8086 모드라는 것을 나타낸다. 그다음, 이 코드는 전송(646과 648)을 통해 작업(616)에서 공통 코드와 병합한다. 작업(618)에서는 CPU가 가상 8086 모드인 경우, 제어는 작업(650)으로 분기하여, DE, ES, FS 및 GS의 값들이 세그먼트 E000H 데이터 구조에 저장된다. 이 코드는 작업(624)에서 공통 코드와 재병합한다. 여기서부터 코드는 전술한 경로(624 내지 632)를 따르고, 그 결과 나머지 중지 루틴 코드로복귀(RESET + 분기) 한다.
치명적 중지 에러 루틴은 작업(652 내지 664)으로 구성되며, 부적절한 특권 레벨을 가진 코드가 CPU의 상태를 저장하고자 하는 경우 작업(638)에서 호출된다. 먼저 작업(654)에서, 07H와 05H를 전력 관리 포트에 기록하므로써 호출된다. 먼저 작업(654)세어 07H 와 05H를 전력 관리 포트에 기록하므로써 고장안전 타이머가 리세트 되는데, 이는 제7도를 참조한 설명에 기술되어 있다. 그 다음 작업(656)세어, 스피커(speaker)는 1/6 초 간격으로 0.25 초동안 886Hz에서 3번 발신음을 낸다. 3번의 발신음은 시도한 중지가 일어나지 않았음을 사용자에게 경고한다. 발신음 후에 작업(658)에서, 고장안전 타이머가 다시 리세트되어, 고장안전 타이머가 종료되어 전원(17)을 셧-다운 일정한 15내지 18초를 사용자에게 허용한다.
다음 작업(660 내지 662)에서, 치명적 중지 에러 루틴은 사용자가 스위치(21)를 눌러 중지를 포기하기를 원하는지를 알기 위해 반복적으로 조사된다. 제7도를 참조한 설명에 기술된 바와 같이 전력 관리 포트의 판독결과 FFH가 나타나기를 기다리므로써 이 스위치의 폐쇄를 조사한다. 사용자가 버튼(21)을 누르는 경우, 실행제어는 전술한 작업(640)으로 복귀한다. 이와 반대로, 15 내지 18 초내에 사용자가 버튼(21)을 누르지 않는 경우, 고장안전 타이머가 종료되고 전원은 턴 오프되어, 명백히 모든 코드 실행은 끝날 것이다.
이제 제14도를 참조하면, 작업(700)으로부터 시작하는 복원 CPU루틴(Restore CPU Routine)이 도시되어 있다. 이 루틴은 하드웨어의 리세트후 재시작 루틴에 의해 호출되며, 메모리는 중지되지전의 그들의 상태로 재복구된다.
먼저, 세그먼트 E000H 및 F000H가 아직 판독/기록 되지 않은 경우, 작업(702)에서 이들 세그먼트는 판독/기록되어야 한다.
다음 실행 코드는 작업(704)으로 진행하면, 중지 되었을 때 CPU(40)가 가상 9086모드에서 실행중이였는지의 여부에 따라 분기한다. 시스템 (10)이 중지 되었을 때 CPU (40)가 가상 8086 모드로 실행중인 경우, 작업(706 내지 728)으로 진행되고, 이는 가상 8086 CPU 복원(Virtual 8086 CPU restore)에서 유일하다. 그후, 코드는 작업(730 내지 748)의 공통 경로와 병합된다.
CPU 상태가 저장되었을시 CPU가 가상 8086 모드인 경우, CR3, LDTR 및 TR은 그들의 값을 E000H 데이터 구조로 저장하기 위해 저장 CPU 상태 루틴에 의해 액세스될 수 없다. 따라서, CR3, LDTR 및 TR은 작업(706,708 및 710)에서 각각 추정되어야만 한다. 일반적으로 그들은 CR3, LDTR 및 TR 포인트 구조에 대한 시스템 RAM(53)을 통해 검색되며 추정된다. 예를 들면, GDT내 LDT 엔트리를 발견으로 LDTR이 결정될 수 있다.
CR3는 작업(706)에서 추정된다 CR3는 페이지 디렉토리 베이스 레지스터(Page Directory Base Register : PDTR)를 가지며, 이 레지스터는 디렉토리의 페이지 프레임 어드레스, 페이지-레벨 캐시 디스에이블(Page-Level Cache Disable : PDC) 비트 및 (PWT)비트를 통한 페이지-레벨 라이트 쓰루(PWT) 비트를 가진다. PDBR의 추정은 페이지 디렉토리가 시스템 RAM(53)내 4K 경계(boundary)에서 시작해야 한다는 것과, 저장 CPU 상태 루틴에 의해 세그먼트E000H 데이터 구조에 저장된 IDTR 및 GDTR의 값과, BIOS 코드가 어드레스 공간 0E0000-0F0000에서부터 실행중이라는 가정하에 수행된다. BIOS 코드가 섀도우 RAM내로 성공적으로 섀도우되었으므로 이러한 가정은 타당하다. 운영체제가 BIOS코드를 다른 영역으로 복사한 경우에는 CR3의 추정은 실패할 수 있다.
전술한 지식 및 가정과 함께, BIOS 코드 세그먼트에 대응하는 페이지 변환 테이블(page translation gable)의 존재 여부를 알기 위해 물리적 메모리의(physical memory) 4K 페이지마다 테스트한다. 즉, 페이지내 0380H의 오프셋(OFFSET)은 값 000E0XXX, 000E1XXX, 000E2XXX,... 000FFXXX를 포함한다. 일단 페이지의 위치가 파악되면, 이 위치가 파악된 페이지 디렉토리의 물리적 어드레스에 대응하는 첫 엔트리를 가지는 페이지 디렉토리에 대해 시스템 RAM(53)이 검색된다. 페이지 디렉토리의 물리적 어드레스는 양호한 PDTR 추정값이다.
그후, 가정 PDTR(hypothetical PDTR)은 PDTR이 GDTR 및 LDTR의 어드레스를 정확하게 변환한다고 보장하므로써 검증(verify)된다. 즉, PDTR은 GDTR의 선형 어드레스(linear address)를 변환하는데 사용되고, GDT의 첫 엔트리는 널(null)의 되는지 확인된다(GDT의 첫 8 바이트는 모든 CPU 모드내에서 항상 00H이다.) 그후, 반환된 물리적 어드레스가 물리적메모리의 범위내에 드는지 확인된다. 선형적-물리적 변환을 성취하기 위해, CPU의 변환 방법을 혼합한 서브루틴이 사용된다; 변환된 어드레스는 ESI내에 반환되고, 물리적 페이지가 물리적 메모리에 존재하는 경우 캐리 플래그 CF는 클리어 된다. 이 변한 루틴을 사용하여, GDT의 첫 바이트가 메모리(53)에서 판독된다. GDT의 첫엔트리가 널(null)인 경우, 가정 PDTR은 제 1 테스트를 통과하고, 다시 한번 테스트된다. 그 후, PDTR은 변환 루틴을 사용하여 IDT를 발견하기 위해 IDTR을 변환한다. 그다음, 반환된 물리적 어드레스는 물리적 메모리의 범위내에 드는지 검증된다. IDT의 첫 위치가 물리적 메모리내에 존재하는 경우, PDTR은 제 2 테스트를 통과한다.
가정 PDTR이 GDTR 및 IDTR로 올바르게 변환되는 경우, 그 값은 PDTR로 추정되어(presumed) 세그먼트 E000H 데이터 구조내 CR3 영역에 기록된다. 반면에, 가정 CR3가 하나의 테스트에서 실패하는 경우, 루틴은 다시 시작되며 유효한 CR3로 이끌지 모를 또다른 BIOS 코드 세그먼트 페이지 변환 테이블에 대하여 시스템 메모리를 검색한다.
PCD 및 PWT는 정상 플래너 동작동안 OOH에서 고정된 것으로 항상 추정된다. 이들 값은 0 으로 세트되며 CR3 영역의 PDBR과 함께 세그먼트 EOOOH 데이터 구조내에 기록된다.
일단 CR3가 추정되면, 작업(708)에서 LDTR이 추정된다. LDT가 GDT내 어딘가에 있음을알고 LDT가 메모리내에 있다는 것을 아는 경우, LDTR은 CR3가 추정되면 추정이 가능하다. LDTR을 추정하기 위해, GDT는 존재하는 것으로 표시된 LDT를 검색한다. (작업(706)을 참조한 설명에서 기술된 변환 루틴을 사용하여 테스트되는) 물리적 메모리에 존재하고 존재하는 것으로 표시된 첫 LDT는 LDTR이 가리키는 테이블이라고 가정된다. 이 테이블의 시작부의 물리적 어드레스는 세그먼트 EOOOH 데이터 구조인 LDTR 영역에 저장된다.
비록 OS/2 하에서, 하나이상의 LDT가 존재하는 것으로 표시될 수 있고 물리적 메모리에 존재할 수 있지만, 전술한 LDTR 추정 방법은 충분히 유용하다고 믿어진다. EMM386은 공통 가상 8086 모드 루틴(common Virtual 8086 Mode routine)이며, 따라서, 문제들을 일으키는 것 처럼 보일 수 있다; 그러나, EMM386은 단지 하나의 CR3와 하나의 LDTR만을 가지므로, EMM86의 CR3 및 LDTR은 추정이 용이하다.
일단 CR3 및 LDTR이 추정되면, 작업(710)에서 TR이 추정된다. 필연적으로 GDT 및 LDT내 각 작업 셀렉터 엔트리(task selecter entry)는 사용중 비트가 세트(busy bit set)된 작업 상태 셀렉터에 대해 검색된다. 사용중 80286 작업상태 셀렉터인지 혹은 사용중 80486 작업 상태 셀렉터인지를 알기 위해 각 엔트리의 유형 필드(type field)가 테스트 된다. 사용중 286 TSS 혹은 사용중 486 TSS를 가지는 첫 엔트리는 TR이 가리키는 어드레스로 추정된다. 사용중 286 혹은 486 TSS와 함께 엔트리의 물리적 주소가 세그먼트 EOOOH 데이터 구조내 TR 영역에 저장된다. 어떠한 엔트리도 TKDYDWND 286 혹은 486 TSS를 가지지 않는 경우, 0이 세그먼트 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)에서, 세그먼트 E000H 데이터 구조에 저장된 값과 함께 IDTR, GDTR, LDTR 및 TR이 로드된다.
마지막으로 작업(724 내지 726)에서, 세그먼트 E000H 데이터 구조의 GS, FS, DS, ES, SS, ESP, (VM 비트를 세팅한 후) EFLAGS 및 CS에 대응하는 값들을 스택상에 푸싱(pushing)하므로써, 가상 8086 인터럽트 스택을 생성한다. 또한, 작업(726)에서, 작업(730)의 코드에 대응하는 반환 어드레스(return address)가 스택에 푸시된다. 마지막으로, IRETD 명령이 CPU(40)를 가상 8086 모드로 다시 두고, 작업(730)에 대응하는 코드로 실행을 전송하기 위해 실행된다.
작업(730)은 제14도의 다양한 경로의 각각 사용되는 공통 경로를 시작한다. 작업(730)에서, 코프로세서(44)는 세그먼트 E000H데이타 구조에 저장된 값으로부터 복원된다. 다음 작업(732)에서는, 어드레스선(20)(I.O 포트 92H)의 상태가 스택으로부터 팝(pop) 된다. 그다음, 작업(734)에서, 섀도우 RAM세그먼트 C000H가 다시 판독-전용이 된다. 작업(736)에서, APM은 01H를 전력 관리 포트에 기록하므로써 하드웨어에 접속되는데, 이는 제7도를 참조한 설명에서 기술하였다. 그다음 작업(738)에서, 섀도우 RAM 세그먼트 E000H 및 F000H가 다시 판독-전용으로 된다. 마지막으로 작업(740)에서는 복원 CPU상태 루틴은 정상 재시작이 일어났음을 나타내는 플래그를 세트한다. 작업(742, 744 및 746)은 복원 CPU상태 루틴에 의해 실행되지 않으며, 중지 이벤트에 의해 인터럽트되었던 코드로 복귀하기에 앞서 소정의 시간에, 8개의 범용 레지스터들이 스택으로부터 팝 오프(pop off)되고, (코드가 인터럽트 되었을시 마스크가능 인터럽트들이 이네이블되는 경우) 마스크가능 인터럽트(maskble interrupt)가 이네이블되고 플래그가 스택으로부터 팝 오프되는 것을 나타내기 위해 사용된다. 마지막으로, 복원 CPU상태 루틴은 감시 루틴(Supervisor Routine)으로 복귀하여, 제어를 다시 APM 으로 반환하고 모든 구 시스템값(stale system values)들을 갱신하고(update) 제어를 다시 인터럽트되었던 코드로 반환한다. 작업(704)을 다시 참조, 인터럽트되었을시 CPU(40)가 가상 8086 모드에 있지 않은 경우, 코드는 경로(750 내지 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)에서는 이 새로운 페이지 디렉토리 테이블의 첫 엔트리는 0C1000H를 가리키도록 수정된다. 네 번째, 작업(762)에서는 새로운 페이지 변환 테이블이 0C1000H에서 생성되어, 어드레스 0E0000 내지 OFFFFF가 제공되고 이 어드레스 범위내에서 선형 어드레스들은 물리적 어드레스들과 동일하다.
다음 작업(766)에서, 섀도우 RAM 세그먼트 EOOOH 및 FOOOH는 판독/기록된다. 그 다음 작업(770)에서, CPU(40)가 중지되었을 때 16-비트 코드를 실행중이였던 경우, 16-비트 모드과 16-비트 코드 경로를 지시하는 오프셋(offset)이 세그컨트 X000H 데이터 구조에 저장된다. 반면에, CPU(40)가 16-비트 모드가 아니였던 경우, 작업(772)에서, 이 CPU(40)는 32-비트 모드이며, 16-비트 오프셋 대신에 32-비트코드 경로를 지시하는 오프셋이 세그먼트 E000H 데이터 구조에 저장된다. 작업(770-772)은 단지 평행 경로들(parallel paths)중의 어느 하나로 오프셋을 설정한다. 이 경로중의 하나(오프셋에 대응하는 하나)는 후술할 작업(782)에서 시작된다.
다음, 작업(774)에서, 세그먼트 E000H 데이터 구조의 CR3의 값이 EDX로 로드되고, 세그먼트 E000H 데이터 구조의 SS값이 CX로 로드되고, 세그먼트 E000H 데이터 구조의 TR값이 ESI의 상위 절반(upper half of ESI)으로 로드되고, 그리고 세그먼트 E0000H 데이터 구조의 LDTR값이 ESI(SI)의 하위절반(lower half of ESI(SI))으로 로드된다. 이들 값은 후술할 그들의 적절한 위치로 시프트(shift) 된다. 그후, 작업(776)에서는 GDTR, LDTR 및 CRO가 세그먼트 X000H데이타 구조의 그들값과 함께 로드된다. 작업(776)에서는, LDTR 은 SI에 저장된 LDTR값과 함께 로드된다. 그다음, 코드는 작업(770 혹은 772)에 놓인 오프셋으로 멀리 점프한다. 먼 점프(far jump)는 연산 코드(opcode)를 직접 소오스 코드(source code)에 두고, 작업(770 혹은 772)으로 부터의 오프셋을 사용하여 코드화한다. 그 다음 작업(782)에서, 코드는 16-비트 연산 코드 경로 혹은 32-비트 연산 코드 경로중의 하나로 계속 진행된다.
작업(784)에서, 다음(next) CR3는 EDX에 저장된 CR3값과 함께 로드되고, SS값은 CX에 저장된 SS값과 함께 로드되고, 그리고, ESP는 EBP에 저장된 ESP값과 함께 로드된다. 그 다음 작업(786)에서, GS, FS, ES 및 DS가 스택에서 팝 오프 된다. 작업(788)에서, 인터럽트된 CPU(40)가 보호모드에서 코드를 실행중인 경우, 작업(790)에서 TR 은 ESI의 상위 절반에 저장된 TR값과 함께 로드된다. 어느 경우에나, 코드는 (792)로 진행되어, 디버그 레지스터들(debug registers) (DR0, DR1, DR2, DR3, DR6 및 DR7)이 스택으로부터 팝 오프 된다. 이 시점에서, 전술한 바와 같이, 이 코드 경로는 작업(730 내지 748)으로 구성된 공통 코드 경로와 병합한다. 작업(794)에서, 에러-복구 루틴(error-recovery routine)이 또한 저장 CPU 상태 루틴의 작업(640)으로 부터의 공통 코드 경로와 결합한다.
이제 제15도를 참조하면, 작업 (800)에서 시작하는 저장8259 상태 루틴의 흐름도가 도시되어 있다. 8359들의 상태의 저장은 작업(802)에서는 실시간 클록(98)에서 사용되는 주기적 인터럽트 값을 저장하고, 작업(804)에서는 모든 다른 판독가능한 레지스터들을 세그먼트 E000H 데이터 구조에 저장하면서 진행된다. 본 기술분야에 잘 알려져 있는 바와 같이 컴퓨터 시스템(10)의 구조는 어떤 8259 판독-전용 레지스터들이 고정된 값을 가지도록 요구한다. 이들 값은 알려져 있으므로 결정할 필요가 없다. 얻기 어려운 8259값들은 8259 베이스 어드레스(8259 baed address), 8259 슬레이브 어드레스(8259 slave address)이며, 두 8259가 보류(pending)를 보여주기 위해 세트되거나 혹은 인-서비스(in-service)가 OS에 의해 인터럽트된다.
작업(808)에서, 전술한 4가지 인터럽트 벡터 테이블은 물리적 메모리의 기저(bottom) 1k를 세그먼트 C000H데이타 구조에 복사하므로써 저장된다. 그 다음 작업(810)에서, 세그먼트 C800H에서 시작하는 256 더미 인터럽트 서비스 루틴들(256 dummy interrupt service routines)을 지시하는 256개의 유일한 더미 벡터를 로딩하므로써, 새로운더미(dummy)인터럽트 벡터 테이블은 물리적 메모리의 기저 1k로 로드 된다. 작업(812)에서, 256 더미 인터럽트 서비스 루틴들은 세그먼트 C800H에서 생성된다. 그 다음, 키보드(12) 및 마우스(13)인터럽트는 작업(814)에서 디스에이블된다. 작업(816)에서, 모든 무응답(unacknowledged)키보드(12) 및 마우스(13)인터럽트들이 응답(acknowledge)된다.
그 다음, 작업(818)에서 키보드 인터럽트가 발생하고, 작업(820)에서 이 인터럽트는 베이스 8259가 보류 혹은 인-서비스로 세트되었는 지를 판단하기 위해 테스트된다. 그다음, 이 값은 세그먼트E000H 데이터 구조에 기록된다. 작업(822)에서, 코드는 인터럽트가 제공되기를 기다린다. 작업(824)에서는 더비 서비스 루틴들중의 하나를 호출하여 인터럽트를 제공한다. 더미 서비스 루틴은 8259 베이스 어드레스를 결정하고, 8259가 보류 혹은 인-서비스 모드였는지를 판단한다.: 베이스 어드레스와 모드는 세그먼트 E000H 데이터 구조에 저장된다. 작업(826, 828, 830 및 832)에서, 유사한 절차가 슬레이브 8259에 대해 수행된다. 작업(834)에서, 인터럽트 벡터 테이블이 C000H 데이터 구조의 값을 다시 물리적 메모리의 하위 1k로 복사하여 복원된다. 그 후, 작업(836)에서 세그먼트 C000H는 다시 판독-전용이 되고, 작업(838)에서 모든 인터럽트들이 마스킹(masking)된후, 작업(840)에서는 호출 프로그램(calling program)으로 복귀하기 위한 준비를 한다. 본 발명은 실시예를 설명함으로써 개시되었으며, 이들 실시예가 상당히 상세히 설명되었으나, 출원인은 첨부된 특허 청구범위를 본 발명의 상세한 설명으로 제한하려는 의도는 없다. 당업자라면 부가적인 장점 및 변경을 명백히 인지 할 것이다. 예를 들면, 전술한 바와 같이, 컴퓨터 시스템(10)에 전화링 감지 회로를 부가하여, 접속된 전화선이 울릴 때 중지 상태(154)에서 정규 동작 상태(150)로 변경시킬 수 있다. 그러므로, 본 발명은 특정한 상세한 사항들, 대표적인 장치 및 방법, 그리고, 도시되고 설명된 예들로 한정되지 않는다. 따라서, 출원인의 일반적인 발명 개념의 사상 및 범주를 벗어나지 않고서도 이러한 상세한 설명의 범위를 넘을 수가 있다.
Claims (36)
- 코드(code)가 컴퓨터 시스템에 의해 정상적으로 실행되는 정규동작 상태(normal operating state), 대기 상태(standby state) 및 중지 상태(suspend state)의 3가지 전력 관리(power management)의 상태중 선택된 하나의 상태에서 동작할 수 있는 상기 컴퓨터 시스템에 있어서, 다수의 사전선택된 이벤트들(preselected events)중 적어도 하나에 응답하여, 상기 컴퓨터 시스템을 각각의 상기 상태와 상기 상태들중 적어도 하나의 다른 상태사이에서 변경시키기 위한 제어장치(control unit)를 포함하는 컴퓨터 시스템.
- 제1항에 있어서, 오프상태(off state)의 제 4 전력 관리 상태에서 동작할 수 있는 능력(capability)을 더 함하며 또한, 상기 제어장치는 다수의 사전선택된 이벤트들(preselected events)중 적어도 하나에 응답하여, 상기 컴퓨터 시스템을 각각의 상태와 상기 상태들중 적어도 하나의 다른 상태 사이에서 변경시키기 위해 기능(function)하는 컴퓨터 시스템.
- 코드가 컴퓨터 시스템에 의해 정상적으로 실행되는 정규 동작 상태, 대기 상태 및 중지 상태의 3가지 전력 관리 상태중 선택된 하나의 상태에서 동작가능한 상기 컴퓨터 시스템에 있어서, 상기 컴퓨터 시스템은 코드를 실행할 수 있는 CPU와 다수의 사전선택된 이벤트들중 적어도 하나의 다른 상태 사이에서 변경시키기 위한, 상기 CPU와 회로 통신하는(in circuit communication with)제어장치와 상기 CPU 및 상기 제어 장치와 회로 통신하며, 고 전력 사용 상태(high electrical power usage state)와 저 전력 사용 상태(low electrical power usage state)중 선택된 하나의 상태에서 동작가능하며, 상기 제어 장치에 응답하여 상기 고 및 저 전력 사용 상태 사이에서 변경시키는 주변 장치(peripheral device)와; 상기 CPU, 상기 제어 장치 및 상기 주변 장치와 회로 통신하며 외부 소오스(external source)로 부터의 시스템 전력을 상기 컴퓨터 시스템에 선택적으로 제공하기 위한 전력 선택 회로(power selection circuitry)를 포함하며, 제 1 전원 상태 및 제2 전원 상태중 선택된 하나의 상태에서 동작가능하며, 상기 제어 장치에 응답하여 상기 제 1 및 제 2 전원 상태사이에서 변경되는 전원(power supply)을 포함하되, 상기 정규 동작 상태는 상기 전원이 제 1 전원 상태이며 상기 주변 장치가 상기 고 전력 사용 상태(high electrical usage power supply)인 것을 특징으로 하며; 상기 대기 상태는 상기 전원이 상기 제 1 전원 상태이며 상기 주변 장치가 상기 저 전력 사용 상태(low electrical power usage state)인 것을 특징으로 하는 상기 대기 상태와; 상기 중지 상태는 상기 전원이 상기 제 2 전원 상태이며, 상기 CPU상에서 실행되는 상기 코드는 상기 전원이 상기 제 1 전원 상태로 변경된 후에 상기 CPU상의 상기 코드 실행이 재시작될 수 있도록 가역적으로 인터럽트(reversibly interrupt)된 것을 특징으로 하는 컴퓨터 시스템.
- 제3항에 있어서, 상기 제 1 전원 상태는 상기 전력 선택 회로가 상기 외부 소오스로부터의 시스템 전력을 상기CPU, 상기 제어 장치 및 상기 주변 장치에 제공하는것을 특징으로 하며: 또한, 상기 제 2 전원 상태는 상기 외부 소오스로부터 상기 CPU로의 시스템 전력이 인터럽트되는 것을 특징으로 하는 컴퓨터 시스템.
- 제3항에 있어서, 상기 전원은 보조 전력을 공급하기 위한 2차 회로(auxiliary power)를 포함하고; 상기 제 1 전원 상태는 상기 전력 선택 회로가 시스템 전력을 상기 외부 소오스로부터 상기 CPU, 상기 제어 장치 및 상기 주변 장치에 제공하는 것을 특징으로 하며: 상기 제 2 전원 상태는 상기 2차 회로가 보조 전력을 상기 외부 소오스로부터 상기 제어 장치로 계속 공급하는 동안, 상기 외부 소오스로부터 상기 CPU로의 시스템 전력이 인터럽트되는 것을 특징으로 하는 컴퓨터 시스템.
- 제3항에 있어서, 오프 상태의 제 4 전력 관리 상태에서 동작할 수 있는 능력을 더 포함하며, 상기 오프 상태는 상기 전원이 상기 제 2 전원 상태이며 상기 CPU상에서 실행되는 코드는 비가역적으로 인터럽트(irreversibly interrupt)되는 것을 특징으로 하는 컴퓨터 시스템.
- 코드가 컴퓨터 시스템에 의해 정상적으로 실행되는 정규 동작 상태, 코드가 상기 컴퓨터 시스템에서 계속 실행중인 상태로서 상기 컴퓨터 시스템은 상기 정규 동작 상태로 동작할 때 보다 적은 전력을 소비하는 대기 상태, 그리고 상기 컴퓨터 시스템에 의한 코드 실행이 인터럽트되며 상기 컴퓨터 시스템은 상기 대기 상태에서 동작할 때 보다 적은 전력을 소비하는 중지 상태중에서 선택된 하나의 상태에서 동작 가능한 상기 컴퓨터 시스템에 있어서, 상기 컴퓨터 시스템은; 코드를 실행할 수 있는 CPU와: 다수의 사전 선택된 이벤트들중 적어도 하나에 응답하여, 상기 컴퓨터 시스템을 각각의 상기 상태와 상기 상태들 중의 적어도 다른 하나의 다른 상태사이에서 변경시키기 위한, 상기 CPU와 회로 통신하는(in circuit connection with)제어장치와 데이터를 수신, 저장 및 전송하기 위한 상기 CPU 및 상기 제어 장치와 회로 통신하는 비휘발성 저장장치(non-volatile storage unit)와 메모리 데이터를 저장하기 위한, 상기 CPU, 상기 제어 장치 및 상기 비휘발성 저장장치와 통신하는 휘발성 메모리(volatile memory)와: 상기 CPU, 상기 제어 장치, 상기 비휘발성 저장장치 및 휘발성 메모리와 회로 통신하며 레지스터 데이터를 저장하기 위한 휘발성 레지스터들(volatile registers)를 포함하되, 상기 제어 장치는 상기 휘발성 메모리로부터/로 상기 메모리 데이터를 상기 비휘발성 저장장치로부터 전송하고, 상기 휘발성 레지스터로 부터/로 상기 레지스터 데이터를 상기 비휘발성 저장장치로/로부터 전송하여, 상기 컴퓨터 시스템이 상기 중지 상태로 진입하면 상기 메모리 데이터 및 상기 레지스터 데이터를 상기 비휘발성 저장장치에 저장되도록 하고, 상기 컴퓨터 시스템이 상기 정규 동작 상태로 진입하면 상기 비휘발성 저장장치로부터 상기 휘발성 메모리 및 상기 레지스터 메모리로 전송되도록 하는 컴퓨터 시스템.
- 제7항에 있어서, 오프 상태의 제 4 전력 관리 상태에서 동작할 수 있는 능력을 더 포함하며, 상기 오프 상태는 상기 메모리 데이터 및 레지스터 데이터가 상기 비휘발성 저장장치에 저장되지 않으며, 상기 컴퓨터 시스템은 상기 중지 상태보다 상기 오프 상태에서 전력을 보다 적게 소비하는 컴퓨터 시스템.
- 코드가 컴퓨터 시스템에 의해 정상적으로 실행되는 정규 동작 상태, 코드가 상기 컴퓨터 시스템에서 계속 실행중인 상태로서 상기 컴퓨터 시스템은 상기 정규 동작 상태에서 동작할 때 보다 적은 전력을 소비하는 대기 상태, 그리고 상기 컴퓨터 시스템에 의한 코드 실행이 인터럽트되며 상기 컴퓨터 시스템은 상기 대기 상태에서 동작할 때 보다 적은 전력을 소비하는 중지 상태중에서 선택된 하나의 상태에서 동작가능하며, 중앙 처리 장치(central processing unit), 휘발성메모리, 시스템 전력을 공급하는 전원(power supply), 밀봉체(enclosure)에서 회전하는 고정 매개체(fixed medium)를 가지는 고정 디스크 저장장치(fixed disk storage), 비디오 신호를 발생하는 비디오 디스플레이 제어기(vided display controller), 상기 비디오 신호에 대응하는 시각이미지(optical image)를 디스플레이하는 비디오 디스플레이 터미널(video display terminal), 비활동 중지 타이머(inactivity suspend timer), 비활동 대기 타이머, 그리고 제 1 전력 관리 커맨드(first power management command) 및 제 2 전력 관리 커맨드를 생성할 수 있는 전력 관리 제어기를 포함하는 상기 컴퓨터 시스템에 있어서, 상기 대기 타이머를 시작시켜 제 1 사전선택된 시간 간격(a first preselected time interval)후 종료하도록 하는 단계와 상기 중지 타이머를 시작시켜 제 2 사전 선택된 시간 간격후 종료하도록 하는 단계와 상기 제 1 및 제 2 시간 간격중의 하나가 종료할 때까지 상기 컴퓨터 시스템을 상기 정규 동작 상태로 동작시키는 단계와 상기 대기 타이머 및 중지 타이머를 재시작하므로써 상기 컴퓨터 시스템이 상기 정규 동작 상태에 있는 동안 발생하는 사용자 활동(user activity)에 응답하는 단계와 상기 컴퓨터 시스템을 상기 정규 동작 상태에서 상기 대기 상태로 변경시켜 상기 컴퓨터 시스템 정규 동작 동안 상기 제 1 시간 간격의 종료(expiration)에 응답하는 단계와 상기 컴퓨터 시스템을 중지 상태로 변경 시켜, 상기 제 2 시간 간격의 종료에 응답하는 단계와 상기 컴퓨터 시스템을 상기 정규 동작 상태로 변경시켜 상기 컴퓨터 시스템이 상기 대기 상태인 동안 발생되는 사용자 활동에 응답하는 단계와 상기 대기 타이머를 재시작시키고 상기 컴퓨터 시스템의 상태를 상기 대기 상태에서 상기 정규 동작 상태로 변경하므로써 상기 컴퓨터 시스템이 상기 대기 상태인 동안 발생하는 사용자 활동에 응답하는 단계와 상기 컴퓨터 시스템이 상기 정규 동작 상태와 대기 상태중 하나의 상태에 있는 동안, 상기 컴퓨터 시스템의 상태를 상기 하나의 상태에서 상기 중지 상태로 변경시키므로써, 제 1 전력 관리 커맨드 발생에 응답하는 단계와 상기 컴퓨터 시스템을 상기 정규 동작 상태로 변환시키므로써 상기 컴퓨터 시스템이 상기 중지 상태에 있는 동안 제 2 전력 관리 커맨드 발생에 응답하는 단계를 포함하는 상기 컴퓨터 시스템의 전력 사용을 관리하는 방법.
- 제9항에 있어서, 상기 컴퓨터 시스템은 상기 전력 관리 제어기와 통신하기 위한 순시적 푸시버튼 스위치(momentary pushbutton switch)를 포함하며, 상기 스위치의 폐쇄 이벤트(closure event)에 의해 상기 제 1 및 제 2 전력 관리 커맨드를 발생하는 단계를 더 포함하는 컴퓨터 시스템의 전력 사용 관리 방법.
- 제9항에 있어서, 상기 컴퓨터 시스템은 전력 관리 제어기와 통신하기 위해 제 1 스위치 위치(a first switch position)와 제 2 스위치 위치간에 이동가능한 토글 스위치(toggle switch)를 가지며, 상기 스위치를 상기 제 1 및 제 2 스위치 위치중의 대응하는 하나에 위치시키므로써, 상기 제 1 및 제 2 전력 관리 커맨드를 발생하는 단계를 더 포함하는 컴퓨터 시스템의 전력 사용 관리 방법.
- 제9항에 있어서, 상기 컴퓨터 시스템을 상기 정규 동작 상태에서 상기 대기상태로 변경시켜 상기 컴퓨터 시스템이 상기 정규 동작 상태인 동안 상기 제 1시간 간격의 종료에 응답하는 상기 단계는 상기 비디오 디스플레이 제어기의 상기 비디오 신호 발생을 멈추는 단계와: 상기 고정 디스크 저장장치의 상기 고정 매개체의 회전(rotation)을 정지 시키는 단계를 포함하는 컴퓨터 시스템 전력 사용 관리 방법.
- 제9항에 있어서, 상기 컴퓨터 시스템을 중지 상태로 변경시켜 상기 제 2 시간 간격의 종료에 응답하는 상기 단계는 상기 컴퓨터 시스템의 상태를 확인(ascertaining)하는 단계와 상기 시스템 상태를 상기 고정 디스크 저장장치에 저장하는 단계와 상기 전원으로 부터의 시스템 전력 전송을 중지하는 단계를 포함하는 컴퓨터 시스템 전력 사용 관리 방법.
- 제13항에 있어서, 상기 컴퓨터 시스템을 상기 정규 동작 상태로 변환하므로써 상기 컴퓨터 시스템이 상기 중지 상태에 있는 동안 제 2 전력 관리 커맨드의 발생에 응답하는 상기 단계는 상기 전원으로 부터의 시스템 전력의 전송을 재시작하는 단계와 단축된 파워-온 셀프-테스트(abbreviated power-on self-test)를 수행하는 단계와 상기 고정 디스크 저장장치로부터 상기 저장된 시스템 상태를 판독하는 단계와 상기 컴퓨터 시스템의 상태를 복원하는 단계를 포함하는 컴퓨터 시스템 전력 사용 관리 방법.
- 중앙 처리 장치(CPU), 상기 CPU와 회로 통신하는 메모리 및 상기 CPU와 회로 통신하는 인터럽트 제어기를 구비한 컴퓨터 시스템으로서, 상기 인터럽트 제어기는 CPU 와 함께(in coordination with) 다수의 인터럽트 이벤트를 처리할 수 있고, 메모리내에 위치하며 이에 연관된 제 1 인터럽트 벡터(interrupt vector)세트와 메모리내에 위치하며 이에 연관된 제 1 인터럽트 서비스 루틴(interrupt service routine)세트와 상기 제 1 인터럽트 서비스 루틴 세트에 대응하는 하나 또는 그 이상의 베이스 어드레스(base addresses)를 구비하는 상기 컴퓨터 시스템에 있어서, 제 2 인터럽트 벡터 세트를 상기 메모리에 기록하는 단계와 상기 제 2 인터럽트 벡터 세트로 부터의 하나 또는 그 이상의 상기 인터럽트 벡터들에 각각 대응하는 제 2 인터럽트 서비스 루틴 세트를 메모리에 기록하는 단계와 상기 제 2 인터럽트 벡터 세트로 부터의 하나 또는 그이상의 상기 인터럽트 벡터들에 대응하는 상기 인터럽트 서비스 루틴들중 하나에 의해 서비스(service)될 인터럽트 이벤트(inturrupt event)를 발생시키는 단계와 상기 안터럽트 제어기와 함께(in coordination with) 상기 CPU 내에서 상기 인터럽트 이벤트를 처리(processing)하는 단계와 상기 제 2 인터럽트 벡터 세트로부터의 하나 또는 그 이상의 상기 인터럽트 벡터들에 대응하는 상기 인터럽트 서비스 루틴들중 하나로 상기 인터럽트를 서비스하는 단계와 상기 인터럽트 서비스 단계 후에 상기 메모리의 상태로부터의 상기 인터럽트 제어기의 하나 또는 그이상의 베이스 어드레스의 상태를 결정하는 단계를 포함하는 인터럽트 제어기의 하나 또는 그이상의 베이스 어드레스 상태를 확인하는 방법.
- 제15항에 있어서, 상기 인터럽트 제어기는 8259인 인터럽트 제어기의 베이스 어드레스 상태 확인 방법.
- 제15항에 있어서, 상기 인터럽트 제어기는 회로 통신에서 8259에 상당하는 하나 또는 그이상의 회로(one or more circuit equivalents of an 8259)를 포함하는 칩세트(chipset)인 인터럽트 제어기의 베이스 어드레스 상태 확인 방법.
- 제15항에 있어서, 제 2 인터럽트 벡터 세트를 상기 메모리에 기록하고 제 2 인터럽트 서비스 루틴 세트를 상기 메모리에 기록하는 상기 양 단계 이전에, 상기 제 1 인터럽트 벡터 세트 및 상기 제 1 인터럽트 서비스 루틴 세트를 상기 메모리의 그들 각각의 위치로부터 상기 메모리내 다른 위치로 복사하는 단계를 더 포함하는 인터럽트 제어기의 베이스 어드레스 상태 확인 방법.
- 운영 체제(operating system) 및 응용 프로그램(application program)을 실행할 수 있는 BIOS를 구비하는 컴퓨터 시스템에 있어서, 상기 컴퓨터 시스템은, CPU와 외부 소오스로부터 상기 컴퓨터 시스템에 시스템 전력을 선택적으로 제공하기 위한 회로를 구비하며, 제 1 전원 상태 및 제 2 전원 상태를 가지는 것을 특징으로 하는 전원과 상기 CPU와 회로 통신하는 비휘발성 저장장치와 상기 CPU와 회로 통신하는 비휘발성 저장장치와 상기 CPU와 회로 통신하며 메모리 데이터를 저장하기 위한 휘발성 시스템 메모리와 상기 CPU와 회로 통신하며 레지스터 데이터를 저장하기 위한 휘발성 시스템 레지스터들과 상기 CPU와 회로 통신하며 사전 선택된 중지 이벤트에 응답하여 상기 컴퓨터 시스템의 상태를 정규 동작 상태와 중지 상태사이에서 선택적으로 변경시키는 제어 장치를 포함하되, 상기 정규 동작 상태는 상기 전원이 상기 제 1 전원 상태이며 상기 컴퓨터 시스템은 사용자 커맨드 혹은 상기 운영 체제 혹은 상기 BIOS에 응답하여 상기 응용 프로그램을 실행할 수 있는 것을 특징으로 하고, 상기 중지 상태는 상기 레지스터 데이터 및 메모리 데이터가 상기 비휘발성 저장장치상에 저장되며 상기 전원이 상기 제 2 전원 상태인 것을 특징으로 하고, 상기 정규 동작 상태와 상기 중지 상태간의 변경은, 상기 제어 장치가 상기 사전 선택된 중지 이벤트에 응답하여, 상기 전원을 상기 제 1 전원 상태와 상기 제 2 전원 상태사이에서 각각 변경시키는 것을 더 포함하는 컴퓨터 시스템.
- 제19항에 있어서, 상기 제 1 전원 상태는 상기 전원이 시스템 전력을 상기 외부 소오스로 부터 상기 컴퓨터 시스템에 제공하는 것을 특징으로 하고 상기 제 2 전원 상태는 상기 전원이 상기 시스템 전력을 상기 외부 소오스로부터 상기 컴퓨터 시스템에 제공하지 않는 것을 특징으로 하는 컴퓨터 시스템.
- 제19항에 있어서, 상기 전원은 보조 전력(auciliary power)을 상기 컴퓨터 시스템에 제공하기 위한 회로를 더 포함하고 상기 제 1 전원 상태는 상기 전원이 시스템 전력 및 보조 전력을 상기 외부 소오스로부터 상기 컴퓨터 시스템에 제공하는 것을 특징으로하고 상기 제 2 전원 상태는 상기 전원이 시스템 전력을 상기 외부 소오스로부터 상기 컴퓨터 시스템에 제공하지 않고 보조 전력을 상기 외부 소오스로부터 상기 컴퓨터 시스템에 제공하는 것을 특징으로 하는 컴퓨터 시스템.
- 제19, 20 혹은 21항에 있어서, 상기 비휘발성 저장장치는 고정 디스크 저장장치인 컴퓨터 시스템.
- 제19, 20 혹은 21항에 있어서, 상기 비휘발성 저장장치는 배터리-지원 판독 전용 메모리(battery-backed read only memory)인 컴퓨터 시스템.
- 제19항에 있어서, 사전 선택된 시간주기 후에 종료하도록 세트된 비활동 중지 타이머를 더 포함하며; 상기 사전 선택된 중지 이벤트는 상기 비활동 중지 타이머의 종료를 포함하는 컴퓨터 시스템.
- 제19항에 있어서, 상기 CPU와 회로 통신하며 , 눌려지는 것에 응답하여 폐쇄이벤트(closure event)를 발생하는 순시 푸시버튼 스위치를 더 포함하며; 상기 사전선택된 중지 이벤트는 상기 스위치의 폐쇄 이벤트를 포함하는 컴퓨터 시스템.
- 제19항에 있어서, 상기 CPU와 회로 통신하며, 눌려지는 것에 응답하여 폐쇄 이벤트를 발생하는 순시 푸시버튼 스위치를 더 포함하며: 상기 CPU상에 실행되는 코드(code)에 의해 조작가능(manipulable)한 제 1 플래그 상태 및 제 2 플래그 상태를 갖는 조작가능 플래그를 더 포함하고 하나 또는 그 이상의 상기 사전선택된 중지 이벤트들은 상기 제 1 플래그 상태에 있는 동안 상기 스위치의 패쇄 이벤트를 포함하는 컴퓨터 시스템.
- 메모리 데이터를 저장하기 위한 시스템 메모리와 비휘발성 저장 장치와 코드의 인스트럭션(instruction)이 상기 시스템 메모리내 부적절한 영역을 액세스하려고 한다든지 혹은 인스트럭션이 특권 인스트럭션(privileged instruction)을 실행하고자 하는 경우 CPU가 보호 폴트(protection fault)를 발생시키도록하는 보호 모드에서 상기 코드를 실행할 수 있으며 보호 폴트의 발생없이 상기 시스템 메모리의 선택된 영역에 기록가능하도록 허용하고 특권 인스트럭션의 실행을 허용하는 비폴트(non-fault) 모드에서 실행할 수 있으며, 상기 시스템 메모리내 스택(stack)을 생성하며, 레지스터값을 저장하기 위한 휘발성 레지스터들을 포함하는 상기 CPU와 ROM내의 BIOS와 상기 BIOS가 복사되어 실행되는 섀도우 RAM과 상기CPU상에서의 코드 실행을 인터럽트할 수 있고 중지 이벤트에 응답하여 중지 루틴을 호출할 수 있는 운영체제와 하나 또는 그이상의 사전선택된 조건에 응답하여 중지 이벤트를 발생하는 제어 루틴을 포함하되, 상기 중지 루틴은 상기 운영 체제에 의해 선택적으로 호출가능하며, 또한 보호 폴트의 발생없이 상기 레지스터 값들을 상기CPU로부터 상기 스택 혹은 상기 섀도우 RAM중 어느 하나에 전송하는 능력과 상기CPU를 비-폴트 코드에 두는 능력과 상기 레지스터 값들을 상기 스택 혹은 상기 섀도우 RAM의 어느 하나로부터 상기 비휘발성 저장장치로 전송하는 능력을 갖는 것을 특징으로 하는 컴퓨터 시스템에 있어서, 중지 이벤트에 응답하여 상기 운영체제로 코드 실행중인 상기 CPU상의 상태를 인터럽트하는 단계와 상기 중지 루틴을 활성화 시키는 단계와 상기 레지스터 값들을 상기 섀도우 RAM내 혹은 상기 스택에 일시적으로 저장하는 단계와 상기 섀도우 RAM혹은 상기 스택의 어느 하나로부터 상기 레지스터 값들을 상기 비휘발성 저장장치로 복사하는 것이 상기 CPU내에서 보호 폴트를 발생시키지 않는 것을 특징으로 하는 비-폴트모드로 상기 CPU를 두는 단계와 상기 레지스터 값들을 상기 스택 혹은 상기 섀도우 RAM으로부터 비휘발성 저장장치에 전송하는 단계를 포함하는 보호 모드에서 코드를 실행중인 CPU의 상태를 보존(preserve the state of the CPU )하는 방법.
- 메모리 데이터를 저장하기 위한 시스템 메모리와 비휘발성 저장 장치와 코드의 인스트럭션이 상기 시스템 메모리내 부적절한 영역을 엑세스하려고 한다든지 혹은 인스트럭션이 특권 인스트럭션을 실행하고자 하는 경우CPU가 보호 폴트를 발생시키도록 하는 보호 모드에서 상기 코드를 실행할 수 있으며 보호 폴트의 발생없이 상기 시스템 메모리의 선택된 영역에 기록하도록 허용하고 특권 인스트럭션의 실행을 허용하는 비폴트 모드에서 실행할 수 있으며, 상기 시스템 메모리내 스택을 생성하며, 레지스터값을 저장하기 위한 휘발성 레지스터들을 포함하는 상기 CPU와 ROM내의 BIOS와 상기 BIOS가 복사되어 실행되는 섀도우RAM과 상기 CPU상에서의 코드 실행을 복원(restore)할 수 있고 재시작 이벤트(resume event)에 응답하여 재시작 루틴을 호출할 수 있는 운영체제와 하나 또는 그 이상의 사전선택된 조건에 응답하여 재시작 이벤트를 발생하는 제어 루틴을 포함하되, 상기 재시작 루틴은 선택적으로 상기 운영 체제에 의해 호출가능하며, 또한 상기 CPU를 비 폴트 모드에 두는 능력과 상기 비휘발성 저장장치로 부터 상기 CPU의 상기 레지스터값들을 상기 스택 혹은 상기 섀도우 RAM으로 전송하는 능력과 상기 CPU를 폴트 모드에 두는 능력과 상기 스택 혹은 상기 섀도우 RAM중 어느 하나로부터의 상기 레지스터값들을 보호폴트의 발생없이 전송하는 능력을 갖는 것을 특징으로 하는 컴퓨터 시스템에 있어서, 재시작 이벤트에 응답하여 상기 재시작 루틴을 활성화 시키는 단계와 상기 CPU를 비폴트 모드에 두되, 상기 비폴트 모드는 상기 레지스터값들을 상기 비휘발성 저장장치로부터 상기 섀도우 RAM이나 혹은 상기 스택의 어느 하나에 복사하는 것이 상기 CPU내에서 보호 폴트를 발생하지 않는 것을 특징으로 하는 단계와 상기CPU의 상기 레지스터값들을 상기 비휘발성 저장장치로부터 상기 스택이나 혹은 상기 섀도우 RAM의 어느 하나로 전송하는 단계와 상기 섀도우 RAM내 상기 BIOS는 CPU 페이징(CPU paging)이 활성화된 후에 액세스될 수 있는 것을 특징으로 하는 페이지 테이블 세트(a set of page tables)를 상기 섀도우 RAM으로 로딩(loading)하는 단계와 상기 CPU를 폴트 모드로 두는 단계와 상기 레지스터값들을 상기 스택이나 혹은 상기 섀도우 RAM으로부터 상기 CPU로 전송하는 단계와 상기 운영 체제와 함께 상기 CPU상에서 상기 인터럽트된 코드 실 행을 재시작하는 단계를 포함하는 비휘발성 메모리로부터 CPU상태를 복원하는 방법.
- 제27 혹은 28항에 있어서, 상기 섀도우 RAM은 선형 어드레스(linear addresses)가 물리적 어드레스(physical address)와 동일한 시스템 메모리 부분에서 동작하는CPU 상태 보존 및 복원 방법.
- 제27 혹은 28항에 있어서 상기 CPU를 상기 비-폴트 모드에 두는 상기 단계는 상기 CPU를 리세팅하는 단계를 포함하는 CPU상태 보존 빛 복원 방법.
- 제27 혹은 28항에 있어서, 상기 운영 체제는 고급 전력 관리 명세(Advanced power Management specification)를 따르는 CPU상태 보존 빛 복원 방법.
- 제27 혹은 28항에 있어서, 상기 비휘발성 저장장치는 고정 디스크 저장장치인 CPU 상태 보존 및 복원 방법.
- 제27 혹은 28항에 있어서 상기 CPU는 386 혹은 486 마이크로 프로세서 계열의 일원(member)인 CPU상태 보존 및 복원 방법.
- 코드가 컴퓨터 시스템에 의해 정상적으로 실행되는 정규 동작 상태, 오프 상태 및 중지 상태의 3가지 전력 관리 상태중에서 선택된 한 상태에서 동작 할 수 있는 상기 컴퓨터 시스템에 있어서, 상기 컴퓨터 시스템은 스위치와 코드를 실행할 수 있는 CPU와 다수의 사전 선택된 이벤트 들중 적어도 하나에 응답하여, 상기 컴퓨터 시스템을 각각의 상기 상태와 상기 상태들중 적어도 하나의 다른 상태사이에서 변경 시키기위한, 상기 CPU 및 상기 스위치와 회로 통신하는 제어 장치와 상기CPU상에서 실행되는 코드에 응답하여 다수의 사전선택된 플래그 상태들중 하나를 추정(assume)할 수 있는 상기 CPU 및 상기 제어 장치와 회로 통신 할 수 있는 플래그와 상기 CPU 및 상기 제어 장치와 회로 통신하며, 시스템 전력을 외부 소오스로부터 상기 컴퓨터 시스템에 선택적으로 제공하기 위한 전력 선택 회로를 포함하되, 제 1 전원 상태 및 제 2 전원 상태중 하나의 상태에서 동작가능하며, 상기 제어 장치에 응답하여 상기 제 1 및 제 2 전원 상태사이에서 변경시키는 전원을 포함하되, 상기 정규 동작 상태는 상기 전원이 상기 제 1 전원 상태이고 코드가 상기 CPU상에서 정상적으로 실행되는 것을 특징으로 하며 상기 중지 상태는 상기 전원이 상기 제 2 전원 상태이며, 상기 CPU상에서 실행되는 상기 코드는 상기 전원이 상기 제 1 전원 상태로 변경된 후에 상기CPU 상의 상기 코드 실행이 재시작 될 수 있도록 가역적으로 인터럽트된 것을 특징으로 하며 상기 오프 상태는 상기 전원이 상기 제 2 전원 상태이며 상기 CPU상에서 실행되는 상기 코드가 비가역적으로(irreversibly)인터럽트 된 것을 특징으로 하는 컴퓨터 시스템.
- 제34항에 있어서, 상기 스위치는 순시 푸시버튼 스위치이며, 상기 플래그의 상태가 상기 플래그 상태중 제 1 상태인 경우 상기 제어장치는 상기 스위치의 폐쇄이벤트에 응답하여 상기 컴퓨터 시스템을 상기 정규 동작과 상기 오프 상태사이에서 변경시키고 상기 플래그의 상태가 상기 플래그 상태중 제 2 상태인 경우, 상기 제어 장치는 상기 스위치의 폐쇄 이벤트에 응답하여 상기 컴퓨터 시스템을 상기 정규 동작 상태와 상기 중지 상태사이에서 변경시키는 컴퓨터 시스템.
- 제34항에 있어서, 상기 스위치는 제 1 스위치 위치와 제 2 스위치 위치사이에서 이동가능한 토글 스위치이며; 상기 플래그의 상기 플래그 상태중 제 1 상태인 경우, 상기 제어 장치는 상기 스위치가 상기 제 1 스위치 위치에 진입(enter)한 것에 응답하여 상기 컴퓨터 시스템을 상기 정규 동작 상태에서 상기 오프 상태로 변경시키며 상기 플래그가 상기 플래그 상태중 제 1 상태인 경우, 상기 제어 장치는 상기 스위치가 상기 제 2 스위치 위치로 진입한 것에 응답하여 상기 컴퓨터 시스템을 상기 오프 상태에서 상기 정규 동작 상태로 변경시키며 상기 플래그가 상기 플래그 상태중 제 2 상태인 경우, 상기 제어 장치는 상기 스위치가 상기 제 1 스위치 위치에 진입한 것에 응답하여 상기 컴퓨터 시스템을 상기 정규 동작 상태에서 상기 중지 상태로 변경시키며 상기 플래그가 상기 플래그 상태중 제 2 상태인 경우 상기 제어 장치는 상기 스위치가 상기 제 2 스위치 상태에 진입한 것에 응답하여 상기 컴퓨터 시스템을 상기 중지 상태에서 상기 정규 동작 상태로 변경시키는 컴퓨터 시스템.
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US08/097,251 US5548763A (en) | 1993-07-26 | 1993-07-26 | Desk top computer system having multi-level power management |
US097,251 | 1993-07-26 |
Publications (2)
Publication Number | Publication Date |
---|---|
KR950003998A KR950003998A (ko) | 1995-02-17 |
KR0128275B1 true KR0128275B1 (ko) | 1998-04-15 |
Family
ID=22262466
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1019940014694A KR0128275B1 (ko) | 1993-07-26 | 1994-06-24 | 컴퓨터 시스템과그의 전력사용 관리방법, 인터럽트 제어기의 베이스 어드레스 상태 확인방법과 씨피유 상태보존 및 복원방법 |
Country Status (13)
Country | Link |
---|---|
US (1) | US5548763A (ko) |
EP (1) | EP0636964B1 (ko) |
JP (1) | JPH0744286A (ko) |
KR (1) | KR0128275B1 (ko) |
CN (1) | CN1109964C (ko) |
AT (1) | ATE223588T1 (ko) |
AU (2) | AU685455B2 (ko) |
BR (1) | BR9402942A (ko) |
CA (1) | CA2120055C (ko) |
ES (1) | ES2181701T3 (ko) |
MY (1) | MY111524A (ko) |
PE (1) | PE9396A1 (ko) |
TW (1) | TW495064U (ko) |
Families Citing this family (87)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7068264B2 (en) * | 1993-11-19 | 2006-06-27 | Hitachi, Ltd. | Flat display panel having internal power supply circuit for reducing power consumption |
US6522314B1 (en) | 1993-11-19 | 2003-02-18 | Fujitsu Limited | Flat display panel having internal power supply circuit for reducing power consumption |
DE69517712T2 (de) * | 1994-01-10 | 2001-03-08 | Sun Microsystems, Inc. | Verfahren und Vorrichtung zur Reduzierung der Leistungsaufnahme in einem Rechnersystem |
US5560023A (en) | 1994-09-07 | 1996-09-24 | International Business Machines Corporation | Automatic backup system for advanced power management |
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 |
JP3224715B2 (ja) | 1994-09-07 | 2001-11-05 | インターナショナル・ビジネス・マシーンズ・コーポレーション | コンピュータ・システムをウェイクさせる低電力リング検出 |
US5832281A (en) * | 1994-10-19 | 1998-11-03 | Canon Kabushiki Kaisha | Power control apparatus and power control method |
KR970010634B1 (ko) * | 1994-10-25 | 1997-06-28 | 삼성전자 주식회사 | 네트워크 하이버네이션 시스템 |
JPH08147173A (ja) * | 1994-11-18 | 1996-06-07 | Seiko Epson Corp | エミュレーション装置 |
KR970008512B1 (ko) * | 1994-11-30 | 1997-05-24 | 엘지전자 주식회사 | 절전기능 자동 감지 장치 |
KR0172003B1 (ko) * | 1995-03-28 | 1999-03-30 | 김광호 | 컴퓨터 시스템 및 그 제어방법 |
JP3045948B2 (ja) * | 1995-07-05 | 2000-05-29 | インターナショナル・ビジネス・マシーンズ・コーポレイション | 情報処理装置及びその制御方法 |
US5710930A (en) * | 1995-08-04 | 1998-01-20 | Intel Corporation | Apparatus and a method for allowing an operating system of a computer system to persist across a power off and on cycle |
US5638541A (en) * | 1995-08-25 | 1997-06-10 | Intel Corporation | System and method for managing power on desktop systems |
US5666539A (en) * | 1995-09-20 | 1997-09-09 | Hewlett-Packard Company | Reducing I/O activity to allow a host based printing system to activate power management functions |
GB9521636D0 (en) * | 1995-10-21 | 1996-01-03 | Magnum Power Solutions Ltd | Apparatus and method for preserving computer held data following power-off |
US5974552A (en) * | 1995-12-29 | 1999-10-26 | Samsung Electronics Co., Ltd. | Method and apparatus for executing a scheduled operation after wake up from power off state |
US5983355A (en) * | 1996-05-20 | 1999-11-09 | National Semiconductor Corporation | Power conservation method and apparatus activated by detecting specific fixed interrupt signals indicative of system inactivity and excluding prefetched signals |
KR100245199B1 (ko) * | 1996-05-21 | 2000-02-15 | 윤종용 | 네트워크 사용중의 절전기능을 갖는 컴퓨터의 절전모드전환방법 |
US5875344A (en) * | 1996-07-16 | 1999-02-23 | Compaq Computer Corporation | Using a file enabler with firmware |
US5925131A (en) * | 1996-08-19 | 1999-07-20 | Compaq Computer Corporation | Computer and computer network having a power down inhibit |
KR100281535B1 (ko) * | 1997-02-12 | 2001-02-15 | 윤종용 | 컴퓨터 시스템 및 그의 제어 방법 |
KR19980074058A (ko) * | 1997-03-21 | 1998-11-05 | 윤종용 | 전원 자동차단기능을 갖는 컴퓨터 및 그 전원자동차단방법 |
US5905900A (en) * | 1997-04-30 | 1999-05-18 | International Business Machines Corporation | Mobile client computer and power management architecture |
KR100455268B1 (ko) * | 1997-05-16 | 2005-02-28 | 삼성전자주식회사 | 윈도우즈95운영체제로동작하는시스템에서의안전셧다운장치및방법 |
US6145068A (en) * | 1997-09-16 | 2000-11-07 | Phoenix Technologies Ltd. | Data transfer to a non-volatile storage medium |
US5999730A (en) * | 1997-10-27 | 1999-12-07 | Phoenix Technologies Limited | Generation of firmware code using a graphic representation |
US6438684B1 (en) | 1997-11-03 | 2002-08-20 | 3Com Corporation | Push button shutdown and reset of embedded systems |
US5937200A (en) * | 1997-11-21 | 1999-08-10 | Phoenix Technologies Ltd. | Using firmware to enhance the functionality of a controller |
KR19990052965A (ko) * | 1997-12-23 | 1999-07-15 | 구자홍 | 퍼스널 컴퓨터의 데이터 저장방법 |
US6092207A (en) * | 1997-12-29 | 2000-07-18 | Intel Corporation | Computer having a dual mode power supply for implementing a power saving mode |
US6308278B1 (en) | 1997-12-29 | 2001-10-23 | Intel Corporation | Supplying standby voltage to memory and wakeup circuitry to wake a computer from a low power mode |
JP4028064B2 (ja) * | 1998-02-13 | 2007-12-26 | 富士通株式会社 | ディスプレイ装置 |
KR100306385B1 (ko) | 1998-09-04 | 2001-10-19 | 윤종용 | 자동 응답 상태표시 및 처리기능을 갖는 컴퓨터 및 자동 응답처리방법 |
KR100337604B1 (ko) | 1998-09-04 | 2002-09-26 | 삼성전자 주식회사 | 시스템상태정보를디스플레이하기위한디스플레이장치를구비한컴퓨터시스템및그제어방법 |
JP2000148310A (ja) * | 1998-11-04 | 2000-05-26 | Nec Yonezawa Ltd | 携帯用情報機器の選択型電源供給システム |
US6374145B1 (en) * | 1998-12-14 | 2002-04-16 | Mark Lignoul | Proximity sensor for screen saver and password delay |
US6408397B1 (en) | 1999-05-24 | 2002-06-18 | Dell Usa, L.P. | Using RTC wake-up to enable recovery from power failures |
US6201372B1 (en) * | 1999-09-08 | 2001-03-13 | Denso Corporation, Ltd. | Reserve power option for a portable electronic device |
EP1085396A1 (en) * | 1999-09-17 | 2001-03-21 | Hewlett-Packard Company | Operation of trusted state in computing platform |
US6647499B1 (en) | 2000-01-26 | 2003-11-11 | International Business Machines Corporation | System for powering down a disk storage device to an idle state upon trnsfer to an intermediate storage location accessible by system processor |
KR20000030557A (ko) * | 2000-03-07 | 2000-06-05 | 이장호 | 천연식물을 이용한 건축자재의 제조방법 |
US6968467B2 (en) | 2000-10-26 | 2005-11-22 | Matsushita Electric Industrial Co., Ltd. | Decentralized power management system for integrated circuit using local power management units that generate control signals based on common data |
GB2376763B (en) | 2001-06-19 | 2004-12-15 | Hewlett Packard Co | Demonstrating integrity of a compartment of a compartmented operating 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. |
GB2376764B (en) * | 2001-06-19 | 2004-12-29 | Hewlett Packard Co | Multiple trusted computing environments |
GB0114898D0 (en) * | 2001-06-19 | 2001-08-08 | Hewlett Packard Co | Interaction with electronic services and markets |
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 |
US20030030326A1 (en) * | 2001-08-10 | 2003-02-13 | Shakti Systems, Inc. | Distributed power and supply architecture |
US20030061523A1 (en) * | 2001-09-25 | 2003-03-27 | Stanley Randy P. | Method and apparatus to provide a user priority mode |
US20030074590A1 (en) * | 2001-10-12 | 2003-04-17 | Fogle Steven L. | Computer system with improved entry into powersave and lock modes and method of use therefor |
AU2002343624A1 (en) * | 2001-11-05 | 2003-05-19 | Shakti Systems, Inc. | Monolithic battery charging device |
WO2003041249A1 (en) * | 2001-11-05 | 2003-05-15 | Shakti Systems, Inc. | Dc-dc converter with resonant gate drive |
GB2382419B (en) * | 2001-11-22 | 2005-12-14 | Hewlett Packard Co | Apparatus and method for creating a trusted environment |
US7114086B2 (en) * | 2002-01-04 | 2006-09-26 | Ati Technologies, Inc. | System for reduced power consumption by monitoring instruction buffer and method thereof |
KR100552418B1 (ko) * | 2002-01-24 | 2006-02-20 | 김만복 | 플라스틱 패널 제조 방법 및 플라스틱 패널 |
JP3776870B2 (ja) | 2002-11-12 | 2006-05-17 | 株式会社東芝 | 情報処理装置および省電力制御方法 |
US7210048B2 (en) * | 2003-02-14 | 2007-04-24 | Intel Corporation | Enterprise power and thermal management |
US7213163B2 (en) * | 2003-06-25 | 2007-05-01 | International Business Machines Corporation | Restoring power in a hot swappable multi-server data processing environment |
US7203854B2 (en) | 2004-02-12 | 2007-04-10 | Microsoft Corporation | System for reconfiguring a computer between a high power and high functionality configuration and a low power and low functionality configuration |
US20070124627A1 (en) * | 2004-03-26 | 2007-05-31 | Toshiaki Katano | Communication processing device, home electric device, and home network system |
JP4302573B2 (ja) * | 2004-04-15 | 2009-07-29 | 富士通株式会社 | 情報処理装置 |
US7272731B2 (en) * | 2004-10-13 | 2007-09-18 | Dell Products L.P. | Information handling system having reduced power consumption |
EP2194476B1 (en) | 2005-03-22 | 2014-12-03 | Hewlett-Packard Development Company, L.P. | Method and apparatus for creating a record of a software-verification attestation |
US7958312B2 (en) | 2005-11-15 | 2011-06-07 | Oracle America, Inc. | Small and power-efficient cache that can provide data for background DMA devices while the processor is in a low-power state |
US7516274B2 (en) | 2005-11-15 | 2009-04-07 | Sun Microsystems, Inc. | Power conservation via DRAM access reduction |
US7899990B2 (en) | 2005-11-15 | 2011-03-01 | Oracle America, Inc. | Power conservation via DRAM access |
US7934054B1 (en) | 2005-11-15 | 2011-04-26 | Oracle America, Inc. | Re-fetching cache memory enabling alternative operational modes |
US7898500B2 (en) * | 2006-05-22 | 2011-03-01 | Microsoft Corporation | Auxiliary display within a primary display system |
JP4293239B2 (ja) * | 2006-12-28 | 2009-07-08 | ソニー株式会社 | 情報処理装置および方法、プログラム、並びに記録媒体 |
US20080162918A1 (en) * | 2007-01-02 | 2008-07-03 | Nokia Corporation | Hide boot |
DE202007018449U1 (de) * | 2007-11-02 | 2008-10-02 | Fujitsu Siemens Computers Gmbh | Elektronisches Gerät, Computer und Anordnung |
US20090171174A1 (en) * | 2007-12-31 | 2009-07-02 | Nellcor Puritan Bennett Llc | System and method for maintaining battery life |
US20100138786A1 (en) * | 2008-12-01 | 2010-06-03 | Zodiac Pool Systems, Inc. | User Interface Device with Display Screen and Memory for Pool/Spa Control System |
ITMI20082192A1 (it) * | 2008-12-11 | 2010-06-12 | Alberto Renzi | Sistema per salvare in un'unita' periferica di un computer dati contenuti nel computer stesso e per trasferirli quando l'unita' periferica viene connessa ad un altro computer |
WO2011011015A1 (en) | 2009-07-24 | 2011-01-27 | Hewlett-Packard Development Company, L.P. | Power supply having low quiescent consumption |
US8751760B2 (en) * | 2009-10-01 | 2014-06-10 | Dell Products L.P. | Systems and methods for power state transitioning in an information handling system |
TWI393894B (zh) * | 2009-11-20 | 2013-04-21 | Inst Information Industry | 識別迴路上電器用電行為的方法、系統與電腦程式產品 |
US8700936B2 (en) * | 2010-12-03 | 2014-04-15 | Schneider Electric It Corporation | Modular gating of microprocessor low-power mode |
KR101287294B1 (ko) * | 2011-02-01 | 2013-07-17 | 고려대학교 산학협력단 | 컴퓨터 전력 관리 장치 및 방법 |
CN102955560B (zh) * | 2011-08-25 | 2015-02-04 | 腾讯科技(深圳)有限公司 | 一种应用程序处理方法和装置 |
KR102154080B1 (ko) * | 2014-07-25 | 2020-09-09 | 삼성전자주식회사 | 전력 관리 시스템, 이를 포함하는 시스템 온 칩 및 모바일 기기 |
TWI750109B (zh) | 2014-11-12 | 2021-12-21 | 香港商阿里巴巴集團服務有限公司 | 硬碟功耗、硬碟功耗管理服務控制方法及裝置 |
US9818458B1 (en) * | 2015-09-23 | 2017-11-14 | Intel Corporation | Techniques for entry to a lower power state for a memory device |
Family Cites Families (32)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4503494A (en) * | 1980-06-26 | 1985-03-05 | Texas Instruments Incorporated | Non-volatile memory system |
US5167027A (en) * | 1982-11-09 | 1992-11-24 | Siemens Aktiengesellschaft | Apparatus and method for forming a sequencer link for a sequencer controlled by a micro-program |
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 |
US4907150A (en) * | 1986-01-17 | 1990-03-06 | International Business Machines Corporation | Apparatus and method for suspending and resuming software applications on a computer |
JPS63163912A (ja) * | 1986-12-26 | 1988-07-07 | Toshiba Corp | マイクロコンピユ−タシステム |
US4933785A (en) * | 1988-03-01 | 1990-06-12 | Prairietek Corporation | Disk drive apparatus using dynamic loading/unloading |
JPH0224727A (ja) * | 1988-07-14 | 1990-01-26 | Canon Inc | 情報処理装置 |
DE68925615T2 (de) * | 1988-11-10 | 1996-09-12 | Motorola Inc | Digitalrechnersystem mit Niederstromverbrauchmodus |
US5021963A (en) * | 1988-12-30 | 1991-06-04 | Pitney Bowes Inc. | EPM having an improvement in accounting update security |
US5218607A (en) * | 1989-06-23 | 1993-06-08 | Kabushiki Kaisha Toshiba | Computer having a resume function and operable on an internal power source |
EP0675425B1 (en) * | 1989-06-30 | 1997-12-10 | Fujitsu Personal Systems, Inc. | A method for reducing power consumed by a computer |
EP0415376A3 (en) * | 1989-08-28 | 1992-04-08 | Kabushiki Kaisha Toshiba | Computer unit with a resume function |
US5167024A (en) * | 1989-09-08 | 1992-11-24 | Apple Computer, Inc. | Power management for a laptop computer with slow and sleep modes |
AU629019B2 (en) * | 1989-09-08 | 1992-09-24 | Apple Computer, Inc. | Power management for a laptop computer |
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 | 株式会社東芝 | 計算機システム立上げ方式 |
JPH04138512A (ja) * | 1990-09-29 | 1992-05-13 | Nippon Steel Corp | パーソナルコンピュータのスリープ装置 |
US5193176A (en) * | 1990-10-17 | 1993-03-09 | Powercard Supply C.A. | Computer work saving during power interruption |
EP0498374A3 (en) * | 1991-02-08 | 1993-03-03 | Kabushiki Kaisha Toshiba | Computer having function of resume process |
US5410711A (en) * | 1991-02-14 | 1995-04-25 | Dell Usa, L.P. | Portable computer with BIOS-independent power management |
JPH0776894B2 (ja) * | 1991-02-25 | 1995-08-16 | インターナショナル・ビジネス・マシーンズ・コーポレイション | プロセッサ用クロック信号の制御方法及び情報処理システム |
JPH04290109A (ja) * | 1991-03-19 | 1992-10-14 | Matsushita Electric Ind Co Ltd | 情報処理装置 |
JP3701965B2 (ja) * | 1991-05-17 | 2005-10-05 | 日本電気株式会社 | 保護モードマイクロプロセッサ及びハードディスクのための中断/再開機能とアイドルモードの実現 |
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 |
JPH0519883A (ja) * | 1991-07-16 | 1993-01-29 | Canon Inc | 電子機器 |
US5291604A (en) * | 1991-08-30 | 1994-03-01 | Intel Corporation | Transparent system interrupts with automated halt state restart |
US5410713A (en) * | 1992-01-02 | 1995-04-25 | Smith Corona/Acer | Power-management system for a computer |
JP3388495B2 (ja) * | 1996-02-20 | 2003-03-24 | 株式会社シマノ | カンチレバー型ブレーキ装置 |
-
1993
- 1993-07-26 US US08/097,251 patent/US5548763A/en not_active Expired - Lifetime
- 1993-07-28 TW TW086203951U patent/TW495064U/zh not_active IP Right Cessation
-
1994
- 1994-03-28 CA CA002120055A patent/CA2120055C/en not_active Expired - Lifetime
- 1994-05-25 CN CN94105824A patent/CN1109964C/zh not_active Expired - Lifetime
- 1994-06-21 JP JP6138752A patent/JPH0744286A/ja active Pending
- 1994-06-24 KR KR1019940014694A patent/KR0128275B1/ko not_active IP Right Cessation
- 1994-06-24 MY MYPI94001647A patent/MY111524A/en unknown
- 1994-06-24 AU AU65911/94A patent/AU685455B2/en not_active Ceased
- 1994-06-30 EP EP94304824A patent/EP0636964B1/en not_active Expired - Lifetime
- 1994-06-30 AT AT94304824T patent/ATE223588T1/de not_active IP Right Cessation
- 1994-06-30 ES ES94304824T patent/ES2181701T3/es not_active Expired - Lifetime
- 1994-07-26 PE PE1994247603A patent/PE9396A1/es not_active Application Discontinuation
- 1994-07-26 BR BR9402942A patent/BR9402942A/pt not_active IP Right Cessation
-
1997
- 1997-10-02 AU AU39891/97A patent/AU716678B2/en not_active Ceased
Also Published As
Publication number | Publication date |
---|---|
US5548763A (en) | 1996-08-20 |
CN1102717A (zh) | 1995-05-17 |
MY111524A (en) | 2000-07-31 |
TW495064U (en) | 2002-07-11 |
PE9396A1 (es) | 1996-04-04 |
BR9402942A (pt) | 1995-06-20 |
AU3989197A (en) | 1997-12-18 |
AU6591194A (en) | 1995-01-05 |
KR950003998A (ko) | 1995-02-17 |
AU716678B2 (en) | 2000-03-02 |
JPH0744286A (ja) | 1995-02-14 |
EP0636964A3 (en) | 1996-12-27 |
ES2181701T3 (es) | 2003-03-01 |
EP0636964B1 (en) | 2002-09-04 |
ATE223588T1 (de) | 2002-09-15 |
CN1109964C (zh) | 2003-05-28 |
CA2120055C (en) | 1998-04-14 |
AU685455B2 (en) | 1998-01-22 |
EP0636964A2 (en) | 1995-02-01 |
CA2120055A1 (en) | 1995-01-27 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR0128275B1 (ko) | 컴퓨터 시스템과그의 전력사용 관리방법, 인터럽트 제어기의 베이스 어드레스 상태 확인방법과 씨피유 상태보존 및 복원방법 | |
KR0167810B1 (ko) | 컴퓨터 시스템 및 그의 상태 보관방법 | |
US5513359A (en) | Desktop computer having a single-switch suspend/resume function | |
US5497494A (en) | Method for saving and restoring the state of a CPU executing code in protected mode | |
KR100196883B1 (ko) | 컴퓨터 시스템 | |
KR100196893B1 (ko) | 컴퓨터 시스템 | |
KR100190736B1 (ko) | 컴퓨터 시스템 | |
KR100232314B1 (ko) | 컴퓨터 시스템 | |
KR100218613B1 (ko) | 컴퓨터시스템및글리치회로 | |
KR100188501B1 (ko) | 다수의 사용자 및 윈도에 기초한 컴퓨터 시스템 및 다수의 사용자에 기초한 컴퓨터 시스템을 제공하는 방법 | |
JP4028605B2 (ja) | Sormセッションを有するコンピュータ・システム及び方法 | |
US5758174A (en) | Computer system having a plurality of stored system capability states from which to resume | |
US5551043A (en) | Standby checkpoint to prevent data loss | |
KR100207884B1 (ko) | 컴퓨터 시스템, 코드 실행 제어 방법, 및 컴퓨터 시스템 전력 관리 방법 | |
AU732436B2 (en) | Desktop computer system having multi-level power management |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A201 | Request for examination | ||
E701 | Decision to grant or registration of patent right | ||
GRNT | Written decision to grant | ||
FPAY | Annual fee payment |
Payment date: 20050929 Year of fee payment: 9 |
|
LAPS | Lapse due to unpaid annual fee |