KR0167810B1 - 컴퓨터 시스템 및 그의 상태 보관방법 - Google Patents

컴퓨터 시스템 및 그의 상태 보관방법 Download PDF

Info

Publication number
KR0167810B1
KR0167810B1 KR1019940014715A KR19940014715A KR0167810B1 KR 0167810 B1 KR0167810 B1 KR 0167810B1 KR 1019940014715 A KR1019940014715 A KR 1019940014715A KR 19940014715 A KR19940014715 A KR 19940014715A KR 0167810 B1 KR0167810 B1 KR 0167810B1
Authority
KR
South Korea
Prior art keywords
state
power
memory
interrupt
cpu
Prior art date
Application number
KR1019940014715A
Other languages
English (en)
Other versions
KR950004164A (ko
Inventor
리 콤스 제임스
토마스 크럼프 드와이네
테일러 팬코스트 스티븐
Original Assignee
윌리암 티. 엘리스
인터내셔널 비지네스 머신즈 코포레이션
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 윌리암 티. 엘리스, 인터내셔널 비지네스 머신즈 코포레이션 filed Critical 윌리암 티. 엘리스
Publication of KR950004164A publication Critical patent/KR950004164A/ko
Application granted granted Critical
Publication of KR0167810B1 publication Critical patent/KR0167810B1/ko

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/44Arrangements for executing specific programs
    • G06F9/4401Bootstrapping
    • G06F9/4418Suspend and resume; Hibernate and awake

Abstract

본 발명은 컴퓨터 시스템 상태를 중지 및 재개(suspend and resume)시킬 수 있는 능력을 가진 데스크탑 컴퓨터 시스템에 관한 것이다. 중지된 시스템 상태는 시스템 하드 화일에 기록되어. 시스템 전력이 제거되므로서, 시스템은 전원으로부터의 전력 공급이 필요치 않은 중지상태가 될 수 있다.

Description

컴퓨터 시스템 및 그의 상태 보관방법
본 발명은 컴퓨터의 시스템 구조에 관한 것으로 특히, 전원이 시스템 전력을 제거할 수 있도록 중지되는 시스템의 상태를 시스템 하드 파일(system hard file)에 저장하므로서 컴퓨터 시스템의 상태를 중지 및 재개시킬 수 있는 데스크탑 컴퓨터 시스템에 관한 것이다.
퍼스널 컴퓨터 시스템은 본 기술분야에서 잘 알려져 있다. 일반적으로 퍼스널 컴퓨터 시스템 특히, IBM 퍼스널 컴퓨터는 오늘날 현대 사회의 많은 분야에 컴퓨터 파워(computer power)을 제공하기 위해 광범위하게 사용된다. 퍼스널 컴퓨터는 전형적으로 데스크탑(desktop), 플로워 스탠딩(floor standing) 또는 휴대용(portable) 마이크로 컴퓨터로 정의될 수 있는데, 이들은 하나의 중앙처리장치(CPU), 휘발성 메모리(volatile memory) 및 비휘발성 메모리(non-volatile memory)(RAM, BIOS ROM 등), 시스템 모니터, 키보드, 하나 또는 그 이상의 플렉시블 디스켓 드라이브(flexible diskette drives), 고정형 디스크 저장장치 드라이브(fixed disk storage drive)(하드 디스크로 알려짐), 소위 마우스(mouse)로 일컬어지는 포인팅 장치(pointing devices), 및 프린터(선택적임)를 포함한다. 이러한 시스템의 두드러진 특징 중의 하나는 이들 구성요소들을 전기적으로 접속시키기 위하여 마더보드(motherboard) 혹은 시스템 플래이너(system planar)를 사용한다는 것이다. 또한 이러한 시스템은 주로 단일 사용자에게 독립적인 계산능력(computing power)을 제공하도록 설계되었으며, 개인이나 혹은 소규모 사업체가 구입할 수 있을 정도로 저렴하다. 이러한 퍼스널 컴퓨터 시스템의 예로는 IBM사의 PERSONAL COMPUTER AT 및 IBM사의 PERSONAL SYSREM/1(IBM PS/1)등이 있다.
퍼스널 컴퓨터 시스템은 전형적으로 소프트웨어(software)를 실행하여, 문서처리(word processing), 스프레드 시트(spread-sheets)를 통한 데이터의 조작(manipulation of data), 데이터베이스를 이용한 데이터 수집 및 관계 설정, 그래픽 디스플레이(displays of graphics), 시스템 설계 소프트웨어(system-design software)를 사용한 전기적 혹은 기계적 시스템 설계와 같은, 다양한 동작들을 수행한다.
IBM PS/1 및 PS/2는 한 장소에서 사용하도록 설계된 데스크탑 컴퓨터이다. 예를 들면, 오늘날 많은 사람들이 그들의 책상이나 작업실에 데스크탑 컴퓨터를 가지고 있다. 데스크탑 컴퓨터는 전형적으로 한 장소에 설치된 후에 이동 없이 한명 혹은 다수의 사용자에 의해 사용된다.
데스크탑 시스템은 네크워크 및 비네트워크 컴퓨터 시스템으로 분류될 수 있다. 네트워크 컴퓨터 시스템은 대형 컴퓨터 시스템의 일부이며, 근거리망(LANs) 혹은 광역망(WANs)을 통해 다른 컴퓨터 혹은 서버(servers)에 접속된다. 이들 회로망은 특정 인터페이스 및 프로토콜을 사용하여, 컴퓨터들이 효율적으로 데이터 및 프로그램을 공유하도록 한다. 업무용 데스크탑 컴퓨터 시스템은 전형적으로 네트워크 컴퓨터 시스템이다. 반면에, 비네트워크 컴퓨터는 어떠한 다른 컴퓨터와도 접속되지 않는다. 한 컴퓨터에서 다른 컴퓨터로의 데이터 전송은 한 장소의 컴퓨터에서 플렉시블 디스켓에 데이터를 기록하고, 다른 장소의 컴퓨터에서 그 플렉시블 디스켓의 데이터를 판독하므로서 이루어진다. 일반 가정에서 사용되는 데스크탑 컴퓨터는 전형적으로 비네트워크 컴퓨터이다.
한 장소에서만 사용되도록 설계된 데스크탑 컴퓨터와는 달리, 휴대용 컴퓨터는 사용자가 휴대할 수 있도록 설계되어 다수의 장소에서도 사용이 가능한데, 이 컴퓨터는 그 크기에 따라 랩탑 컴퓨터(laptop computers) 혹은 노트북 컴퓨터(notebook computers)로 알려져 있으며, IBM사의 PS/2 L40 ThinkPad와는 같은 것이 있다. 예를 들면, 판매원은 그의 책상에서 노트북 컴퓨터를 사용하여 판매 계획에 대한 보고서를 작성할 수 있다. 이 판매원이 그의 책상에서 회의 장소로 이동해야 하는 경우, 현재의 작업을 일시 중지한 채 이 노트북 컴퓨터를 휴대하고 회의 장소로 갈 수 있다. 일단 회의가 시작되면, 이 판매원은 이 컴퓨터를 꺼내어 소프트웨어를 재실행함으로써, 회의 도중 정보를 불러내거나 혹은 기록할 수 있다. 또다른 예를 들면, 학생은 강의 시간까지 집에서 노트북 컴퓨터를 이용하여 학기말 리포트를 작성하고, 그 컴퓨터를 강의실에 휴대하고 가서 강의를 기록할 수 있다.
비록 사용자가 휴대용 컴퓨터를 사무실에서 사용하기 위해 사무실 LAN에 접속시키는 경우도 있지만, 전형적으로 휴대용 컴퓨터는 비네크위크 컴퓨터이다.
휴대용 컴퓨터는 데스크탑 컴퓨터와 여러 가지 면에서 다르다. 휴대용 컴퓨터는 전형적으로 재충전 배터리(rechargeable batteries)로 전력을 공급받는다. 사용자는 콘센트(wall-plug)로부터의 전기를 사용하여 배터리를 충전하며, 배터리의 재충전이 필요할 때까지 컴퓨터를 사용한 후 재충전한다. 배터리가 재충전되는 동안에는 휴대용 컴퓨터를 이동시킬 수 없다. 이 컴퓨터의 이동은 전원 코드의 길이로 인해 제약을 받는다. 따라서, 재충전 배터리를 구비한 컴퓨터는 배터리가 충분히 재충전될 때까지는 휴대할 수 없게 된다. 회중 전등(flashlight)이나 다른 배터리 전원장치처럼, 휴대용 컴퓨터가 전력을 많이 소비할수록 배터리 재충전시까지 컴퓨터를 사용할 수 있는 시간은 더 짧아진다. 따라서, 전력 소비는 휴대용 컴퓨터 구입시에 사용자가 고려하는 중요한 요소이며, 당연히 휴대용 컴퓨터 업계에서 중요한 문제이다. 그러므로, 컴퓨터 업계에서는 보다 적은 전력을 사용하는 휴대용 컴퓨터를 개발하기 위해 많은 시간과 비용을 투자하고 있다.
그러나, 여기에는 트레이드 오프(trade off)가 있다. 저전력 컴퓨터는 고가의 저전력 구성요소(low-power components)를 사용해야 하며, 이 저전력 구성요소는 고전력 구성요소가 컴퓨터 커맨드(command)를 실행하는 속도만큼 신속하게 커맨드를 실행할 수 없다. 더구나, 휴대용 컴퓨터는 고가의 구성요소를 사용하는 외에 전형적으로 설계가 복잡하므로 비용은 더욱 증가된다.
이 휴대용 컴퓨터와 비교해 데스크탑 컴퓨터는 주로 콘센트로부터 전력을 공급 받는다. 데스크탑 컴퓨터는, 실시간 클록(real-time clock)을 백업(back up)하기위해 사용되는 아주 소형의 배터리(재충전 없이 몇 년 동안 사용할 수 있음)을 제외하고는 저전력 배터리를 가지지 않는다. 결과적으로, 데스크탑 컴퓨터는 신속하게 동작하고 고전력이면서 저가인 구성요소를 사용한다. 요약하면, 휴대용 컴퓨터는 적은 전력을 사용하지만, 전형적으로 많은 전력을 사용하는 데스크탑 컴퓨터와 같은 강력한 계산능력을 가지지는 못한다.
오늘날과 같이 에너지 소비에 민감한 사회에서, 데스크탑 컴퓨터를 하루종일 켜놓은 것에 대한 간단한 대안이 있다. 한가지 대안은 휴대용 컴퓨터에 적용된 기술이다. 휴대용 컴퓨터가 소정 시간(통상, 수 분)동안 유휴 상태(idle state)인 경우, 이 컴퓨터는 고정형 디스크 저장장치 내의 고정형 디스크 회전과, 디스플레이(display) 발생을 자동적으로 중단하는 것이다. 이는 전력을 절약하는데 유효하다.
휴대용 컴퓨터는 또한, 배터리 전력을 절약하기 위해 다른 복잡한 방법을 사용하기도 한다. 시스템이 주어진 시간 동안 유휴 상태인 경우, 몇몇 휴대용 컴퓨터는 데이터 손실 없이 복원될 수 있는 방식으로 구성요소를 턴오프(turn-off)하도록 설계된다. 휴대용 컴퓨터는 CPU 및 기타 다른 회로에는 전력을 공급하지 않고 메모리에의 전력만을 유지시키는 특별한 배터리 회로를 구비하여 메모리에서의 데이터 손실을 방지한다. 이러한 특별한 배터리 회로로 인하여 비용뿐만 아니라, 인쇄 회로 기판의 복잡성 및 시스템 구성요소의 수가 증가된다. 중지/재개 기능(suspend/resume function)을 구현하는 또 다른 방법은 SL 패밀리(family)로 불리는 특별한 프로세서 패밀리의 CPU를 사용하는 것이다. SL CPU는 일반 CPU와 상이하게 설계되며, 설계자가 배터리 전력 절약 기능을 용이하게 구현할 수 있도록 특수 커맨드를 가진다. 또한, 휴대용 컴퓨터는 고가인 새도우 레지스터(shadow register)를 전형적으로 구비하여 전형적인 컴퓨터 시스템에서 볼 수 있는 다수의 기록 전용 레지스터(write-only registers)를 저장한다. 이러한 특징은 인쇄 회로기판 설계의 비용과 복잡성을 증가시키며, 컴퓨터 시스템 구성요소의 수도 증가시킨다. 더구나, 비(非) SL 80386 혹은 80486의 사애를 저장하는 것은 불가능한 것으로 일반적으로 알려져 있다.
휴대용 컴퓨터와 데스크탑 컴퓨터는 상술한 바와 같은 차이점을 가지므로, 수요자는 노트북 컴퓨터 및 랩탑 컴퓨터가 데스크탑 컴퓨터보다 고가일 것이라 생각하며, 데스크탑 컴퓨터는 저가이면서 강력한 계산능력을 가지리라 기대한다. 따라서, 휴대용 컴퓨터에서 사용되는 고가이며 복잡한 기술을 사용하여 중지/재개 방안(suspend/resume scheme)을 구현하는 데스크탑 컴퓨터는 너무 고가로 되어 데스크탑 시장에서는 팔리지 않는다. 그러므로, 데스크탑 설계시 전력 절약을 구현함에 있어서는, 전형적으로 기존의 구성요소를 이용하거나 혹은 적어도 데스크탑 시스템에 사용되는 표준 구성요소만큼 강력한 새로운 구성요소를 사용한다.
더욱이, 네스워크 데스크탑 시스템과 비네트워크 데스크탑 시스템은 상이한 요건을 갖는다. 몇몇 LAN 프로토콜은 네트워크의 정상적인 동작을 위해 컴퓨터 시스템내의 LAN 하드웨어에 대한 전력 공급이 유지될 것을 요구한다. 비네크워크 데스크탑 시스템은 LAN 하드웨어가 없으므로, 이러한 시스템에서 LAN의 실패(failure)는 문제되지 않는다.
그러므로, 휴대용 시스템과 유사하거나 혹은 보다 성능이 뛰어난 전력 관리 특징(power management features)을 데스크탑 컴퓨터 시스템에 제공하는 것이 바람직하다.
또한, 유사한 특징을 지닌 휴대용 컴퓨터 시스템에 사용되는 고가의 구성요소 및 복잡한 설계를 사용하지 않으면서, 데스크탑 컴퓨터에 전력 관리 능력을 제공하는 것이 바람직하다.
또한, 유사한 특징을 지닌 휴대용 컴퓨터 시스템에 사용되는 고가의 구성요소 및 복잡한 설계를 사용하지 않으면서, 비(非)SL 80386 혹은 80486의 상태를 저장하는 것이 바람직하다.
EPA는 에너지를 효율적으로 사용하는 컴퓨터(energy-efficient computers)에 대한 지침(guideline)을 공포해 왔다. EPA는 컴퓨터가 그린(Green) 즉, 에너지를 효율적으로 사용하는 것으로 간주되는 요건, 즉 컴퓨터 시스템의 EPA 에너지 스타 요건(energy star requirements : EPA)을 설정했다. 컴퓨터가 30 와트(watts)보다 적은 전력을 소비하는 모드(mode)을 가지거나 모니터(monitor)가 30 와트보다 적은 전력을 소비하는 모드를 가지는 경우, 혹은 컴퓨터와 모니터가 각각 30 와트보다 적은 전력을 소비하는 경우에 컴퓨터는 EPA Energy Star 라벨을 부착할 수 있다. 개별 제조자와의 EPA 양해 각서(Memorandums of Umderstanding)에는 전력 요건이 제시되어 있다. 데스크탑 컴퓨터는 전형적으로 이러한 능력을 갖도록 설계되지는 않는다.
그러므로, 그린 표준을 만족하는 데스크탑 컴퓨터를 제공하는 것이 바람직하다.
또한, 에너지 절약 시스템(energy-conservation system)을 설계함에 있어 컴퓨터 시스템이 네트워크 데스크탑 컴퓨터인지 혹은 비네크워크 데스크탑 컴퓨터인지를 고려하는 것이 바람직하다.
컴퓨터는 턴온(turn-on)될 때 전형적으로 부팅(booting)과정을 거친다. 컴퓨터가 부팅될 때, 첫 동작은 파워온 셀프 테스트(power-on self-test: POST)로, 컴퓨터가 올바르게 동작하는지를 확인하기 위한 다양한 테스트를 실행한다. POST 수행후에 컴퓨터는 전형적으로 IBM사의 PC-DOS와 같은 운영체제(operating system: OS)을 적재(loading)한다. 다수의 컴퓨터들은, OS가 적재된 후에, 마이크로소프트사의 윈도우즈(Microsoft's Windows)와 같은 그래픽 사용자 인터페이스(GUI)를 적재한다. 그 다음, 사용자는 응용 소프트웨어를 개방(open)하여 작업파일(working files)을 적재하여야 한다. 이러한 전 과정은 상당한 시간(어떤 경우에는, 수 분)이 걸릴 수 있다.
컴퓨터 시스템이 부팅되고 OS, GUI 및 응용 프로그램을 적재하는 것을 기다리는 사용자에게 수분이 비록 많지 않은 시간일지 모르지만, 이 시간은 비생산적이고 지루하며, 컴퓨터를 턴오프(turn-off)하여 전력을 절약하는 것을 매우 불편하게 하여 사용자가 전력을 절약하는 것을 어렵게 만든다. 즉, 수동 전력 관리 방안(manual power management schemes)은 이러한 사용상의 불편함(usability penalties)으로 인하여 실용적이지 못하다.
따라서, 유용성을 크게 해치지 않으면서 전력 관리 능력을 가지는 데스크탑 컴퓨터를 제공하는 것이 바람직하다. 즉, 전력 절약 모드(power-conservation mode)를 가지는 컴퓨터 시스템으로서, 컴퓨터 시스템을 재시작(restart)하는데 걸리는 시간보다 적으면서 허용가능한 시간 내에 재개(resume)될 수 있는 컴퓨터 시스템을 제공하는 것이 바람직하다.
가끔 컴퓨터 상에서 응용 프로그램이 실행되고 있는 동안, 사용자는 데스크탑 컴퓨터를 유휴 상태로 둘 수 있다. 예를 들면, 사용자가 판매 보고서를 준비하기 위해 문서 처리 프로그램과 스프레드시트 프로그램을 동시에 사용중일 때, 전화벨이 울려 컴퓨터 책상으로부터 멀리 불려간다 하더라도, 컴퓨터는 여전히 응용 프로그램을 실행한다. 효과적으로 전력을 관리하게 위해서는 전력을 절약함과 동시에 예를 들어, 응용 프로그램 실행 중에 컴퓨터 자신이 전력 공급을 중단하는 경우에 발생할 수 있는 데이터 손실(data loss)을 막을 수 있어야 한다. 더구나, 현존 소프트웨어 응용 프로그램을 이들이 인터럽트(interrupt)된 곳으로부터 재개할 수 있도록 이들의 상태를 자동적으로 저장하지 못한다.
따라서, 시스템 상에서 응용 프로그램이 실행되는 동안, 전력 절약 보드로 진입 가능한 컴퓨터를 제공하는 것이 바람직하다. 더 나아가, 이러한 전력 절약 모드가 응용 소프트웨어에 가시적인 것이 바람직하다.
때때로, 데스크탑 컴퓨터의 사용자는 컴퓨터가 잠시 동안 필요치 않다는 것을 알 때가 있다. 이때 컴퓨터가 전력 절약 모드로 진입하려면 유휴 상태가 충분히 긴 시간 계속되어야 한다고 판단되는 경우, 컴퓨터 사용자는 전력을 절약하기 위해 컴퓨터를 수동으로 전력 절약 모드로 진입시킬 수 있는 것이 바람직하다.
따라서, 응용 프로그램을 빠져나오지 않고서도 사용자가 수동으로 데스크탑 컴퓨터를 전력 절약 모드로 진입시킬 수 있고, 컴퓨터 전원이 턴오프 되지 않았던 것처럼 응용 프로그램 사용 상태를 다시 재개(resume)할 수 있도록 하는 것이 바람직하다.
전형적인 휴대용 컴퓨터는 전력 제어를 위한 스위치(switch)와 중지/재개 기능을 구현하기 위한 또다른 스위치를 가지고 있다. 이로 인해 사용자의 혼란이 발생되며, 휴대용 컴퓨터의 비용과 복잡성이 증가된다. 따라서, 다수의 버튼(buttons)을 사용하지 않고서도 전술한 전력 절약 능력을 가지는 컴퓨터를 제공하는 것이 바람직하다.
제1도는 본 발명이 구체화되는 퍼스널 컴퓨터의 사시도이다.
제2도는 제1도의 퍼스널 컴퓨터의 샤시, 커버, 전자기계식 직접 액세스 저장 장치 및 플래이너 보드 등의 구성요소들에 대한 분해 사시도로서, 이 구성요소들간의 관계를 도시하고 있다.
제3도는 제1도 및 제2도 퍼스널 컴퓨터의 구성요소에 대한 블럭도이다.
제4도는 본 발명에 따른 컴퓨터 시스템의 상태도로서, 4가지의 시스템 상태 즉, 정상 상태, 대기 상태, 중지 상태 및 오프 상태를 도시하고 있다.
제5도는 전원중 관련 부분을 도시한 블럭도이다.
제6도는 본 발명의 단일 스위치에 의한 중지/재개 기능을 위해 필요한 하드웨어의 개략도로서, 다른 도면들과의 각종 인터페이스 또한 도시하고 있다.
제7도는 제6도의 도시된 프로그램 가능 어레이 로직(PAL) 장치인 U2의 한 상태 기계(state machine)의 상태도이다.
제8도는 본 발명의 파워업 루틴(Power-up Routine)을 일반적으로 도시한 흐름도이다.
제9도는 대략 매초마다 APM에 의해 호출되는 감독 루틴(Supervisor Routine)의 상세한 흐름도이다.
제10도는 본 발명의 중지 루틴(Suspend Routine)의 상세한 흐름도이다.
제11도는 본 발명의 부트업 루틴(Boot-up Routine)의 상세한 흐름도이다.
제12도는 본 발명의 재개 루틴(Resume Routine)의 상세한 흐름도이다.
제13도는 본 발명의 CPU 상태 저장 루틴(Save CPU State Routine)의 상세한 흐름도이다.
제14도는 본 발명의 CPU 상태 복원 루틴(Restore CPU State Routine)의 상세한 흐름도이다.
제15도는 본 발명의 8959 상태 저장 루틴(Save 8959 State Routine)의 상세한 흐름도이다.
* 도면의 주요부분에 대한 부호의 설명
17 : 전원 21 : 스위치
56 : 비디오 제어기 60 : 캐시
92 : 인터럽트 제어기 102 : 타이머
106 : 전력관리부
본 발명에 따르면, 중지 프로세스 동안, 컴퓨터 시스템의 상태는 시스템 하드 드라이브에 저장된다. 추가적으로, 전원에 의한 시스템 전력의 조정(regulation)은 CPU에 의해 제어된다.
시스템의 상태의 저장은 먼저 CPU 상에서 현재 실행중인 코드를 인터럽트한 후, 시스템의 상태를 확인하고, 컴퓨터 시스템의 상태를 시스템 하드 드라이브에 기록하므로서 이루어진다. 컴퓨터 시스템이 상태가 안전하게 하드 드라이브에 저장된 후, CPU는 전원이 조정 시스템 전력(regulated system power)을 공급하는 것을 중단하도록 만든다. 그러나, 일단 데이터가 하드 드라이브에 기록되면, 이 데이터는 사실상 영구히 저장되므로, 시스템 전력이 공급되지 않더라도 하드 드라이브에 저장된 시스템 데이터에 영향을 미치지 않는다.
컴퓨터 시스템의 상태는 수 시간, 수 일, 수주일, 몇 달 혹은 심지어 몇 년동안 하드 드라이브에 저장되어 유지될 수 있다.
컴퓨터 시스템 상태의 복원은 먼저 전원이 일단 조정 시스템 전력을 다시 공급한 후 하드 드라이브로부터 이 컴퓨터 시스템의 상태를 판독하고, 이 판독된 값들을 적절한 장소(proper places)에 적재하므로서 수행된다. 예를 들면, 레지스터 데이터는 다시 레지스터에, 비디오 이미지 데이터는 비디오 메모리에, CPU 레지스터 데이터는 CPU에 기록된다. 그 다음, 운영체제는 진부한 시스템 값(stale system values)을 갱신한다. 예를 들면, 시스템 클록은 적절한 시간으로 재설정되어야 한다.. 마지막으로, 시스템이 인터럽트될 때 CPU상에서 실행되던 코드는 중지/재개 프로세스에 의해 거의 영향을 받지 않는 방식으로 재개된다.
중지와 재개는 매우 신속하므로, 하드 디스크로의 중지 및 재개 프로세스는 사용자에게 상당 시간을 절약하여 준다. 8메가 바이트(Mbyte)의 시스템 RAM 및 1메가 바이트의 비디오 메모리를 구비한 시스템을 중지하기 위해서는 약 8초가 걸리고, 동일한 시스템을 재개시키기 위해서는 단지 약 15초가 걸린다. 동일한 시스템이, BIOS로부터 부팅되고, 운영체제와 그래픽 사용자 인터페이스와 응용 프로그램을 적재하고, 응용 파일을 개방하기 위해서는 대략 100초가 걸린다. 따라서, 본 발명의 시간 절약 효과는 분명하다.
더욱이, 사용자가 이른바 메시 데스크탑(messy desktop)을 형성하여, 시스템 상에서 동시에 (문서 처리 응용프로그램, 스프레드 쉬트 응용프로그램, 데이터베이스(database) 응용 프로그램, 텔리팩스(telefax) 응용프로그램, 달력(calendar) 응용 프로그램 등과 같은) 다수의 응용 프로그램을 가진다면 시간 절약 효과는 더욱 증대된다. 본 발명의 중지/재개 능력이 없이 동일한 메시 데스크탑 컴퓨터를 다시 적재하려면 수분(mimutes)이 걸릴 수 있다. 중지/재개 능력을 가지는 경우, 데스크탑이 아무리 메시 하더라도, 시스템을 중지하는데는 약 8초, 재개하는데는 약 15초가 걸린다.
본 발명의 컴퓨터 시스템은 정상 동작 상태(normal operating state), 대기 상태(standby state), 중지 상태(suspend state) 및 오프 상태(off state)라는 4가지 상태를 가지도록 설계된다.
본 발명의 컴퓨터 시스템의 정상 동작 상태는 전형적인 데스크탑 컴퓨터의 정상 동작 상태와 사실상 동일하다, 사용자는 응용 프로그램을 사용할 수 있으며 기본적으로 다른 컴퓨터들처럼 다룰 수 있다. 하나의 차이는, 사용자에게 가시적이며 (BIOS 및 운영체제 내의) 백그라운드에서 운영되는 전력 관리 구동기(power management driver)의 존재이다. 운영체제(OS)내의 전력 관리 구동기 부분은 인텔사 및 마이크로소프트사에 의해 작성된 고급 전력 관리(Advanced power management; APM) 고급 프로그래밍 인터페이스(advanced programming interface)이며, 이는 인텔사의 80X86 패밀리 프로세서 상에서 동작하도록 작성된 대부분의 운영체제에 존재한다. BIOS(APM BIOS)에 있는 전력 관리 구동기 부분은 본 발명에 있어 독특한 것이며, APM OS 구동기와 통신한다. APM OS 구동기와 APM BIOS 루틴은 함께 컴퓨터의 다른 3가지 상태로의/로부터의 변경을 제어한다.
제2상태 즉, 대기 상태는 정상 동작 상태의 전력보다 적은 전력을 사용하지만, 모든 응용 프로그램이 평상시에 실행되는 것처럼 실행되도록 한다. 일반적으로, 대기 상태시 장치들은 그들 각각의 저전력 모드로 배치되며, 이로써 전력이 절약된다. 예를 들면, 하드 디스크내 고정형 디스크의 회전을 멈추고 비디오 신호의 발생을 중단시키므로서 대기 상태에서의 전력을 절약한다.
제3의 상태는 중지 상태(suspend state)(154)이다. 중지 상태(154)에서, 컴퓨터 시스템은 극히 적은 양의 전력만을 소비한다. 중지된 컴퓨터 시스템은 콘센트(wall outlet)로부터 매우 적은 전력을 소비한다. 소비되는 전력은 단지 (시스템의 플러그를 콘센트에 끼우지 않았을 때) 스위치 회로를 유지하기 위한 컴퓨터 시스템내 배터리로부터의 세류 전력(a slight triskle of power)이거나, 혹은 (시스템의 플러그를 콘센트에 끼웠을 때) 전원에서 발생되는 세류 전력이다.
이러한 소량의 전력 사용은 전원이 턴오프 되기 전에, 컴퓨터 시스템 상태를 고정형 디스크 저장 장치(하드 드라이브)에 저장하므로서 이루어진다. 중지 상태에 진입하기 위해, 컴퓨터 시스템은 실행중인 모든 코드(code)를 인터럽트하고 컴퓨터 제어를 전력 관리 구동기로 전달한다. 전력 관리 구동기는 컴퓨터 시스템의 상태를 확인하여 이 상태를 고정형 디스크 저장 장치에 기록한다. CPU 레지스터, CPU 캐시, 세스템 메모리, 시스템 캐시, 비디오 레지스터, 비디오 메모리 및 기타 다른 장치의 레지스터 상태 모두는 고정형 디스크에 기록된다. 시스템 전체 상태는, 응용 프로그램 혹은 다른 실행코드가 이러한 인터럽트에 의해 영향을 받지 않고 복원될 수 있도록 저장된다. 그 다음, 컴퓨터는 컴퓨터가 중지되었음을 나타내는 데이터를 비휘발성 CMOS 메모리에 기록한다. 궁긍적으로, 컴퓨터는 전원으로 하여금 전력 공급을 중단토록 한다. 컴퓨터의 전체 상태는 안전하게 고정형 디스크 저장장치에 저장되며, 시스템 전력은 오프되고, 컴퓨터는 전원으로부터 스위치 회로에 전력을 공급하기 위해 소량의 조정된 세류 전력만을 공급받는다.
어떠한 불리한 결과도 없이 모든 시스템 전력을 제거할 수 있는 컴퓨터 시스템에 있어 중지 상태가 이상적이다. 전력 오프 상태에서 복원할 수 있는 비네트워크 컴퓨터 및 네트워크 컴퓨터가 전형적으로 중지된다.
마지막 상태인 제4상태는 오프 상태(off state)이다. 이 상태에서 전원은 컴퓨터 시스템에 조정 전력 공급을 멈추지만, 이 시스템의 상태는 고정형 디스크로 저장되지 않는다. 오프 상태는 통상적인 방식으로 턴오프된 전형적인 데스크탑 컴퓨터와 사실상 동일하다.
한 상태에서 다른 상태로의 스위칭은 전력 관리 구동기에 의해 처리되며, 전형적으로 단일 스위치, 플래그(flag) 및 2개의 타이머들(비활동(inactivity) 대기 타이머와 비활동 중지 타이머)의 패쇄 이벤트(closure events)를 기본으로 한다. 키보드상의 키 누름, 마우스를 움직임, 마우스 버튼을 누름 혹은 하드 파일 활동(hard file activity)과 같은 사용자 활동(user activity)이 없을 때, 두 타이머는 계수를 시작한다. 시스템의 비활동 대기 타이머가 종료될 때, 이 시스템은 전술한 바와 같은 대기 상태로 진입한다. 시스템의 비활동 중지 타이머가 종료될 때, 이 시스템은 전술한 바와 같은 중지 상태로 진입한다.
전형적으로, 비활동 중지 타이머는 비활동 대기 타이머보다 긴 시간 주기로 설정될 것이다. 따라서, 컴퓨터는 통상적으로 우선 정상 동작 상태에서 대기 상태로 변한다. 그 다음, 컴퓨터 시스템은 또다른 비활동 주기가 경과한 후에 중지 상태로 진입할 것이다. 중지 상태를 용인할 수 없는 네트워크 시스템의 사용자는 비활동 중지 타이머가 결코 경과되지 않도록 선택적으로 설정할 수 있다.
임의의 사용자 활동은 2가지 비활동 타이머(inactivity timers)를 리세트(reset)시키므로서, 사용자가 시스템을 동작시키는 동안에 컴퓨터가 대기 상태 혹은 중지 상태로 진입하지 못하도록 한다.
시스템이 대기 상태에 있을 때, 사용자가 마우스를 움직이거나 혹은 키보드의 키를 누르면, 이 시스템은 대기 상태를 벗어나 정상 동작 상태로 변한다. 이 경우, 비디오 제어기는 비디오 신호를 다시 발생하기 시작하며, 고정형 디스크는 다시 회전한다. 그러나, 시스템이 중지 상태에 있을 때에는, 사용자가 마우스를 움직이거나 혹은 키보드상의 키보드를 누르는 경우, 본 발명의 시스템은 자동적으로 정상 동작 상태로 변하지는 않는다.
시스템은 단일 전력 버튼(single power button)을 가진다. 이 버튼은 컴퓨터 시스템의 턴온, 중지 상태 복원 및 턴오프에 사용될 수 있다. 시스템이 정상 동작 상태 혹은 대기 상태에 있을 때, 사용자가 버튼을 누르면, 컴퓨터는 플래그(flag)값에 따라 중지 상태 혹은 오프 상태로 변한다. 버튼이 눌려졌을 때 플래그가 시스템이 중지되어야 한다고 표시하는 경우, 본 발명의 시스템은 중지되기 시작하여, 결국 중지 상태로 진입한다. 플래그가 버튼이 눌려졌을 때 시스템이 단지 턴오프 되어야 한다고 표시하는 경우, 이 컴퓨터는 단지 오프 상태로 진입한다. 사용자는 플래그를 제어할 수 있다. 즉, 시스템이 정상 동작 상태에 있는 동안 버튼이 눌려질 때, 사용자는 시스템이 중지되는지 혹은 턴오프 되는지를 판정할 수 있다는 것이다. 또한, 운영체제에 전력 관리 구동기가 없을 때, 스위치는 단순한 전원 온/오프 스위치로 동작한다.
컴퓨터 시스템이 오프 상태에 있을 때 전력 버튼을 누르면, 본 발명의 컴퓨터 시스템은 통상적인 방식으로 개시된다. 컴퓨터 시스템이 중지 상태에 있을 때, 전력 버튼을 누르면, 작동자는 정상적으로 시스템을 시작하는지 혹은 중지될 때의 시스템 상태로 시스템을 복원하는지에 대해 선택할 수 있다. 사용작 응용 프로그램을 사용하는 도중에 시스템을 중지한 경우, 사용자는 아마도 컴퓨터 시스템의 상태를 복원하기를 원할 것이다. 그러나 어떤 이유로 사용자가 컴퓨터를 새롭게 시작하고 중지된 시스템 상태를 포기하기를 원하는 경우에는, 상술한 선택이 제공된다.
중지 상태에서 정상 동작 상태로 변경될 때, 본 발명의 시스템은 응용 프로그램이 이러한 인터럽트에 의해 영향받지 않도록 컴퓨터 시스템의 상태를 복원해야만 한다. CPU 레지스터, CPU 캐시, 시스템 메모리, 시스템 캐시, 비디오 레지스터 및 비디오 메모리의 상태는 고정형 디스크로부터 모두 판독되어야 한다. 전체 시스템 상태를 저장하여, 응용 프로그램들로 하여금 그들이 인터럽트 되었던 곳에서 진행되도록 해야 한다.
전력을 절약하기 위해 시스템을 단지 턴오프 시키고 시스템을 다시 턴온 시키는 것에 비해, 중지/재개를 사용하면 상당한 시간 절약 효과를 가져온다.
더욱이, 대기 레벨 혹은 중지 레벨은 그린 컴퓨터 시스템에 대한 EPA Energy Star 요건을 만족시킨다.
본 발명의 상술한 장점 및 다른 장점들은 본 발명의 상세한 설명으로부터 명백하게 이해될 것이다.
본 명세서의 한 부분을 구성하는 첨부 도면에서, 본 발명의 실시예들이 예시되었으며, 전술한 본 발명의 일반적인 설명 및 하기한 본 발명의 상세한 설명과 함께 첨부 도면을 참조하므로서 본 발명의 원리를 이해할 수 있을 것이다.
비록, 본 발명이 본 발명의 바람직한 실시예가 도시된 첨부 도면을 참조하여 이하 상세히 기술될 것이지만, 당업자라면 본 발명의 바람직한 결과를 얻으면서도 다양한 변경을 가할 수 있음을 이해하여야 할 것이다. 따라서, 다음의 설명은 당업자를 대상으로 광범위한 설명적인 내용을 담고 있으며, 본 발명의 제약하려는 것은 아님을 이해해야 할 것이다. 본 발명은 단지 컴퓨터 구조 설계에만 한정되지 않으며, 디지탈 설계, BIOS설계, 보호모드 80486 코드 설계(rpotected mode 80486 code design), 응용 코드 설계, 운영체제 코드 설계, 및 고급 전력 관리 고급 프로그래밍 인터페이스 사용을 포함하는 컴퓨터 시스템의 완전한 설계를 다루고 있다. 본 출원서는 컴퓨터 시스템의 모든 면에 대해 잘 알고 있는 이들을 대상으로 작성되었다.
이하 첨부도면에 본 발명을 구체화한 마이크로컴퓨터 시스템이 도시되어 있으며, 참조번호(10)(제1도)로 표시되어 있다. 전술한 바와 같이, 컴퓨터(10)는 연관된 모니터(11), 키보드(12), 마우스(13), 그리고 프린터 혹은 플로터(14)를 구비하고 있다. 컴퓨터(10)(제2도)는 장식용 외부 부재(16)와 내부 차폐 부재(inner shield member)(18)로 형성된 커버(15)를 가지는데. 이 커버는 전기적으로 전력이 공급되며 디지털 데이터를 처리하고 저장하는 데이터 처리 및 저장 요소를 넣는 밀봉되고 차폐된 용적(an enclosed, shielded volume)을 샤시(19)와 함께 정의한다. 이들 구성요소중 소정의 몇 개는 다층 플래이너(a multilayer planar)(20) 또는 마더보드 상에 장착된다. 다층 플래이너 또는 마더보드는 샤시(19)상에 장착되어, 상술한 구성요소 및 다른 연관된 구성요소들(예 : 플로피 디스크 드라이브, 각종 형태의 직접 액세스 저장장치, 액세서리 카드 혹은 보드 등)을 포함하는 컴퓨터(10)의 구성요소들을 전기적으로 상호 접속하는 수단을 제공한다. 차후에 보다 상세히 기술하는 바와 같이, 마이크로컴퓨터의 오퍼레이팅 요소는 입출력 신호를 전송하거나 그것으로부터 입출력 신호를 전송 받는 수단이 플래이너(20)에 제공된다.
컴퓨터 시스템은 전운(17) 및 전력 버튼(21)(이하, 스위치로 지칭)을 구비한다. 이하 설명되는 바와 같이, 전형적인 시스템의 통상적인 전원 스위치와는 달리, 전력 버튼(21)은 전원(17)으로 및 전원(17)으로부터의 비조정 라인 전력(undergulated line power)을 스위칭하지 않는다. 샤시(19)는 베이스(base)(22), 전면 판넬(front panel)(24), 후면 판넬(rear panel)(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 storage device)이며, 일반적으로 알려진 바와 같이 그 속에 디스켓이 삽입되며 이를 이용하여 데이터를 수신, 저장 및 전송할 수 있다. 하드 디스크(31)는 알려진 바와 같이, 데이터를 저장 및 전송할 수 있는 매체 고정형 직접 액세스 저장장치이다.
상술한 구조를 본 발명과 관련지어 고려하기에 앞서, 퍼스널 컴퓨터 시스템(10)의 일반적인 동작에 대한 개요를 검토하는 것이 좋을 것이다. 제3도를 참조하면, 플래이너(20)에 장착된 구성요소, 플래이너를 I/O 슬롯에 접속하는 접속부 및 퍼스널 컴퓨터의 기타 하드웨어를 포함하는 각종 구성요소를 예시하는, 퍼스널 컴퓨터 시스템의 블럭도가 도시되어 있다. 플래이너에 접속된 시스템 프로세서(40)(또한, CPU(40))는 마이크로프로세서를 포함하며 고속 CPU 로컬 버스(42)에 의해 메모리 제어 장치(46)에 접속되고, 또한 이 메모리 제어장치(46)를 통해 휘발성 랜덤 액세스 메모리(RAM)(53)에 접속된다. 메모리 제어 장치(46)는 메모리 제어기(48), 어드레스 멀티플랙서(50) 및 데이터 버퍼(52)를 포함한다. 메모리 제어 장치(46)는 4개의 RAM 모듈(54)로 대표되는 랜덤 액세스 메모리(53)에 접속된다. 메모리 제어기(48)는 마이크로프로세서(40)로의 어드레스 또한 마이크로프로세서(40)로부터의 어드레스를 특정 RAM(53) 영역으로 맵핑(mapping)하는 논리를 포함한다. 이 논리는 앞서 BIOS에 의해 점유된 RAM을 재요청(reclaim)하기 위해 사용된다. 메모리 제어기(48)는 ROM 선택 신호(ROMSEL)를 발생하여 ROM(88)을 인에이블(enable) 혹은 디스에이블(disable)시킨다. 시스템 프로세서(40)는 임의의 적절한 마이크로프로세서가 사용될 수 있는데, 한가지 적당한 마이크로 프로세서를 들면 인텔사의 80486이다. 인텔 80486은 내부 캐시(internal cache)를 가지므로, CPU(40)가 인텔 80486이라면 CPU 캐시(41)를 구비할 것이다.
본 발명은 특히 제3도 시스템 블럭도를 참조하여 기술되겠지만, 본 발명에 따른 장치 및 방법은 플래이너 보드의 다른 하드웨어 구성에서도 사용될 수 있다. 예를 들면, 시스템 프로세서(40)는 인텔 80286 혹은 80386 마이크로프로세서일 수 있다. 본 명세서에서 사용된 80286, 80386 혹은 80486에 관한 언급은 일반적으로 인텔사의 마이크로프로세서를 의미한다. 그러나, 최근에 다른 제조자들은 인텔 X86 구조의 명령어 집합을 실행할 수 있는 마이크로프로세서를 개발해 왔으며, 상술한 용어는 이 명령어 집합을 실행할 수 있는 여하한 마이크로프로세서를 포함한다. 당업자들이 아는 바와 같이, 초기의 퍼스널 컴퓨터는 전형적으로 시스템 프로세서로 유명한 인텔 8088 혹은 8086 마이크로프로세서를 사용했다. 이들 프로세서는 1메가 바이트(megabyte) 메모리를 어드레스(address)할 수 있는 능력을 가진다. 보다 최근에, 퍼스널 컴퓨터는 고속 인텔 80286, 80386 및 80486 마이크로프로세서를 전형적으로 사용하는데, 이들 프로세서는 저속 8086 마이크로 프로세서를 에뮬레이션하기 위해 가상(virtual) 혹은 실제(real) 모드에서 동작하거나, 혹은 몇몇 모델의 경우 어드레스 지정 범위를 1메가 바이트에서 4기가 바이트(Gigabyte)로 확장하는 보호 모드(protected mode)에서 동작할 수 있다. 본질적으로, 80286, 80386 및 80486의 실제 모드의 특징은 8086과 8088 마이크로프로세서용으로 작성된 소프트웨어에 하드웨어 호환성을 제공하다. 전설한 인텔사 패밀리의 프로세서들은 주로, 486처럼, 전체 유형 명칭(type designator)에서 마지막 세자리 숫자에 의해 식별된다.
제3도에 다시 참조하면, CPU 로컬 버스(42)(데이터, 어드레스 및 제어 버스 포함)는 마이크로프로세서(40), 수치 연산 보조 프로세서(144), 비디오 제어기(56), 시스템 캐시 메모리(60), 그리고 캐시 제어기(62)를 접속시킨다. 비디오 제어기(56)에는 모니터(혹은 비디오 디스플레이 단자)(57) 및 비디오 메모리(58)가 접속된다. 또한, CPU 로컬 버스(42)상에 버퍼(64)가 연결된다. 버퍼(64)는 CPU 로컬 버스(42)에 비해 저속인 시스템 버스(66)에 연결되며, 이 시스템 버스(66)는 어드레스, 데이터 및 제어 버스를 포함한다. 시스템 버스(66)는 버퍼(64)와 다른 버퍼(68) 사이를 연결한다. 시스템 버스(66)는 또한 버스 제어 및 타이밍 장치(70), 및 DMA 장치(71)에 접속된다. DMA 장치(71)는 중앙 중재기(82) 및 DMA 제어기(72)로 구성된다. 부가적인 버퍼(74)는 시스템 버스(66)와 ISA(Industry Standard Architecture) 버스(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(Intergrated 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)를 따라서 디스켓 어댑터(84), IDE 디스크 어댑터(86), 인터럽트 제어기(92), RS-232 어댑터(94), 또한, 여기에 NVRAM으로 표시된 비휘발성 CMOS RAM(96), CMOS 실시간 클록(98), 병렬 어댑터(100), 다수의 타이머(102), 판독 전용 메모리(ROM)(88), 8042(104), 및 전력 관리 회로(106)과 같은, 각종 I/O 어댑터(84)와 다른 구성요소가 연결된다. 8042(104)는 키보드(12) 및 마우스(13)를 인터페이스 하는 조속 마이크로프로세서(slave microprocessor)이다. 전력 관리 회로(106)는 제6도에 도시되었으며, 제6 및 제7도를 참조하여 보다 상세히 기술될 것이다. 판독 전용 메모리(88)는 마이크로프로세서(40)의 운영체제와 I/O장치 사이를 인터페이스 하는데 사용되는 BIOS를 저장한다. ROM(88)에 저장된 BIOS는 RAM(53)으로 복사되어 BIOS의 실행시간을 감소시킬 수 있다. ROM(88)은 또한 (ROMSEL 신호에 따라) 메모리 제어기(48)에 응답한다. ROM(88)이 메모리 제어기(48)에 의해 인에이블되는 경우, BIOS가 ROM으로부터 실행된다. ROM(88)이 메모리 제어기(48)에 의해 디스에이블되는 경우에는, ROM은 마이크로프로세서(40)로부터의 어드레스 조회(address inquiries)에 응답하지 않는다. 즉, BIOS는 RAM으로부터 실행된다.
실시간 클록(98)은 당일의 시간 계산에 사용되고, NVRAM(96)은 시스템 구성 데이터(system configuration data)를 저장하기 위해 사용된다. 즉, NVRAM(96)은 시스템의 현재 구성을 나타내는 값을 포함한다. 예를 들면, NVRAM(96)은 고정형 디스크 혹은 디스켓의 용량, 디스플레이의 유형, 메모리 용량, 시간, 날짜 등의 정보를 저장한다. 특히 중요한 것은, NVRAM은 (하나의 비트일 수 있는) 데이터를 저장하는데, 메모리 제어기(48)는 이 데이터를 이용하여, BIOS가 RAM 혹은 RAM으로 부터 실행되는지와 BIOS RAM에 의해 사용되도록 예정된 RAM을 재요청할 것인지 여부를 판정한다. 더욱이, 세트 구성(SET Configuration)과 같은 특수 구성 프로그램이 실행될 때마다, 이 데이터는 NVRAM에 저장된다. 세트 구성 프로그램의 목적은 시스템 구성의 특징을 나타내는 값을 NVRAM에 저장하는 것이다.
전술한 장치의 거의 모두는 휘발성 레지스터를 포함한다. 도면을 간단히 나타내기 위해, 특정 장치의 레지스터는 그 장치를 가리키는 방법으로 표시된다. 예를 들면, CPU 레지스터는 CPU(40) 레지스터로, 비디오 제어기 레지스터는 비디오 제어기(56) 레지스터로 칭한다.
전술한 바와 같이, 컴퓨터는 커버(15)와 샤시(19)를 통해 밀봉되고 차폐된 용적을 형성하여, 마이크로컴퓨터의 상술한 구성요소들을 포함한다. 커버(15)는 바람직하게, 주조성 합성물질(modable synthetic material)로 제조된 하나의 몰드 구성요소(molded component)인 외부 장식용 커버 부재(16)와, 장식용 커버 부재의 형상에 맞취 형성된 금속 박판 라이너(a metallic thin sheet liner)(18)로 형성된다. 그러나, 커버는 다른 공지의 방식으로 제조될 수 있으며, 또한 본 발명의 유용성은 개시된 유형의 밀봉체(enclosures)에 한정되지 않는다.
[동작 상태]
이제 제4도를 참조하면, 본 발명의 컴퓨터 시스템의 상태도(state diagram)가 도시되어 있다. 본 발명의 컴퓨터 시스템(10)은 정상 동작 상태(150), 대기 상태(152), 중지 상태(154), 오프 상태(156)라는 4가지 상태를 가진다. 제4도에 도시된 상태들간의 변경(transitions)는 바람직한 실시예의 설명을 위한 것일 뿐, 본 발명을 한정하려는 것은 아니다. 따라서, 부가적인 이벤트(event)가 상태 변경을 일으키는데 사용될 수 있다.
본 발명의 컴퓨터 시스템(10)의 정상 동작 상태(150)는 전형적인 데스크탑 컴퓨터의 정상 동작 상태와 사실상 동일하다. 사용자는 응용 프로그램을 사용할 수 있고, 기본적으로 임의의 다른 컴퓨터들처럼 다룰 수가 있다. 사용자가 알 수 있는 하나의 차이점은 운용체제 내에 전력 관리 구동기(APM OS 구동기)가 존재한다는 것으로서, 이 전력 관리 구동기는 백그라운드 및 다양한 APM BIOS 루틴에서 실행된다. APM BIOS 루틴은 차후에 기술될 것이며, 중지(Suspend) 루틴, 재개(Resume) 루틴, 부트업(Boot-up) 루틴, 감독(supervisor) 루틴, CPU 상태 저장(Save CPU State) 루틴, 그리고 CPU 상태 복원(Restore CPU State) 루틴을 포함한다. 도면에 도시되지 않은 APM BIOS 루틴은 APM BIOS 라우팅 루틴(APM BIOS Routing R루outine)이다. APM BIOS 라우팅 루틴은 본질적으로 APM OS 구동기로부터 커맨드를 수신하여 적절한 APM BIOS 루틴을 호출한다. 예를 들면, APM OS 구동기가 중지 커맨드를 발생할 때, APM BIOS 라우팅 루틴은 중지 루틴을 호출한다. 다른 예를 들면, APM OS 구동기가 이벤트 획득 커맨드(Get Event command)를 발생할 때마다, APM BIOS 라우팅 루틴은 감독 루틴을 호출한다. 이들 루틴은 BIOS내 위치하며 BIOS가 새도우(shadow)될 때 같이 새도우된다. OS내의 전력관리 구동기와 APM BIOS 루틴은 컴퓨터의 4가지 상태간의 변경을 제어한다. 문맥에 따라 다를 수도 있지만 단어 APM은 일반적으로 APM OS 구동기를 지칭한다.
제2상태 즉, 대기 상태(152)는 정상 동작 상태(150)보다 적은 전력을 사용하면서도, 응용 프로그램이 통상 실행되던 것처럼 실행되도록 한다. 일반적으로, 대기 상태(152)에서의 전력은 장치를 제각기의 저전력 모드로 배치하는 코드에 의해 절약된다. 바람직한 실시예에서는, 대기 상태(152)에서 디스트 저장자치(31)내에서의 고정형 디스크의 회전(도시되지 않음)을 중단하고, 비디오 신호의 발생을 중단하므로서 전력을 절약하는데, 이는 차후에 보다 상세히 기술될 것이다. 그러나, 이는 본 발명을 한정하려는 것이 아니며, 전력 소비의 감소를 위해 CPU 클록을 느리게하거나 혹은 중단시키는 것과 같은 다른 방법을 사용할 수도 있다.
바람직한 실시예에서, 전력은 2개의 독립된 방식으로 절약된다. 먼저, 정상 동작 상태(150)에서, 고정형 디스크 저장장치(31)내에서 고정형 디스크는 전형적으로 분당 3600 회전수(RPM)로 일정하게 회전한다. 대기 상태(152)에서, IDE 디스크 제어기(86)에는 고정형 디스크 저장장치(31)를 저전력 모드로 진입시키는 (즉, 고정형 디스크 저장장치(31)내에서의 고정형 디스크의 회전을 중단시키는) 커맨드가 주어지며, 이에 따라 고정형 디스크가 회전하는 동안 고정형 디스크 저장장치(31)내의 모터(도시되지 않음)가 일반적으로 소비하는 전력을 절약한다.
두 번째로, 정상 동작 상태(150)에서, 컴퓨터 시스템의 비디오 제어기(56)는 비디오 디스플레이 단자(57)상에 표시되는 이미지에 대응하는 비디오 신호(본 기술분야에서 잘 알려진 바와 같이, HSYNC, VSYNC, R, G, B 등)를 끊임없이 발생한다. 대기 상태(152)에서, 비디오 제어기(56)는 비디오 신호 발생을 중단하며, 이에 따라 비디오 제어기(56)에 의해 통상 소비되는 전력을 절약한다. HSYNC, VSYNC, R, G 및 B는 모두 대략 0.00 VDC로 구동된다. VESA 방식 모니터(Video Electronics Standards Association compliant monitor)는 스스로 턴오프 되므로 전력을 더 절약할 수 있다.
몇몇 시스템은 스크린 절약장치(screen saver)를 구비하여, 스크린(57)을 어두워지게 하므로서 비디오 디스플레이 터미널의 전면에서의 포스포 번인(phosphor burn-in)을 방지한다. 대부분의 이러한 시스템에서, 비디오 제어기(56)는 여전히 단순히 어두운 스크린 혹은 동적 디스플레이(dynamic display)에 대응하는 비디오 신호를 발생한다. 따라서, 스크린 절약장치를 실행하는 컴퓨터 시스템이라도 이 비디오 신호를 발생하기 위하여 여전히 전력을 소비한다.
제3 상태는 중지 상태(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)의 전체 상태는 큰 불편 없이 복원될 수 있도록 저장된다. 즉, 사용자는 통상적으로 요구되는 시스템 운영체제의 적재와 그래픽 사용자 인터페이스의 적재일 기다릴 필요가 없다.
그후, 컴퓨터는 시스템이 중지되었음을 나타내는 데이터를 비휘발성 CMOS 메모리(96)에 기록한다. 마지막으로, CPU(40)는 전원(17)의 조정 전력 공급을 중단시킨다. 컴퓨터 시스템(10)은 컴퓨터의 전체 상태가 안전하게 고정형 디스크 저장장치(31)에 저장됨에 따라 전력 소비를 낮출 수 있다.
상태(state)는 본 명세서를 통하여 유사하나 혼동될 수 있는 2가지 의미로 사용된다. 장치는 특정 상태에 있을(in)수 있다. 4가지 시스템 상태 즉, 정상 동작 상태(150), 대기 상태(152), 중지 상태(154) 및 오프 상태(156)는 본 발명에 따른 컴퓨터 시스템의 일반적인 상태를 언급한다. 이 상태들은 일반적인 방식으로 컴퓨터 시스템(10)을 설명하고 있다. 예를 들면, 정상 동작 상태(150)에 있는 동안, CPU(40)는 여전히 코드를 실행중이며, 시스템(10)내의 다수의 레지스터를 변경한다. 마찬가지로, 유사한 활동(activity)이 대기 상태(152)에 있는 동안에도 발생한다. 따라서, 시스템(10)이 정상 동작 상태(150) 및 대기 상태(152)에 있는 동안 컴퓨터 시스템(10)의 메모리 및 레지스터 구성은 동적(dynamic)이다.
다른 장치들도 소정 상태에 있을(in) 수 있다. 제7도와 관련하여 후술되는 바와 같이, 프로그램가능 논리 어레이 U2(programmable logic array U2)는 여러 상태에 있을 수 있다.
전술한 의미를 장치의 상태 예를 들면, 컴퓨터 시스템(10)의 상태 혹은 CPU(40)의 상태와 대비할 수 있다. 장치의 상태는 특정 컴퓨터 사이클에서의 그 장치의 상황(condition)을 언급한다. 모든 메모리 위치 및 레지스터는 특정 이진값을 갖는다. 장치의 상태는 그 장치의 내용의 정적 이진 스냅샷(static binary snapshot)이다.
컴퓨터 시스템(10)의 상태는 동작상 동등한 것을 말하며, 반드시 정확하게 동일할 것을 의미하지는 않는다. 예를 들면, 상태 A에 있는 컴퓨터 시스템은 CPU 캐시(41)내에 혹은 시스템 캐시(60)내에 소정 메모리를 가질 수 있다. 어느 쪽이든지 캐시의 내용을 시스템 RAM(53)으로 다시 플러시(flash)시키므로서 이 컴퓨터 시스템을 상태 B에 배치하는 것이 가능하다. 정확하게 말하면, 캐시와 시스템 RAM의 내용이 다르므로, 상태 A에 있는 컴퓨터 시스템의 상태는 상태 B에 있는 컴퓨터 시스템의 상태와 다르다. 그러나 (프로그램이 캐시를 이용하여 실행될 수 없기 때문에) 시스템 속도가 다소 늦어지는 것을 제외하고는 실행중인 프로그램에 영향을 미치지 않으므로, 소프트웨어 동작이라는 측면에서 볼 때 상태 A와 B는 동일하다. 즉, 캐시가 플러시된 컴퓨터는 캐시 영역이 유용한 코드로 재적재될 때까지 성능이 약간 떨어지겠지만, 상태 A의 컴퓨터와 상태 B의 컴퓨터는 소프트웨어 동작 측면에서 볼 때는 동일하다.
파워(power)도 또한 혼동이 가능한 2가지 유사한 의미로 사용된다. 대개의 파워는 전기 전력에 관한 것이다. 그러나, 파워는 또한 계산 능력(computational power)에 관한 것으로도 사용된다. 그러나, 이러한 차이는 문맥에 의해 명확히 파악될 수 있다.
회로(circuit)는 일반적으로 하나의 물리적 전자 장치(a physical eletronic device) 혹은 전기적으로 상호 접속된 다수의 장치를 말한다. 그러나 회로는 또한 물리적 전자 장치에 대한 CPU 코드 동등물을 포함하는 것으로 본다. 예를 들어, 2입력 NAND 게이트는 74LS00에 의해 구현될 수 있으며, 혹은 동일하게 프로그램 가능 장치(a programmable device)로도 구현될 수 있다. 이들 두 장치는 모두 물리적 전자 장치들이다. 다른 한편으로, CPU가 판독 가능한 2개의 입력 포트로부터 CPU(40)가 두 입력을 판독하고 CPU 커맨드를 사용하여 NAND 결과를 발생하여, CPU가 기록 가능한 출력 포트를 통하여 그 결과를 출력하도록 하므로서, NAND 게이트를 구현할 수 있다. 이와 같이 CPU가 인터페이스 하는 것이 가능한 포트로 단순한 것으로는 디코딩된 래치들(decoede latches) 또는 디코딩된 래치들로 프로그램 가능한 등가 장치가 있으며, 복잡한 것으로는 PIA가 있는데, 이들 모두는 본 기술분야에서 잘 알려져 있다. 회로는 상술한 3가지 NAND 게이트 구현 예들을 모두 포함하는 것으로 한다. 몇몇 경우, 회로는 단순히 전기 경로(electrical pathway)를 언급할 수도 있다. 전기 경로로는 와이어(wire), 트레이스(trace) 혹은 인쇄 회로 기판(printed circuit board)상의 비아(via) 등이 있고, 혹은 전기적으로 접속되어 하나의 경로를 형성하는 여러 유형의 전기 경로의 조합도 포함된다.
신호(signal)는 단일의 전기 파형 혹은 다수의 파형을 언급할 수 있다. 예를 들면, 비디오 제어기는 비디오 신호를 발생한다. 이 비디오 신호는 다수 전기 전도체상의 신호로서, HSYNC, VSYNC, R, G, B 등이 신호이며 본 기술 분야에서 잘 알려져 있다.
제4도를 다시 참조하면, 네 번째이자 마지막인 상태는 오프 상태(156)이다. 이 오프 상태(156)는 통상의 의미로 턴오프된 전형적인 컴퓨터 시스템과 사실상 동일하다. 이 오프 상태에서, 전원(17)의 주요/조정 장치(primary/rregulation unit)(172)는 컴퓨터(10)에 (제5도를 참조하여 보다 상세히 설명되는 바와 같이, AUX5를 통한 소량의 조정된 세류 전력(a slight trickle of regulared 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)를 유발하도록 한다. 어느 한쪽 혹은 양쪽 타이머는, 사용자의 특정한 요구에 따라. 소정 시간 주기(a certain period of time) 경과 후에 종료하도록 구성될 수 있다. 바람직한 실시예에서, 비활동 대기 타이머 및 비활동 중지 타이머는 15 내지 90분 경과 후에 종료되도록 설정될 수 있다. 어느 한쪽 혹은 양족 타이머는 중단될 수 있다. 즉, 절대로 종료(expire)되지 않도록 구성될 수 있다. 타이머를 중단시키는 것(stopping)은 타이머의 계수 증가 동작(incrememtal counting action)을 실제로 멈추거나 혹은 단순히 타이머의 종료를 무시하는 형태를 취할 수 있다. 바람직한 실시예에서, 타이머 종료값으로 0을 설정하면 타이머 종료는 테스트되지 않는다. 예를 들면, 컴퓨터가 중지 상태에 진입하므로서 LAN과의 접속이 끊어질 수 있으므로, 네트워크 컴퓨터의 사용자는 컴퓨터가 중지 상태(154)에 진입하는 것을 원하지 않을 수 있다.
이론상, 타이머들은 카운트업(count-up) 혹은 카운트다운(count-down)한다. 타이머는 사전 결정된 일 고정형 상태(a fixed predetermined state)로 리세트(reset)되어, 타이머가 시작(혹은 재개)될 때, 사전 결정된 다른 고정형 상태로 계수한다. 혹은 현재값을 사용하여 종점 종료 트리거(endpoint expiration trigger)인 합이나 차를 계산한다. 바람직한 실시예에서, 타이머가 리세트될 때, 실시간 클록(98)의 값이 저장된다. 타이머는 저장된 값으로부터 현재의 값을 감산하고, 이 차이값과 사용자가 선택한 값을 비교하므로서 종료 여부를 검사한다.
두 타이머는 소정 시스템 활동(system activity)에 의해 영향을 받는다. 예를 들면, 바람직한 실시예에서. 키보드(12)의 키를 누르고, 마우스(13)를 이동시키고, 마우스(13)의 버튼을 누르는 사용자의 동작, 혹은 하드 드라이브(31)의 동작에 의해 각 타이머는 재시작(restart)된다. 이는 제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에 기록된 중지 진입 플래그가 002인 동안 전력 버튼(21)을 누르면, 컴퓨터 시스템(10)은 참조번호(158)에서 도시된 바와 같이 오프 상태(156)로 진입한다. 컴퓨터 시스템(10)이 오프 상태(156)일 때 전력 버튼(21)을 누르면, 컴퓨터 시스템은 정상 동작 상태로 진입한다.
컴퓨터 시스템(10)이 정상 동작 상태(150)에 있으면, 하나의 이벤트가 컴퓨터(10)를 대기 상태(150)로 진입하도록 할 수 있다. 참조번호(162)에 도시된 바와 같이, 비활동 대기 타이머가 종료되면, 컴퓨터 시스템(10)은 대기 상태(152)로 변할 것이다. 참조번호(164)에 도시된 바와 같이, 컴퓨터 시스템(10)이 대기 상태(152)에 있는 동안 전술한 종류의 어떤 시스템 활동이 있으면, 컴퓨터 시스템(10)은 대기 상태를 벗어나 정상 동작 상태(150)로 재진입한다.
컴퓨터(100)가 정상 동작 상태(150)에 있다면 2가지 이벤트가 컴퓨터를 중지 상태(154)로 진입하도록 할 수 있다. 첫째, 참조번호(166)에 도시된 바와 같이. 비활동 중지 타이머가 종료되면, 컴퓨터 시스템(10)은 중지 상태(154)로 변할 것이다. 두 번째는, 참조번호(166)에 도시된 바와 같이, 프로그램가능 논리 어레이에 기록된 중지 진입 플래그가 012인 동안 전력 버튼(21)을 누르면 컴퓨터 시스템(10)을 즉시 중지 상태(154)로 진입시킬 수 있다. 참조번호(168)에 도시된 바와 같이, 중지 상태에 있는 동안 사용자가 전력 버튼(21)을 누르면, 컴퓨터는 정상 동작 상태(150)로 변한다.
또한, 참조번호(168)에서 시스템(10)을 중지 상태(154)에서 정상 동작 상태(150)로 변하게 하기 위해 다수의 외부 이벤트를 사용할 수 있다. 예를 들면, 제6도 회로에 전화 링 감지 회로(telephone ring detect circuit)를 추가하여, 부착된 전화선이 울릴 때 컴퓨터 시스템(10)이 중지 상태(154)를 벗어나 정상 동작 상태(150)로 진입하도록 구성할 수 있다. 이는 팩스 데이터(telefax data) 혹은 디지털 데이터(digital data)를 수신하는 시스템에 유용하다. 시스템은 입력되는 정보를 수신하는 동안에만 전력을 소비한다. 마찬가지로, 실시간 클록과 제6도 사이의 인터페이스는, 알람형 이벤트(alarm-type event)에 의해 시스템(10)이 중지 상태(154)에서 벗어나 정상 동작 상태(150)로 진입하도록 하며, 이러한 시스템은 전화 사용율이 낮은 소정 시간을 이용하여 팩스 데이터 혹은 디지털 데이터를 송신하는데 유용하다.
마지막으로, 참조번호(170)에 도시된 바와 같이, 컴퓨터 시스템(10)이 대기 상태(152)에 있을 때 비활동 중지 타이머가 종료되면, 컴퓨터 시스템(10)은 중지 상태(154)로 변한다. 컴퓨터 시스템(10)은 중지 상태(154)에서 대기 상태(152)로 다시 변할 수 없고, 참조번호(168)를 참조하여 설명한 바와 같이, 단지 정상 동작 상태(150)로만 변경할 수 있다.
명백하게, 컴퓨터 시스템(10)은 상태를 즉시 변경할 수는 없다. 4가지 상태중 어느 하나로부터의 변경은 소정 주기의 시간은 필요로 한다. 각 변경 주기에 대한 상세한 설명은 제6도 내지 제1도 5를 참조하여 상세히 기술될 것이다.
[시스템 하드웨어]
CPU(40)상에서 실행되는 코드를 상세히 설명하기에 앞서, 먼저 상기한 4가지 상태를 성취하기 위해 필요한 하드웨어에 대해 논의하는 것이 도움이 된다. 제5도에는 전원(17)의 블럭도가 도시되어 있다. 전원(17)은 제어 장치(174) 및 주요/조정장치(172)의 2가지 장치를 가진다. 전원(17)은 전형적인 콘센트로부터 115 VAC를 수신하는 라인인 (Line-in), 전원(17)의 조정 활동을 제어하는 등의 다수의 입력을 가진다. 전원(17)은 AC 라인아웃(line out), ±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 신호는 논리적으로 0(ZERO)이다. 전원(17)이 온일 때, 전원(17)은 115 VAC 라인인으로부터 ±5 VDC, ±12 VDC의 조정 전압을 생성한다. 이들 4가지 조정 전압 및 이와 연관된 GND는 본 기술분야에서 통상적으로 알려진 시스템 전력이다. 조정 전압 레벨이 수용 가능한 허용오차(acceptable tolerances)내에 있다면, POWERGOOD 신호는 논리 1(ONE)로 변할 것이다.
AUX5 출력은 보조 +5 VDC를 플래이너에 제공한다. 전원(17)이 공칭(nominal) 115 VAC를 제공하는 전형적인 콘센트에 끼워질 때, 주요/조정 장치(172)는 전원의 온 혹은 오프에 상관없이, 조정 +5 VDC를 AUX5에서 제공한다. 따라서, 전원(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)는 순시 단극 단투 푸쉬버튼 스위치(a momentary single-pole single-throw pushbutton switch)이다. 그러나, 당업자라면 제6도의 회로가 단극 쌍투 스위치와 같은 다른 유형의 스위치를 사용하는데 적합하도록 만들 수 있을 것이다. AC 라인은 콘센트로부터 주요/조정 장치(172)에 항상 접속된다. 이 논리 1(대략 AUX5, 공칭 +5 VDC)일 때. 주요/조정 장치(172)는 115 VAC 라인인을 ±5 혹은 ±12 출력단을 통해 출력되는 ±5 VDC 혹은 ±12 VDC로 조정하지 않는다. 주요/조정 장치(172)는 AUX5 출력단에서 저전류로 공칭 +5 VDC를 제공한다. 반면에, 이 논리0(대략 GDN)일 때, 주요/조정 장치(172)는 115 VAC라인인을 ±5 VDC 및 ±12 VDC로 각각 조정하여 ±5 및 ±12 출력단을 통해 출력한다. 따라서, 이 1일 때, 전원(17)은 오프이고, 이 0일 때, 전원(17)은 온이다.
전술한 전원(17)처럼 AUX5 출력단과 입력단을 구비한 전원은 통상적인 전원 공급자들로부터 얻을 수 있다.
이제 제6도를 참조하면, 본 발명에 따른 컴퓨터 시스템(10)내 전자회로의 개략도가 도시되어 있다. 제6도의 회로는 스위치(21), 전원(17), 비디오 디스플레이 단말기(57) 및 CPU(40)상 코드실행의 사이를 인터페이스 하는 역할을 한다.
이 회로는, 본 기술분야에 잘 알려진 UI 즉, 제1 사전프로그램형(preprogrammed) PAL16L8과, U2 즉, 제2 사전프로그램형 PAL16L8과, U3 즉, 74HC132라는 3가지 집적회로를 포함한다. 일반적으로, PAL U1 및 U2는 제3도의 플래이너 I/O버스(90)와 제6도의 나머지 회러간을 인터페이스 한다. 이 회로는 스위치(21), 10개의 저항(R1-R10), 5개의 커패시터(C1-C5), 바람직한 실시예에서 논리스위치로서 동작하기에 적합한 4개의 표준 저전류 NMOS FET인 N형 MOSFET(Q1-Q4), 표준 저전류 다이오드 패키지인 2중 다이오드 패키지(CR1)를 포함하며, 이들은 제6도에 도시된 바와 같이 구성되고 연결된다. 이 저항들(R1-R10)은 1/4와트 저항들로 제6도에 도시된 값을 ±5% 오차 이내에서 갖는다. 커패시터(C1-C2)는 제6도에 도시된 값을 ±10 오차 이내에서 갖는 전해 커패시터(electrolytic capacitors)이다. 커패시터(C3-C5)는 0.1 ㎌(±10%) 세라믹 커패시터(ceramic capacitors)이다.
제1 PAL U1은 SA(1) 내지 SA(15)의 어드레스 라인 및 어드레스 인에이블(AEN) 라인에 접속된다. SA(1) 내지 SA(15) 및 AEN은 제3도의 플래이너 I/O 버스(90)의 일부이다. 사전 결정된 어드레스가 SA(1) 내지 SA(15)의 어드레스 라인에 제공되고 어드레스 인에이블 라인이 활성일 때, 제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)으로부터 SD(0), SD(1), SD(2), SA(0), IOW#, IOR#, RESETDRV 및 IRO(1)라는 8개의 신호를 입력받는다. 제2 PAL U2는 핀(2)에 활성 하이 신호(RESERDRV)가 입력될 때 이미 알려진 초기 조건으로 리세트된다. RESETDRV는 업계에 잘 알려진 바와 같이 메모리 제어기(46)에 의해 발생된다. 제2 PAL U2는 제7도 및 표 1 내지 2를 참조하여 보다 상세히 기술될 것이다.
제3장치는 본 명세서에서 U3A와 U3B로 표시된 2개의 부분을 가지는데, 이 두 부분은 NAND 래치로도 알려진 SR 래치를 형성한다. SR 래치는 입력단으로 U3의 핀(1, 5)(핀(1)은 SET 입력이고, 핀(5)은 RESET 입력)을 가지며, 출력단으로는 U3A의 핀(3)을 가진다. 이들 두 입력이 논리 1인 동안, 출력은 래치된 출력값을 유지한다. SET이 논리 0인 경우 출력은 논리 1이 된다. SET 입력이 논리 1로 복귀(return)하면 출력은 논리 1로 래치된다. RESET 입력이 논리 0이면 출력은 논리 0이 된다. RESET 입력이 논리 1로 복귀하면 출력은 논리 0이 된다.
POWERGOOD 신호가 논리 0이어서 조정 전압이 적당한 레벨에 있음을 나타내는 경우, U3C로 표시된 제3장치의 제3부분은 제2 PAL U2의 출력 핀(12)에 대한 인버터(inverter)로 동작한다. POWERGOOD 신호가 논리 0이어서 VCC가 +5 VDC로/로부터 램핑 업(ramping up) 혹은 램핑 다운(ramping down)하거나 혹은 접지 근처에서 부동(floating)하고 있음을 나타내는 경우, 제3장치의 제3부분인 U3C의 핀(8)에서의 출력은 논리 1로 유지되어, 제2 PAL U2의 핀(12)으로부터의 노이즈가 제 3장치의 제1 및 제2 부분인 U3A 및 U3B에 의해 만들어진 SR 래치에 영향을 미치지 못하도록 한다.
스위치(21)는 제6도에 도시된 회로의 JPI에 접속한다. 저항/커패시터 부회로(subcircuit) R2 및 C1은 스위치(21)의 폐쇄 이벤트(closure event)를 디바운싱(debouncing)한다. 제3 장치의 제4 부분인 U3D는 핀(12)이 R6을 통해 VBAT(AUX5가 공칭 +5 VDC일 때, 대략 +4.3 VDC)에 연결된 인버터로 구성되어, 디바운싱된 스위치 폐쇄를 반전시킨다. 전류 제한 저항(current-limiting resistor)(R10)은, 장치가 파워업(power up) 혹은 파워다운(power down)될 때 제2 PAL U2의 핀(8)로부터 유출될 수 있는 여하한 전류로부터 제3장치 제4 부분인 U3D의 핀(11)을 보호한다.
SR 래치는 파워오프되어서는 안된다. 그러나 SR 래치가 파워오프되는 경우, R7 및 C3은 SR 래치가 파워업 상태가 되도록 설계되며, 이는 SR 래치에 파워가 다시 공급될 때 전원(17)이 오프상태가 되도록 한다.
저항(R1, R2, R3, R4, R5, R6, R8 및 R9)은 제각기의 라인을 VCC, VBAT 혹은 AUX5의 어느 하나로 되게 하는 풀업(pull-up) 저항들이다. 트랜지스터(Q1, Q2, Q3 및 Q4)는 인버터들이다. 저항(R4) 및 커패시터(C2)는 RC 쌍을 형성하여 VCC에 도달할 때까지 커패시터(C2)를 충전시킨다. 트랜지스터(Q5)는 제2 PAL U2의 핀(19) 출력이 논리 1일 때 커패시터(C2)에 축적된 전압을 방전시킨다. 커패시터(C2)에 축적된 전압이 대략 +2.7 VDC 아래이면, 트랜지스터(Q1)는 통전되지 않으며, 저항(R3)은 제2 PAL U2의 핀(11) 입력을 VCC로 하여 논리 1로 만든다. 커패시터(C2)가 대략 +2.7 VDC나 혹은 그 이상으로 충전되는 경우, 트랜지스터(Q1)가 통전되어 핀(11) 입력을 접지(GND)로 하여 논리 0으로 만든다.
제2 PAL U2의 핀(18) 출력이 논리 0일 때, 저항 (R8 및 R9)은 각각 BLNK# 및 ESYNC 라인은 VCC로 만든다. ESYNC 및 BLNK# 라인이 VCC일 때, 비디오 제어기(56)는 비디오 신호를 발생한다. 제2 PAL U2의 핀(18) 출력이 논리 1일 때, 트랜지스터 Q2 및 Q3이 통전되어 BLNK# 및 ESYNC 라인을 각각 접지 전압이 되게 하며, 이는 비디오 제어기(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의 핀(20)인 VCC 입력단은 VCC에 접속된다. 또한, 다수의 저항(R3, R4, R8 및 R9)이 VCC에 접속된다. 본 기술분야에서 잘 알려져 있는 바와 같이, 전원이 온이고 공칭 115 VAC를 공급하는 전형적인 콘센트에 플러그인 된 경우에만, 전원(17)은 조정 +5 VDC를 제공한다. 따라서, 전원이 오프 혹은 플러그인 되지 않은 경우에는, PAL U1, U2 및 저항(R4, R4, R8, R9)은 +5 VDC를 공급받지 못한다.
반면에, 전원(17)이 공칭 115 VAC를 공급하는 전형적인 콘센트에 플러그 되어 있으며, 전원(17)은 온이든 혹은 오프이든지 간에 AUX5에서 조정 +5 VDC를 언제나 제공한다. 따라서, 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와 VBAT 사이의 CR1내 다이오드의 다이오드 강하(diode drop)를 AUX5의 +5 VDC으로부터 뺀 수치임)를 공급받는다. 전원(17)이 플러그인 되어 있지 않은 경우, 이 전원은 AUX5 라인으로의 조정 전력 공급을 멈추고, U3 및 저항(R1, R2 및 R6)은 VBAT으로부터 전력을 공급받는다. 전형적인 74HC132는 +2.0라는 최소 DC 공급 전압을 필요로 한다. 따라서, VBAT가 +2.0 VDC를 제공하기에 충분한 전하(charge)를 보유하는 한, U3는 충분한 전력을 공급받는다.
제6도의 회로는 본 발명의 범위 내에서 다수의 변형을 가질 수 있다. 예를 들면, 하루중의 특정 시간에 컴퓨터 시스템(10)이 중지 상태(154)에서 정상 동작 상태(150)로 변하도록, 실시간 클록(98)이 제6도의 회로에 전기적으로 접속하여, ON# 신호에 다이오드 OR 되도록 구성될 수 있다. 마찬가지로, 전화 링 검출 회로를 제6도의 회로에 부가하고, ON# 신호에 다이오드 OR 되도록 구성하며, 접속된 전화선의 울림으로 시스템(10)이 중지 상태(154)에서 정상 동작 상태(150)로 진입하도록 할 수 있다.
제6도를 다시 참조하면, 제2 PAL U2는 2개의 상태 기계(state machines)를 갖는다. 제7도에는 제2 PAL U2내 상태 기계중 한 상태 기계의 상태도가 도시되어 있다. 표1 및 표2는 제2 PAL U2의 다른 상태 기계와 제2 PAL U2의 소정의 부수적인 면들을 도시하고 있다.
제7도는 제2 PAL U2내의 한 상태 기계를 도시하고 있다. TE1과 TE0은 함께 스위치 상태 002(176), 스위치 상태 012(178), 스위치 상태 112(180) 및 스위치 상태 102(182)의 4가지 상태를 허용한다.
TE1과 TE0은 제2 PAL U2에 직접 기록될 수 없으며, 오히려 스위치(21)를 폐쇄하는 것과 컴퓨터 시스템(10)을 리셋팅하는 것과 같은 다른 이벤트들에 따라 변한다. 전원(17)이 시스템 전력을 공급하지 않을 때, 제2 PAL U2는 전력 공급을 받지 못하며, 따라서, 상태(174)에서 제2 PAL U2의 상태는 의미가 없다. 제6도를 참조한 설명에 상세히 기술된 바와 같이, 스위치(21)의 누름 및 (전원(17)이 시스템 전력을 공급하도록 하는 전화 링 검출기와 같은) 다른 이벤트들은 전원(17)이 시스템 전력 공급을 개시하도록 한다. 스위치(21)를 누르거나 혹은 RESETDRV 신호가 활성일 때, 제2 PAL U2는 스위치 상태 002(176)로 진입한다. 스위치(21)를 놓은 경우 혹은 스위치를 누르지 않은 상태에서 RESETDRV 신호가 비화렁이 되는 경우, 제2 PAL U2는 스위치 상태 012(178)로 진입한다. 스위치(21)를 다시 누르면, 제2 PAL U2는 상태 112(180)로 진입한다. 스위치(21)를 다시 놓으면 제2 PAL US는 스위치 상태 102(182)로 진입한다. 이후, 스위치(21)를 누르면, 제7도에 도시된 바와 같이, 제2 PAL U2는 4가지 상태를 거치는 사이클을 순환한다. 시스테(10)이 정상 동작 상태(150)인 경우, 제2 PAL U2는 스위치 상태012(178)에 있다.
스위치 상태 012(178)는 TE1, TE0 상태 기계의 정상 상태에 대응하는 스위치 상태이다. 응용 프로그램은 이 상태 동안 실행된다. 시스템(10)은 이 상태에서 대기 상태(152)로 진입하거나 대기 상태(152)로부터 이탈할 수 있다. 스위치 상태 012(178)는 또한 사용자 유래의 중지 포기 요청(suspend abort request)에 대응한다. 스위치 상태(102)는 사용자에 의한 중지 요청에 대응하는 스위치 상태이다. 즉, 오프상태(156)의 시스템(10)에서 시작하여 스위치(21)를 1회 누르면 컴퓨터 시스템(10)은 정상 동작 상태(150)에 놓이게 된다. 스위치를 다시 한번 누르면 중지 요청(전력 관리 포트에서 0FFH)이 발생하며, 이는 감독 루틴에서 판독된다. 이에 대해 제9도를 참조하여 보다 상세히 설명된다. 시스템(10)이 중지 상태(154)에 있기 전에, 스위치(21)를 세 번째 누르면 중지 포기 요청(전력 관리 포트에서 0FFH)이 발생하며 이는 중지 루틴에서 판독된다.
표1은 제7도의 4가지 상태에 대해 약간의 설명을 부가한 것이다. 스위치 상태 002(176), 012(178) 및 112(180)에 있는 동안, 전력 관리 포트는 판독한 결과에 따라 0FFH를 출력한다.
반면, 스위치 상태가 102(182)에 있는 동안, 전력 관리 포트는 판독 결과에 따라 OFFH를 출력한다. 스위치를 누른 후 놓으면, 제2 PAL U2는 스위치 상태 012를 벗어나 스위치 상태 102(182)로 진입하여, 하드웨어 중지 요청 신호를 발생한다. 감독 루틴은 전력 관리 포트를 판독하여, 하드웨어 중지 요청을 인식한다. 판독 결과에 따라 OFFH는 하드웨어 중지 요청을 나타낸다.
TE1, TE0 상태 기계는 또한 비디오 블랭킹 회로(video blanking circuitry)에 영향을 미친다. 후술하는 바와 같이, 스위치 상태 002(176)에 있는 동안, 디스플레이 블랭킹 비트가 소거되어 비디오 제어기(56)는 비디오 신호를 발생한다. 스위치 상태102(182)에 있는 동안, 디스플레이 블랭킹 비트는 세트되어, 비디오 제어기(56)가 비디오 신호 발생을 멈춘다. 스위치 상태 012(178) 및 112(180)에 있는 동안, 비디오 블랭킹 비트는 (이하 설명하는 바와 같이), D2로의 기록에 의해 제어된다.
표2는 제2 PAL U2의 다른 상태 기계를 보여주며, SD2의 기록이 어떻게 비디오 신호에 영향을 미치는가를 설명하고 있다.
PAL내 U2 회로는 전력 관리 로트에 3개의 비트-SD(0), SD(1), SD(2)-를 제공한다. 이 3개의 비트는 표 2에서 S0, S1 및 S2로 표시된다. SD(2)는 제2 PAL U2의 피(18)에서의 DISPLAY_OFF 출력을 제어하여 비디오 블랭킹을 제어한다. 전력 관리 포트의 SD(2) 비트에 1을 기록하면, 핀(18)의 DISPLAY_OFF 출력이 논리 1로 되어 트랜지스터(Q2 및 Q3)를 통전시키고, BLNK# 및 ESYNC 라인은 GND로 통하게 되어, 비디오 신호를 오프시키므로서 비디오 제어기(56)는 비디오 신호 발생을 멈춘다. 이와 마찬가지로, 전력 관리 포트의 SD(2)에 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(0)는 결합하여 002, 012, 102및 112의 4가지 동작 상태를 제공한다. 제2 PAL U2는 RESETDRV 입력에 의해 002상태로 초기화된다. 또한, 4가지 상태중 어느 한 상태에 있더라도, 전력 관리 로트에 XXXXXX002를 기록하면 제2 PAL U2는 002상태에 놓이게 된다. 제5도를 참조하여 설명한 바와 같이, 002상태에서 스위치(21)는 전형적인 전력 공급원들의 전력 스위치처럼 동작한다. 002상태에 있는 동안 스위치(21)를 누르면, 제2 PAL U2의 핀(12)의 출력은 논리 1로 되며, SR 래치의 핀(3)의 출력은 논리 0상태로 래치되고, 은 저항(R6)에 의해 하이로 되어, 전원(17)의 주요/조정 장치(172)는 ±5 및 ±12선을 통한 조정 전압 제공을 중단하여, 전원(17)은 턴오프 된다. 이하의 시스템 소프트웨어에 대한 논의에서 보다 상세히 설명하는 바와 같이, 이 상태에서 APM은 분리(disconnect)된다. 002상태인 동안, 전력 관리 포트를 판독하면 회로는 OFFH를 반환(return)한다. 바람직한 실시예에서, 하드웨어의 존재를 확인하기 위해 이 바이트를 판독하고 테스트한다.
4가지 상태중 어느 한 상태에 있더라도, 전력 관리 포트에 XXXXXX012를 기록하면 제2 PAL U2는 012상태로 진입한다. 012상태는 정상 APM 상태이다. 스위치(21)가 눌려지기전, 012상태에 진입한 후 즉시 전력 관리 포트를 판독하면, 회로는 OFFH를 반환한다. 012상태인 동안 스위치(21)를 누른 후 놓으면 다음의 2가지 이벤트가 발생된다. (1) 전력 관리 포트의 판독에 의한 반환값은 OFEH와 OFFH사이에서 토글(toggle)하며, (2) 핀(18)의 값은 토글하여, 스위치를 매번 누를 때마다. 비디오 제어기(56)가 각 비디오 신호를 온과 오프로 토글시킨다. 또한, 스위치(21)가 처음 눌려질 때, 핀(19)의 TRIGGER# 출력은 논리 0으로 되며 트랜지스터(Q5)는 통전이 방지되며, 커패시터(C2)에 대한 충전이 시작되어, 고장안전 타이머(falsesafe timer)가 개시된다. 커패시터(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에 의해 하이로 되고, 전원(17)은 주요/조정 장치(172)는 ±5 및 ±12라인을 통한 조정 전압 제공을 중지하므로서, 전원(17)을 오프시킨다. 스위치를 반복해 폐쇄하면 고장안전 타이커는 '온'과 '오프'로 토글된다.
따라서 012상태인 동안, 스위치가 눌려지기 전에는, 판독에 의한 반환값은 OFFH이며 비디오 신호가 발생된다. 스위치(21)가 처음 눌려질 때, 판독에 의한 반환값은 OFFH로 변하고 비디오 신호의 발생은 중단되며, 비디오 디스플레이 단말기(57)는 블랭크(blank)된다. 스위치(21)가 두 번째로 눌리면, 판독에 의한 반환값은 OFFH로 다시 변하고 비디오 제어기(56)는 비디오 신호 발생을 다시 시작한다. 토글 특성(toggling nature)으로 인해, 스위치를 반복하여 누르면 눌려진 후에 총수가 홀수 번인 경우 판독에 의한 반환값은 OFFH이고 비디오 신호는 브랭크된다. 스위치가 눌려진 총수가 짝수 번인 경우에는 OFFH이며 비디오 신호가 발생된다.
4가지 상태들 중 어느 상태에 있더라도, 전력 관리 포트에 XXXXXX102를 기록하면 제2 PAL U2는 102상태로 진입하게 된다. 102 상태에 진입하면, 제 2 PAL U2의 핀(12)의 출력은 논리 1로 되고, SR 래치의 출력 핀(3)은 논리 0상태로 래치되며, 은 R6에 의해 하이로 되고, 전원(17)의 주요/조정 장치(172)는 ±5 및 ±12라인을 통한 조정 전압 제공을 중지하여, 전원(17)은 턴오프 된다. 이 상태에서는 시스템(10)에 의한 전원(17)에 대한 제어가 가능하다.
4가지 상태중의 어느 상태에 있더라도, 전력 관리 포트에 XXXXXX112를 기록하면, 제2 PAL U2는 112상태로 진입하게 된다. 112상태에 진입하면, 핀(19)의 TRIGGER# 출력은 논리 1로 되고, 트랜지스터(Q5)는 통전되며, 커패시터(C2)가 접지로 방전되어 고장안전 타이머를 리세트한다. 이 상태를 벗어나 012상태로 진입하면, 핀(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이며, 제2 PAL 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)로 방전(drain)시키므로서, 핀(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)은 함께 협력하여 002, 012, 102, 및 112라는 4가지 동작 상태를 제공한다. 제2 PAL U2는 RESETDRV 입력에 의해 002상태로 초기화된다. 이 상태에서 스위치(21)를 누르면 전원(17)을 턴오프시킨다. 코드 실행의 어느 시점에서, 사용자가 원하는 경우 소프트웨어는 전력 관리 포트에 XXXXXX012를 기록하여, 제2 PAL U2가 012상태로 진입토록 할 것이다. 012상태는 정상 APM 상태이다. 각각의 APM 이벤트획득(get-event)의 동안 감독 루틴은 비활동 대기 타이머가 종료되었는지 혹은 비활동 중지 타이머가 종료되었는지 여부를 검사하여 판정한다. 비활동 대기 타이머가 종료되었으면, 감독 루틴은 XXXXX1XX2를 I/O 포트에 기록하여, 비디오 신호를 블랭크할 것이다. 컴퓨터가 대기 상태를 벗어나 정상 동작 상태로 다시 진입하면, 감독 루틴은 I/O 포트에 XXXXX0XX2를 다시 기록하여, 비디오 제어기(56)가 비디오 신호를 발생하도록 한다. 비활동 중지 타이머가 종료되면, 감독 루틴은 중지 루틴을 호출한다. 중지 루틴에 대해서는 제10도를 참조하여 상세히 설명될 것이다.
또한, 각각의 APM 이벤트 획득의 동안, 감독 루틴은 전력 관리 포트를 판독한다. OFFH가 반환되면, 스위치(21)는 눌려지지 않은 것이다. 반면에, OFFH가 반환되었으면, 스위치(21)가 눌려진 것이며, 컴퓨터 시스템은 중지 루틴(제10도를 참조하여 보다 상세히 기술됨)을 시작한다. 스위치(21)가 눌려지거나 혹은 비활동 중지 타이머가 종료되면, 고장안전 타이머는 개시되며, 커패시터(C2)는 충전된다. 따라서, 고장안전 타이머가 전원(17)을 턴오프하지 못하도록, 중지 루틴은 XXXXXX112를 I/O 포트에 기록하여 타이머를 리세트시킨 후, 즉시 XXXXXX012를 I/O 포트에 기록하여 012모드에서 재개한다. 시스템이 중지되면, 중지 루틴은 XXXXXX112를 I/O 포트에 기록하여 전원을 즉시 턴오프 시킬 것이다.
[시스템 소프트웨어]
본 발명에 따른 컴퓨터 시스템(10)의 하드웨어적 측면을 설명하였으며, 이하 코드적 측면을 설명할 것이다.
이제 제8도를 참조하면, 파워업 루틴(power-up)의 일반적인 개략도가 도시되어 있다. 이 루틴은 단계(200)에서 CPU가 리세트 벡터(Reset Vector)에 의해 지시된 코드로 점프하여 그 코드를 실행할 때 시작한다. 이는 CPU에 전원이 공급되거나, 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)에 저장되어 있다. 반면에, 중지 플래그가 NVRAM(96)에서 소거되어 있으면, 컴퓨터 시스템(10)은 오프 상태(156)에 있고 컴퓨터 시스템(10)의 상태는 고정형 디스크 방치(31)에 저장되지 않았다. 따라서, 중지 플래그가 NVRAM(96)에서 세트되어 있으면, 컴퓨터 시스템(10)은 단계(204-210)에서 도시된 정상(normal) 부트 루틴(boot routine)을 실행한다. 제1 작업은, 단계(204)에 도시된 바와 같이, 파워 온 셀프 테스트(power-on self-test : POST)로, 제11도를 참조하여 보다 상세히 기술될 것이다. POST로부터 귀환한 후, 단계(206)에서 도시된 것처럼, CPU(40)는 PBOOT 루틴을 호출하여 운영 체제를 적재(loading)한다.
PBOOT 루틴은 IBM PS/2 컴퓨터 상에서 실행되는 전형적인 루틴을 약간 변형한 것인데, 이는 차후에 설명될 것이다. PBOOT는 어디로부터 (하드 드라이브(31)로부터인지 혹은 플로피 드라이브(27)내 디스크로부터인지) 부팅되는지를 판정하고, 운영 체제를 적재하며, CONFIG.SYS 파일이 지시하는 대로 시스템 변경(system changes)을 분석한 후 구현하고, 궁긍적으로 제어를 운영 체제로 반환하기 전에 AUTOEXEC. BAT 배치 파일을 실행한다. PBOOT 루틴은 본 기술 분야에서 잘 알려져 있다. 그러나, 본 발명의 컴퓨터 시스템(10)에 있어 특이한 것은, 이 부팅 루틴이, 운영체제에 내장된 고급 전력 관리(APM) 고급 프로그래밍 인터페이스(API)와 통신한다는 것이다. APM API는 인텔 및 마이크로소프트사에 의해 개발되었으며 예를 들면, IBM사의 OS/2, IBM사의 PC-DOS, 마이크로소프트사의 MS-DOS, 및 마이크로소프트사의 윈도우즈 등의 다수의 운영 체제가 APM API를 구현하고 있다. APM BIOS 부팅 루틴은 감독 루틴의 존재를 APM OS에 통보한다. 단계(210)에서 도시된 것처럼, 운영 체제는 사용자의 지시에 따라 무기한으로 코드를 실행한다. 그러나, 단계(212)에서 도시된 것처럼, API를 감독 루틴에 통보하면, APM BIOS 및 APM OS는 감독 루틴이 프로그램 실행과 함께 병렬로 실행되도록 한다. 즉, 컴퓨터 시스템(10)은 시분할 멀티테스킹 시스템(time-multiplexed multitasking system)이고, APM 이벤트 획득 및 결과적인 감독 루틴이 주기적으로 실행된다. 최종 결과는, 감독 루틴이 대략 매 초마다 실행된다는 것이다. 감독 루틴은 제9도를 참조하여 보다 상세히 기술될 것이다. 제4도를 참조하여 설명한 바와 같이, 정상 부트 루틴(204-210)이 끝난 후, 컴퓨터 시스템(10)은 정상 동작 상태(150)에 있게 된다.
단계(202)를 다시 참조하면, 중지 플래그가 NVRAM(96)에서 세트되어 있으면, 시스템 상태는 하드 드라이브(31)에 저장되었으며, 시스템(10)은 단계(214-220)에 도시된 바와 같이 부트 루틴을 재개한다. 우선, 단계(214)에 도시된 바와 같이, 시스템은 단축 POST를 실행한다. 단축 POST에 대해서는 제11도를 참조하여 보다 상세히 기술될 것이다. 단축 POST의 후에, 단계(216)에 도시된 바와 같이, 시스템은 재개 루틴을 호출한다. 재개 루틴은 제12도를 참조하여 보다 상세히 기술될 것이다. 현 시점에서 재개 루틴은 컴퓨터 시스템(10)의 상태를 중지되기 전의 구성으로 복원한다는 것으로 족하다. APM 루틴이 이 시스템을 중지시키기 위해 실행되고 있었음에 틀림없고, 시스템 상태가 복원될 때 APM은 메모리로 다시 적재되므로 단계(204-210)에서 도시된 정상 부트 루틴과는 달리, 재개 부트 루틴은 감독 루틴의 존재를 APM API 루틴에 통보할 필요가 없다. 따라서, 재개 루틴이 시스템(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가 스위치 상태 012에 있는 동안 전력 관리 포트가 판독되면, 전력 관리 포트는 스위치가 눌려지지 않은 경우 FFH를 반환하고, 스위치가 눌려진 경우 FEH를 반환한다.
단계(224)에서의 테스트 결과, 사용자가 스위치(21)를 눌렀다고 판단되면, 감독 루틴은 단계(226)에서 중지 요청(Suspend Request) APM 반환 코드를 세트하고, 단계(228)에서 APM으로 복귀한다. 중지 요청 APM 반환 코드의 세트에 응답하여, APM은 (하드 디스크의 동기화와 같은) 필요한 모든 시스템 작업을 수행하고 중지 커맨드를 발생하여, APM BIOS 라우팅 루틴이 중지 루틴을 호출하도록 한다. 중지 루틴은 제10도를 참조하여 보다 상세히 기술될 것이다. 중지 루틴은 본질적으로 시스템(10)이 정상 동작 상태(150)에서 벗어나 중지 상태(154)로 진입토록 하며, (시스템이 중지될 준비가 되지 않았으면) 다수의 명령어를 실행한 후에, 혹은 (시스템이 중지되고 재개된다면) 수분, 수 시간, 수 일, 수 주 혹은 수 년후에 감독 루틴으로 제어를 반환한다. 중지 루틴은, 중지 없이 복귀(return)하는가 혹은 완전한 중지 및 재개의 후에 복귀하는가에 상관없이, 항상 정상 중지(Normal Suspend) APM 반환 코드를 세트한다.
대개, 스위치(21)는 눌러지지 않았으며, 감독 루틴은 단계(230)로 이동하여 시스템이 이제 막 재개하였는지를 조사한다. 중지 루틴이 호출되면, 중지 루틴이 중제없이 복귀했는지혹은 완전한 중지 및 재개의 후에 복귀했는지 여부에 상관없이, 시스템은 중지 루틴이 이제 막 재개되었다고 생각한다. 재개는 단계(230)에서 테스트되고, 시스템이 이제 막 재개되었다면(혹은 파일 활동의 DMA 동작으로 인해 중지가 실행되지 않았다면), 정상 재개 APM 반환 코드가 단계(232)에서 세트되고, 단계(234)에서 APM으로 복귀된다. 이에 따라 APM OS 구동기는 중간에 진부하게 되었을 수도 있는 시스템 클록과 기타 값들을 갱신한다.
대개, 시스템(10)은 이제 막 재개된 것은 아니며, 감독 루틴은 단계(236)로 이동하여, 사용자 활동을 테스트한다. 단계(236)에서, 하드파일(hardfile)(31) 활동, 키보드(12) 활동, 마우스(13) 활동의 3가지 유형의 사용자 활동이 테스트된다. 모든 APM 이벤트 획득의 경우마다, 감독 루틴은 하드파일 헤드, 실린더 및 섹터의 값을 판독하고, (수직 위치를 나타내는) 마우스(13)의 전송된 마지막 바이트 값을 판독하고, (마지막 키가 눌려진) 키보드 포트에서의 1바이트 값을 판독하고, 또한 실시간 클록(98)으로부터 분 값을 판독한다. 분 값의 범위는 0 내지 59분까지이며 각 시간이 시작될 때 0분으로 되돌아간다. 5개의 활동 변수(헤드, 실린더, 섹터, 마우스 바이트 및 키보드 바이트)와 분 값은 일시적으로 저장된다. 그후 5개의 활동 변수는 이전의 '이벤트 획득'으로부터 저장된 5개의 활동 변수와 비교된다. 현재의 5개의 값이 이전의 이벤트 획득으로부터의 5개의 값과 동일하면, 사용자의 활동은 없었다. 비교한 값이 다르면, 사용자의 활동이 있었음을 뜻하며, 현재의 활동 변수 값이 저장되어 다음 이벤트 획득의 동안 판독된 값과 비교된다.
전술한 활동 검출 방안은 루틴이 CPU 상에서 실행된다. 이와 달리, 활동은 하드웨어 방식으로 감시될 수 있다. 예를 들면, 하드웨어 인터럽트 라인(16)이 활동을 감시할 수 있다.
활동이 있으면, 단계(238)에서 감독 루틴은 대기 상태 플래그를 테스트하여, 컴퓨터 시스템(10)이 대기 상태(152)에 있는지 여부를 판단한다. 대기 상태 플래그가 세트되어 시스템(10)이 대기 상태(152)에 있음을 나타내면, 단계(240)에서 감독 루틴은 대기 상태(152)를 벗어나 정상 동작 상태(150)로 진입한다. 대기 상태(152)에 진입할 대 파워 다운된 장치에 백업 전력을 공급하므로 대기 상태(152)에 존재한다. 바람직한 실시예에서 이것은 (1) 01H를 전력 관리 포트에 기록하여, 제2 PAL U2를 012상태로 두면서 비디오 제어기(56)가 비디오 신호 발생을 개시하도록 하는 것, (2) 적절한 값을 고정형 디스크 제어기(86)에 기록하여, 하드 드라이브(31)내의 하드 디스크가 회전을 시작하도록 하는 것, 및 (3) 대기 플래그를 소거하여 시스템(10)이 정상 동작 상태(150)에 있음을 표시하는 것을 포함한다.
또한, 활동이 있었으면, 실시간 클록(98)의 분 값을 저장하여, 후속 이벤트 획득의 동안 판독된 분 값과 비교한다. 단계(241)에서 현재의 분 값을 저장하여 비활동 대기 타이머와 비활동 중지 타이머를 효과적으로 리세트시킨다. 정상 사용의 동안에는, 사용자 활동이 있을 것이며, 단계(242)에서 감독 루틴은 무 이벤트(No Event) APM 반환 코드를 세트하고, 단계(243)에서 APM 호출 코드로 복귀할 것이다. APM은 무 이벤트 반환 코드에 응답하여 더 이상의 루틴을 호출하지 않는다.
단계(236)의 테스트에서 사용자의 활동이 없다고 판단되면, 단계(245 및 247)에서 감독 루틴은 비활동 대기 타이머 및 비활동 중지 타이머가 종료되었는지를 각각 테스트한다. 시스템(10)이 대기 상태(152)에 있다면, 비활동 대기 타이머의 종료에 관해 조사하지 않는다. 도리어, 테스트는 단계(244)에서 건너뛴다.
저장된 분 값에서 현재의 분 값을 감산하여 사용자 활동이 있은 이래 경과된 분수(number of minutes)와 대응하는 값을 얻으므로서, 두 타이머의 종료 여부가 검사된다. 단계(245)에서는 이 값을 비활동 대기 종료(timeout)값과 비교하고, 단계(247)에서는 이 값을 비활동 중지 종료값과 비교한다. 2개의 종료값은 사용자에 의해 선택될 수 있으며, 시스템이 대기 상태(152)로 진입할 수 없거나, 중지 상태(154)로 진입할 수 없거나, 두 타이머중 하나의 종료로 인해 대기 상태(152) 혹은 중지 상태(154)로 진입할 수 없도록 세트될 수 있다. 종료값을 0으로 세트하면, 그 타이머는 절대로 종료할 수 없다는 것을 나타낸다.
사용자의 마지막 활동으로부터 경과된 분수가 비활동 대기 종료값과 동일하거나 혹은 크면, 단계(246)에서, 감독 루틴은 시스템(10)을 대기 상태(152)로 진입하도록 한다. 비활동 대기 타이머가 종료되지 않았으면, 단계(247)에서, 감독 루틴은 비활동 중지 타이머의 종료를 테스트한다. 반면에, 비활동 대기 타이머가 종료되었으면, 감독 루틴은 소정 구성요소를 제각기의 저전력 모드로 배치하여, 시스템(10)이 대기 상태(152)로 진입토록 한다. 바람직한 실시예에서 이는, (1) 제2 PAL U2를 012상태로 남겨두면서, O5H를 전력 관리 포트에 기록하므로서, 비디오 제어기(56)에 의한 비디오 신호 발생을 중단시키는 것, (2) 적절한 값을 고정형 디스크 제어기(86)에 기록하여, 하드 드라이브(31)가 저전력 모드로 진입토록 하는 것(하드 드라이브내 하드 디스크의 회전을 중지시킴), 또한, (3) 대기 플래그를 세팅하여 시스템(10)이 대기 상태(152)에 있음을 나타내는 것을 포함한다. 요약하면, 바람직한 실시예에서, 감독 루틴은 비디오 신호를 블랭크하고, 하드 드라이브(31)내의 하드 디스크를 회전 중단(spin down)시키고, 시스템(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) 특정 메시지는 컴퓨터 시스템의 정확한 특성(nature)에 의존한다. 또한, 감독 루틴은 정상 재개(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 구동기는 제8도에 도시된 감독 루틴과 같은 APM BIOS 루틴을 인식한다. 그 결과, APM은 대략 매초마다 감독 루틴을 폴링(polling)한다.
제10도에는 단계(250)에서 시작하는 중지 루틴이 도시되어 있다. 감독 루틴이 중지 요청 APM 반환 코드를 APM에 반환하는 것에 응답하여, APM은 중지 루틴을 호출한다. 우선 단계(252)에서, CPU 상태 저장 루틴을 호출한다. CPU 상태 저장 루틴은 제13도를 참조하여 보다 상세히 기술될 것이다. 이 시점에서는 다음과 같은 사항을 주목하는 것으로 족하다. 즉, 중지 루틴이 최초로 호출될 때 CPU(40)가 어느 모드에 있는가에 상관없이, 중지 루틴의 나머지(remainder)는 CPU(40)에서 실제모드(Real Mode)로 실행될 것이므로, 허용된 어드레스 범위를 넘어선 명령어의 실행을 시도하거나 혹은 특권 명령어(privileged 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)한다. BIOS ROM는, 우선 세그먼트 C000H와 D000H로의 ISA 액세서를 턴오프하므로서, 새도우 해제된다. 그후, BIOS 벡터는 세그먼트 C000H와 D000H를 가리키는 것으로부터 ROM(88)을 다시 가리키도록 변경된다. 다음, 단계(262)에서 세그먼트 C000H에 스택을 설정한다.
중지 루틴에 스택을 설정한 후, 단계(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으로 반환한다. 중지 루틴은 다음 이벤트 획득 동안 대략 일초(another second)후에 APM에 의해 다시 폴링(polling)될 것이다. 그 시점에서, 중지 처리를 불가능하게 했던 전송(들)은 아마도 완료되었을 것이며, 따라서 중지가 계속 될 수 있을 것이다.
이제 단계(264)를 다시 참조하면, 현재 진행중인 DMA 전송, 플로피 드라이스 전송, 혹은 하드파일 전송이 없다면, 중지가 수행될 수 있다. 중지 루틴은 단계(268)에서 계속된다. 전력 버튼(21)이 눌려질 때, 고장안전 타이머가 인에이블됨을 상기하라. 따라서, 제6도를 참조하여 설명한 바와 같이, 단계(268)에서, 첫 작업은 고장안전 타이머를 리세트하는 것이다. 제6 내지 7도를 참조하여 설명한 바와 같이, 고장 안전 타이머는 전력 관리 포트에 OX112를 기록하여 리세트된다. 이로 말미암아 (제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)에 조정된 전압 공급을 멈춘다는 것을 상기하라. 따라서, 중지 중간에 (mid-suspend) 전력이 제거되지 않도록, 중지 루틴은 적어도 대략 매10초마다 커패시터(C2)를 방전해야만 한다.
다음, 단계(270)에서는 8042 코프로세서(104)의 상태를 저장한다. 8042 코프로세서(104) 레지스터는 본 기술분야에 잘 알려져 있다. CPU(40)는 레지스터들을 직접 판독가능하며, 이 판독된 값을 D000H의 데이터 구조 내에 직접 기록한다.
다음, 단계(272)에서는 8259 인터럽트 제어기(92)의 상태를 저장한다. 중지 루틴은 8259 상태 저장 루틴을 호출하는데, 이는 제15도를 참조하여 상세히 기술될 것이다. 이 시점에서는 8259 상태 저장 루틴이 2개 8259 인터럽트 제어기(92)의 미지 레지스터들(비록 몇몇 레지스터들은 기록 전용일 수 있음)의 내용을 확인한다는 것을 인식하는 것으로 충분하다. 이 레지스터들의 값은 D000H의 데이터 구조 내로 직접 기록된다.
인터럽트 제어기(92)의 상태가 저장된 후, 인터럽트 제어기(92)의 구성은 중지 루틴에 의해 실행되는 각종 인터럽트 구동 단계(imterrupt-driven tasks)가 적절하게 동작하도록 하는 기지의 상태(a known state)로 변경되어야 한다. 따라서, 단계(274)에서 BIOS 데이터 영역 및 벡터 테이블이 교환된다. 중지 루틴은 세그먼트 0000H내에 현재 상태(present-state) BIOS 데이터 영역 및 벡터 테이블의 내용을 세그먼트 D000H내의 위치에 복사한다. 다음, 세그먼트 D000H내의 데이터 구조로부터의 기지 상태 BIOS 데이터 영역 및 벡터 테이블의 내용은 세그먼트 0000H내의 위치에 복사한다. 기지 상태 BIOS 데이터 영역 및 벡터 데이블은 후술하는 제11도의 부트업 루틴의 단계(414)에서 세그먼트 D000H내에 복사된다. 마지막으로, 현재 상태 BIOS 데이터 영역 및 벡터 테이블은 세그먼트 000H로부터 세그먼트 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)내의 레지스터들에 값들을 직접 기록하므로서 성취된다.
다음, 단계(294)에서 중지 파일을 하드 드라이브(31)내의 고정형 디스크 상에 위치하여야 한다. 중지 프일의 헤드, 섹터 및 실린더는 CMOS 메모리(96)에 저장된다. 일단 중지 파일의 위치가 정해지면, 파일 크기, 기호(signature)가 판독된다. 바람직한 실시예에서, 기호는 중지 파일의 존재를 나타내는 임의 길이의 ASCⅡ 코드이다. 기호 구현을 위한 다른 대안들이 가능한데, 그 일 예는 하드 파일 시스템 상에서 임의로 발견될 확률이 매우 낮은 이진 스트링(binary string)을 사용하는 것이다.
중지 파일의 파일크기 및 기호를 판독한 후, 다음 단계는 단계(296)에서 기호 및 파일크기가 정확한지를 확인하는 것이다. 기호가 부정확하여 다른 프로그램이 중지 파일을 수정하였음을 나타내거나 혹은 파일 크기가 부정확하여 중지 파일 크기가 수정되었다는 것을 나타낸다면, 단계(298)에서, 중지 루틴은 제13도의 단계(652)에서 개시되는 치명적 중지 에러 루틴(Final Suspend Error Routine)을 호출한다. 치명적 중지 에러 루틴을 벗어나기 위해 사용자가 스위치(17)을 누르면, 프로그램은 단계(299)에서 단계(506)으로 점프한다.
반면에, 기호가 정확하고 중지 파일이 충분히 크다면, 중지 루틴은 컴퓨터 시스템의 상태를 메모리에 기록하는 것을 속행할 수 있다.
컴퓨터 시스템(10)의 상태를 하드 드라이브(31)에 기록하기 전에, 단계(297)에서 고장안전 타이머(C2)는 리세트되고, 스위치(21)는 다시 눌려졌는지 테스트된다. 제6 내지 7도에서 상세히 설명한 바와 같이, 전력 관리 포트의 판독결과 FEH가 반환되면, 스위치(21)는 다시 눌려지지 않은 것이며, 중지는 속행된다. 반면에, 전력 관리 포트의 판독결과 FFH가 반환되면, 스위치(21)는 다시 눌려진 것이며, 중지는 포기된다. 커패시터(C2)가 방전되고, 중지 루틴내 다수의 지점(points)에서 스위치(21)의 폐쇄에 대한 테스트가 행해진다. 단계(297)는 단지 예시적인 것이다. 관련된 기술분야의 통상의 회로 설계자라면, 커패시터(C2) 방전의 횟수 및 커패시터(C2) 방전 사이의 시간을 판단할 수 있을 것이다. 중지 루틴은 커패시터(C2)를 확실히 방전시키므로서, C2에 의해 전원(17)이 턴오프 되기 전에, 고장아전 타이머를 리세트한다. 마찬가지로, 스위치(21)는 때때로 검사되어야 한다. 스위치(21)가 다시 눌려지는 경우, 사용자가 중지 포기를 원한다는 것을 나타내는 것이므로, 코드는 재개 루틴내 적절한 지점으로 점프하여 중지 루틴에 의해 이미 중지된 것을 중제 해제시킨다.
유사하게, 단계(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)내의 중지 플래그를 소가한 다음, 리세트된 부트업 루틴으로 점프한다.
본 발명의 컴퓨터 시스템(10)에서, 중지 루틴이 실행되는 동안 Ctrl-Alt-Del을 누르면 컴퓨터 시스템(10)이 오프 상태(156)로 진입토록 한다. 제2 PAL U2는 스위치(21)가 폐쇄된 후 스위치 상태 102에 있기 때문에, Ctrl-Alt-Del을 누르면 부트업 루틴이 호출되고, 부트업 루틴은 00H를 전력 관리 포트에 기록하여 제2 PAL U2를 기지의 상태에 둔다. 그러나, 제6 및 제7도를 참조하여 설명한 바와 같이 제2 PAL U2가 스위치 상태 102에 이쓴 동안, 00H를 제2 PAL U2에 기록하면 제 PAL U2는 전원(17)이 시스템 전력 공급을 중지토록 만든다. 따라서, 중지 루틴에 있는 동안 Ctrl-Alt-Del을 누르면, 컴퓨터 시스템(10)은 오프 상태(156)로 진입하게 된다.
이제 단계(300)를 참조하면, 중지 파일을 하드 드라이브(31)상에 다시 위치한다. 단계(300)에서 기호구(signature phrase)는 중지 파일의 제1바이트에 기록된다. 다음, 단계(302)에서 세그먼트 D000H내의 전체 64 킬로바이트 데이터가 중지 파일에 기록된다. D000H의 이러한 64K 복사는 실질적으로 장소 유지기(place holder)로서 역할하며, 중지 루틴 종료시 동일한 장소로 재기록될 것이다.
그 다음, 시스템 메모리가 중지 파일에 기록된다. 이것은 트윈 버퍼 시스템(twin-buffer system)이 시스템 메모리로부터 데이터를 판독하여 압축하고 세그먼트 C000H에 기록한 후, 마지막으로, 세그먼트 C000H로부터의 압축된 데이터를 중지 파일에 기록하므로서 성취된다. 2개의 루틴들이 시분할로 동작한다. 한 루틴은 데이터를 압축하여 세그먼트 C000H에 기록하며, 다른 루틴은 중지 파일에 기록한다. 전자는 포어그라운드(foreground)에서 실행되고, 후자는 백그라운드(background)에서 실행되는 인터럽트 구동 루틴이다. 분명히, 단지 하나의 CPU(40)에만 있으므로 단지 하나의 루틴만이 주어진 시간 내에 실행 가능하다. 그러나, 후자의 루틴은 인터럽트 구동 방식이므로 중지 파일로의 데이터 전송 속도를 최적화하는데 필요한 대로 전자의 루틴의 실행을 인터럽트할 수 있다. 두 개의 버퍼는 각각 8킬로바이트 길이로, 이 길이는 하드 드라이브(31)로의 전송 시간을 최적화한다고 사료된다.
컴퓨터 상태의 이러한 저장은 모든 메모리 데이터와 모든 레지스터 데이터를 비휘발성 저장 장치에 기록하거나, 또는 컴퓨터 시스템이 효과적으로 복원되도록 충분한 메모리 데이터와 충분한 레지스터 데이터를 비휘발성 저장 장치에 기록하고, 그후에 전원이 제1전원 상태에서 제2전원 상태로 변하도록 하므로서 수행될 수 있다. 대안으로, 이러한 저장은 메모리 데이터 및 레지스터 데이터의 일부 또는 전부의 값을 역변경하고, 그후 비휘발성 저장 장치에 컴퓨터 시스템이 효과적으로 복원될 수 있도록 역변경된 메모리 데이터 및 레지스터 데이터의 충분한 부분과 역변경되지 않은 잔여 메모리 데이터 및 레지스터 데이터의 충분한 부분을 기록하므로서 수행될 수 있다. 다른 대안으로, 이러한 저장은 CPU 레지스터 데이터, CPU 캐쉬 데이터, 시스템 데이터, 시스템 캐쉬 데이터, 비디오 데이터, 및 비디오 레지스터 데이터의 값을 역변경하고, 그후 역변경된 값을 비휘발성 저장장치에 기록하므로서 수행될 수 있다.
이 프로세스는 단계(304)에서 개시되며, 테이터를 판독 및 압축한 후, 8K 버퍼의 시작부를 채우기에 충분한 데이터를 세그먼트 C000H에 기록된다. 데이터는 연속 길이 인코딩 방법(run length encording method)을 사용하여 압축된다. 그러나, 다른 적절한 압축 방법이 사용될 수도 있다. 이때, 단계(307)에 도시된 버퍼 기록 루틴(Write from Bffer Routine)이 개시된다. 버퍼 기록 루틴(307)은 인터럽트 구동 루틴으로서, 백그라운드에서 실행되며 단계(308-310)로 구성된다. 단계(311)로 표시된 압축 루틴(Compression Routine)은 단계(312-318)로 구성되며 포어그라운드 루틴이다. 먼저, 단계(308)에서 버퍼 기록 루틴(307)은 단계(304)에 의해 이제 막 채워진 버퍼를 중지 파일에 기록한다. 버퍼로부터의 기록 루틴(307)이 버퍼의 내용을 중지 파일에 기록하는 동안, 단계(312)에서 압축 루틴(311)은 시스템 메모리로부터 다음 바이트를 계속 판독하여 압축한 후, 이 압축된 데이터를 이 2개의 8K 버퍼중 나머지 한쪽의 버퍼에 기록한다. 일단 압축 루틴(311)이 버퍼를 압축된 데이터로 채우면, 다음 단계인 단계(314)에서는 전체 시스템 메모리가 압축되었는지의 여부를 판단한다.
IDE 제어기(86)는 데이터를 하드 드라이브(31)에 매우 신속하게 기록할 수는 없다. 그 결과, 압축 루틴(311)은 버퍼로부터의 기록 루틴(Write from Buffer Routine)(307)이 버퍼를 하드 드라이브(31)에 기록하는 작업을 종료하기 전에, 하드 드라이브(31)에 기록되고 있지 않는 8K 버퍼를 채우는 작업을 종료할 것이다. 따라서, 압축 루틴(311)은 버퍼로부터의 기록 루틴이 버퍼를 하드 드라이브(31)에 기록하는 것을 끝마치기를 기다려야만 한다. 압축 루틴(311)이 모든 시스템 메모리의 압축 및 기록을 종료하지 못한 경우, 압축 루틴(311)은 단계(316)에서 버퍼로부터의 기록 루틴(307)을 대기한다. 압축 루틴(311) 및 버퍼로부터의 기록 루틴(307)은 플래그 세트(a set of flags)를 통해 통신한다. 버퍼로부터의 기록 루틴(307)이 현재의 버퍼를 중지 파일에 기록하는 것을 끝마치면, 이 루틴은 버퍼 플래그를 스위칭하여, 압축 루틴(307)이 중지 파일에 기록된 버퍼를 압축된 데이터로 채우는 것을 시작할 수 있다는 것을 압축 루틴에 나타낸다. 다음, 단계(297)를 참조하여 설명한 바와 같이, 고장 안전 타이머 C2가 리세트되고 스위치(21)는 폐쇄 이벤트(closure event)에 대하여 검사된다.
단계(310)에서, 버퍼 기록 루틴(307)은 이제 막 중지 파일에 기록된 버퍼가 기록되어야 할 마지막 버퍼인지를 판단한다. 마지막 버퍼가 아닌 경우, 버퍼로부터의 기록 루틴은 압축 루틴(311)에 의해 채워진 버퍼를 중지 파일에 기록한다. 그 동안에, 압축 루틴(311)은 버퍼 플래그를 조사하여 버퍼가 압축된 시스템 메모리를 더 수신할 준비가 되었는지를 판단한다. 즉, 단계(316)에서, 압축 루틴은 버퍼로부터의 기록 루틴이 현재의 버퍼를 끝마칠 때까지 기다린 후, 단계(312)에서 압축 루틴을 계속한다. 유의할 것은 비디오 메모리(58)는 압축되지 않는다는 점이다. 앞서 보다 상세히 기술한 바와 같이, 비디오 메모리(58)는 도이러 VESA 호출을 이용하는 비디오 제어기(56)를 통해 판독되고, 트윈 버퍼 시스템을 사용하여 압축 없이 기록된다.
일단 압축 루틴(311)이 모든 시스템 메모리의 압축을 끝마치면, 단계(318)에서 버퍼로부터의 기록 루틴(307)이 마지막 버퍼를 중지 파일에 기록할 때까지 기다린다. 일단 버퍼로부터의 기록 루틴이 완료되면, 버퍼로부터의 기록 루틴은 단계(310)에서 (318)로 분가하여 종료한다. 이때, 어떠한 백그라운드 루틴도 실행되지 않고 있으며, 주 프로그램은 단계(320)에서 계속된다.
다음, 단계(320)에서 비디오 제어기(56)의 상태가 저장된다. 이 비디오 제어기(56) 레지스터는 본 기술분야에서 잘 알려져 있다. 모든 레지스터들은 CPU에 의해 직접 판독 가능하고, 이들 값은 DOOOH내의 데이터 구조 내로 직접 기록된다. 또한, 단계(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)에 진입하면 중지 파일을 고치는 것(tampering)을 탐지해낼 수 있어야 바람직하다. 예를 들면, 어떤 사람이 수정된 중지파일을 생성하여, 이 중지 파일을 하드 드라이브(31)로 이동시킨 후, 전에 저장된 상태와 다른 상태로 컴퓨터 시스템(10)이 복원되도록 시도하는 것이 가능하다. 이를 위하여, 의사 무작위값(pseudo-random value)이 세그먼트 D00H 데이터 구조 내에 배치된다. 단계(328)에서 도시된 바와 같이, 고속 타이머(102)중의 하나로부터 16 비트 타임스탬프(16-bit time-stamp)가 판독된다. 그후, 이 타임스탬프는 세그먼트 DOOOH 데이터 구조에 기록된다.
다음, 캐리 비트를 고려하지 않고 세그먼트 D00H내의 각 16비트 워드를 가산하므로서 전체 DOOOH 세그먼트에 대한 16비트 검사합(checksum)이 계산된다. 단계(330)에서 이 검사합은 세그먼트 DOOOH 데이터 구조로 기록되고, 단계(332)에서 CMOS NVRAM(96)으로 기록된다. 이러한 과정 후에, 단계(334)에서, 모든 작업 변수(working variables)는 CPU(40)로부터 세그먼트 DOOOH 데이터 구조로 기록된고, 단계(336)에서, 중지 파일의 기호구뒤에 (기호 바로 다음에) 전체 세그먼트 DOOOH가 중지 파일로 재기록된다. 다음, 단계(338)에서 컴퓨터 시스템(10)의 상태가 중지 파일로 저장되었음을 시스템(10)에 알려주기 위해 CMOS NVRAM(96)내에 중지 플래그가 세트된다.
마지막으로, CPU(40)는 X102를 전력 관리 포트에 기록하여 제2 PAL U2가 102상태로 진입하게 하므로서 전원을 턴오프시킨다. 제2 PAL U2가 102상태로 진입하면, 제2 PAL U2의 핀(12) 출력은 논리 1로 되고, SR 래치의 출력 핀(3)이 논리 0상태가 되고, 이 저항(R6)에 의해 하이로 되어, 전원(17)의 주요/조정 장치(172)가 ±5 및 ±12 라인을 통한 조정된 전압 공급을 중단하므로서, 전원(17)은 턴오프 된다. 상기 전압이 대략 0으로 램프 다운하는데는 수 초가 걸리면, 이 동안 CPU(40)는 다수의 커맨드를 실행할 수 있다. 따라서, CPU(40)는 전원(17)에 의해 생성되는 시스템 전력 전압이 감쇠되어 CPU(40)의 동작이 중지될 때까지 단계(342)에서 무한 루프를 실행한다.
이제 제11도를 참조하면, 부트업 루틴(Boot-Up Routine)이 상세히 도시되어 있다. 부트 과정은 제8도를 참조하여 간략히 설명한 바 있다. CPU(40)가 리세트 벡터에 의해 지시된 코드로 점프하여 그 코드를 실행할 때, 부트업 루틴은 단계(380)에서 시작한다. 이는 CPU(40)가 파워업될 때마다 또한 CPU(40)가 리세트 벡터에 의해 지시된 코드로 점핑하여 리세트될 때마다 발생한다. 이 리세트 절차는 본 기술분야에서 잘 알려져 있다.
첫 작업은, 단계(382)에서, CPU(40)를 테스트하고 메모리 제어기(46)를 초기화하는 것이다. CPU는 POST 루틴에 의해 테스트된다. 메모리 제어기(46)는 POST 루틴에 의해 초기화된다.
그 다음, 새도우 메모리(shadow memory)가 테스트되고, BIOS가 ROM(88)에서 RAM(53)의 새도우 메모리 부분으로 복사된다. 실행 코드(executed code)의 흐름은 CMOS NVRAM(96)내에서 중지 플래그가 세트되었는지의 여부에 의해 좌우된다. 중제 플래그가 셋트되어 있으면, 컴퓨터 시스템(10)은 중지 상태(150)에 있고, 이 컴퓨터 시스템(10)은 중지되었을 당시의 상태로 복원되어야 한다. 세그먼트 EOOOH 및 F000H내의 시스템 RAM(53)에 대해서는 단축된 테스트가 행해진다. 컴퓨터가 재개하는데 걸리는 시간을 감소시키기 위해, 메모리는 단지 적당한 크기에 대해서만 검사하고, 0이 된다(OOOH가 각 위치에 기록된다).
반면에, 중지 플래그가 CMOS NVRAM(96)에서 소거(clear)된 경우, 세그먼트 EOOOH 및 FOOOH내의 시스템 RAM(53)에 대해서는, (1) 스틱키 비트 테스트(sticky-bit test), (2) 이중 비트 메모리 테스트(double-bit memory test), 및 (3) 교차 어드레스 라인 테스트(a crossed address line test)를 포함하는 표준, 심층 메모리 테스트(standard, in-depth memory test)가 행해진다.
세그먼트 EOOOH 및 FOOOH가 테스트된 후에, 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)의 완전한 테스트(complete test)를 수행하는데, 이는 본 기술 분야에서 잘 알려져 있다.
다음 단계(412)에서, 플로피 드라이브 제어기(84)가 테스트되고 초기화된다. 이때, 모든 장치들이 초기화되고 벡터는 기지의 위치(known locations)를 가리켜, 모든 인터럽트 루틴은 예상대로 동작할 것이다. 따라서, 단계(414)에서 부트업 루틴은 BIOS 데이터 영역 및 벡터 테이블을 스냅샷(snapshot)하여, BIOS 데이터 영역 및 벡터 테이블의 사본을 세그먼트 D000H내의 데이터 구조에 기록한다. 이 BIOS 데이터 영역 및 벡터 테이블의 사본은 단계(274)에서 중지루틴에 의해 사용되어, 모든 인터럽트가 예상대로 동작하면서 컴퓨터 시스템(10)이 기지의 상태로 되도록 한다.
다음, 단계(416)에서 BIOS 확장(BIOS extentions)이 본 기술분야에서 잘 알려져 있는 바와 같이 스캔 인(scanned in)되고 초기화된다. BIOS 확장은 네트워크 어댑터와 같은 주변 어댑터들에 의해 시스템에 부가된 BIOS 코드 블록들이다. BIOS 확장은 전형적으로 ISA 버스(76)상의 세그먼트 COOOH 및 DOOOH에 위치하고, BIOS 확장을 식별하기 위해 연관된 기호(signature)를 가진다. BIOS 확장이 검출되면, 길이가 검사되고 검사합이 계산되어 감사된다. 기호, 길이 및 검사합의 모두가 유효한 BIOS 확장의 존재를 표시하는 경우, 프로그램 제어는 기호를 3바이트 지난 명령어로 전달되고, BIOS 확장은 주변 어댑터의 초기화와 같은 소정의 필요한 작업을 수행할 수 있다. 일단 확장이 실행 종료되면, 제어는 다시 부트업 루틴으로 전달되고, 이 부트업 루틴은 BIOS 확장이 더 존재하는지를 검색한다. 이후의 BIOS 확장들도 전술한 BIOS 확장처럼 처리된다. 더이상의 BIOS 확장이 검출되지 않으면, 부트업 루틴은 단계(417)로 이동한다.
단계(417)에서 부트업 루틴은 그 중지 파일에 특별히 할당된 파티션(parition)으로 보이는 하드 드라이브(31)상의 파티션을 탐색한다. 파티션 테이블에서 PS/1 식별자(FE)를 가지는 파티션이 발견되고, 이 파티션이 이러한 특정 시스템의 중지 파일을 수용하기에 충분히 큰 경우, 그 중지 파일에 대한 파티션으로 확정된다. 결과적으로, 중지 파일은 본 기술분야에 잘 알려져있는 바와 같이 파일 할당 표(FAT)내에 할당되며, 중지 파일 기호는 파일의 제1바이트에 기록되고, 파일의 시작 헤드, 섹터 및 실린더는 CMOS NVRAM(96)에 기록된다.
그후, 실행 모드의 흐름은 CMOS NVRAM(96)내에 중지 플래그가 세트되어 있는지의 여부에 따라 단계(418)에서 분기한다. 중지 플래그가 소거된 경우, 부트업 루틴은 단계(420)에서 제어를 PBOOT 루틴으로 넘긴다. PBOOT는 본 기술분야에 잘 알려져 있으며, 플로피 디스크 혹은 하드 드라이브(31)로부터 커맨드 인터프리터(command interpreter) 및 운영 체지(OS)를 적재하는 책임이 있다. 본 발명의 정상 부팅 루틴은, OS가 적재될 때 단계(417)에서 중지 파일에 대한 파티션이 발견되지 않은 경우, OS가 연속 섹터의 파일을 FAT에 할당하는 OS 특정 드라이버를 실행하고 중지 파일의 제1바이트에 기호를 기록하며, 중지 파일의 시작 헤드, 섹터 및 실린더를 CMOS NVRAM(96)에 기록하도록 다소 수정된다.
중지파일이 할당되는 시점과 무관하게, FAT내의 영역은 중지와 재개동안 디스크로의 신속한 기록과 디스크로부터의 신속한 판독이 가능하도록 연속적인 섹터이어야 한다.
다음, PBOOT는 CONFIG,SYS 파일 내에 발견되는 명령어를 기초로 하여 시스템을 구성한다. 최종적으로, PBOOT는 AUTOEXEC.BAT 파일에 실행 제어를 넘겨주며, AUTOEXEC.BAT 파일은 결국 실행제어를 운영 체제로 넘긴다. 중지 플래그가 CMOS NVRAM내에서 소거되어 전원이 마지막으로 제거되었을 때 시스템의 상태가 저장되지 않았음을 나타내는 경우, 단계(421)를 참조하여 상세히 설명된 RESUME.EXE가 무시된다.
단계(418)를 다시 참조하면, 중지 플래그가 CMOS NVRAM(96)내에서 세트되어, 전원이 마지막으로 제거되었을 때 시스템의 상태가 저장되었음을 나타내는 경우, 실행코드의 흐름은, 단계(419)에서 CMOS NVRAM(96)내에서 재초기화 어댑터 플래그(Reinitialize Adapter Flag)가 세트되어있는지의 여부에 따라 단계(419)에서 분기한다. 재초기화 어댑터 플래그가 세트된 경우, 부트업 루틴은 제어를 단계(421)에서 PBOOT 루틴으로 넘긴다. 통상적인 PBOOT 루틴처럼, 본 발며의 PBOOT 루틴은 본 기술분야에서 잘 알려져 있는 바와 같이, 구동기(drivers)를 적재하고 시스템을 구성하는 CONFIG.SYS 및 AUTOEXEC.BAT 파일의 커맨드에 따라 시스템을 구성한다.
CONFIG.SYS 및 AUTOEXEC.BAT내의 커맨드는 시스템내의 어댑터 카드(adapter card)를 초기화할 수 있다. 이 응용은 3가지 유형의 어댑터 카드가 존재한다고 가정한다. 유형 Ⅰ 어댑터는 초기화를 필요로 하지 않는다. 유형 Ⅱ 어댑터는 초기화를 필요로하지만 CONFIG.SYS 혹은 AUTOEXEC.BAT 파일에 따라 적재돈 구동기 혹은 BIOS 확장에 의해 기지의 작업 상태에 놓이게 된다. 유형 Ⅲ 어댑터는 시스템 상에서의 코드 실행에 의해 수정된다. 유형 Ⅰ 및 유형 Ⅱ 어댑터를 구비한 시스템은 중지 및 복원될 수 있다. 그러나, 다수의 네트워킹 어댑터들(networking adapters)을 포함하는 유형 Ⅲ 어댑터를 구비한 시스템은, 이 카드들이 에러 복구 루틴(routine to recover from an error)을 구비하지 않는 한, 복원될 수 없다. 시스템은 에러로부터 복구되는 유형 Ⅲ 카드를 중지시킬 수 있다.
바람직한 실시예에서 RESUME.EXE 파일은 AUTOEXEC.BAT 파일에 부가되어, PBOOT로부터 재개 루틴으로 프로그램 제어를 전달하는 책임이 있다. 단계(420)에서, PBOOT는 RESUME.EXE의 존재를 무시한다. 그러나, 단계(421)의 PBOOT는 RESUME.EXE를 실행하여, 유형 Ⅱ 어댑터가 CONFIG.SYS 및 AUTOEXEC.BAT로부터 PBOOT에 의해 적재된 장치 구동기에 의해 초기화된 후에, 제어를 재개 루틴으로 넘긴다.
단계(419)를 다시 참조하면, 재초기화 어댑터 플래그가 CMOS(96)에서 소거된 경우, 부트업은 CONFIG.SYS 및 AUTOEXEC.BAT의 처리 없이 실행 제어를 직접 (422)의 재개 루틴으로 넘긴다. 재개 루틴은 하드 드라이브상의 중지 파일로부터 시스템 상태를 복원하며, 이는 제12도를 참조하여 보다 상세히 기술될 것이다.
이제 제12도를 참조하면, 단계(450 내지 530)로 구성된 재개 루틴(Resume Routine)이 상세히 도시되어 있다. 구성 프로세스 동안, BIOS 데이터 영역 및 벡터 테이블은 미지의 상태로 수정될 수 있다. 그러므로, 기본 BIOS 루틴은 예상한 대로 동작할 수도 있고 그러하지 않을 수도 있다. 따라서, 재개 루틴은 단계(454)에서, 세그먼트 DOOOH를 판독/기록으로 인에이블하며, 단계(456)에서 교환 BIOS 데이터 영역 및 벡터 테이블 루틴을 호출한다. 이 루틴은, 단계(414)에서 세그먼트 DOOOH로 복사되었던 기지의 양호한 BIOS 데이터 영역 및 벡터 테이블을 현재 세그먼트 0000H에서 활성인 수정된 BIOS 데이터 영역 및 벡터 테이블과 교환(swap)한다. 루틴이 종료되었을 때, 알려진 BIOS 데이터 영역 및 벡터 테이블은 세그먼트 DOOOH에서 활성이며, 수정된 BIOS 데이터 영역 및 벡터 테이블은 세그먼트 D000H내에 있고, BIOS 루틴은 예상한 대로 동작할 것이다.
그 다음, 단계(458)에서 재개 루틴은 하드 드라이브와 키보드를 지원하는 것들을 제외하고는 모든 인터럽트를 디스에이블한다. 그후, 단계(460)에서 재개 루틴은 하드 드라이브 상에 중지 파일을 위치(locate)시키며, 중지 파일의 파일크기 및 전술한 바와 같이 중지 파일에 대한 멀티 바이트 식별자인 기호를 판독한다. 단계(462)에서 실행 코드의 흐름은 중지 파일이 올바른 크기와 기호를 가졌는지의 여부에 따라 분기한다. 중지 파일에 올바른 크기와 기호를 가지지 않은 경우, 단계(464)로 분기하여 CMOS 메모리(96)내에서 중지 플래그를 소거한 후, 단계(466)에서 프로그램 제어는 리세트 벡터에 의해 지시된 장소내의 코드로 전달되어, 시스템이 중지되지 않았던 것처럼 이 시스템을 부팅시킨다. 반면, 중지 파일이 올바른 크기와 기호를 지닌 경우, 단계(468)에서 재개 루틴은 기호뒤에 위치한 중지 파일내 64K 블럭(세그먼트 DOOOH 정보에 대응하는 중지 파일의 부분)을 판독하고, 세그먼트 COOOH에 기록하여 시스템 재개를 속행한다.
다음, 단계(470)에서 COOOH내의 블럭의 검사합이 계산되고, 단계(472)에서 CMOS 비휘발성 메모리(96)로부터 이전에 저장된 검사합이 판독되고, 단계(474)에서 실행 코드의 흐름은 단계(470)에서 계산된 검사합이 단계(330)에서 계산된 검사합과 동일한지의 여부에 따라 분기한다. 단계(470)에서 계산된 검사합이 단계(330)에서 계산된 검사합과 다른 경우, 중지 파일은 다소 결함이 발생한 것이며(예를 들면, 고쳐질 수 있음), 제어는 단계(464)으로 넘어가서, 작업 (464 및 466)을 참조하여 설명된 바와 같이, 중지 플래그를 소거하고 시스템을 리세트한다. 단계(470)의 계산된 검사합과 단계(330)에서 계산된 검사합이 동일한 경우, 단계(476)에서 중지 파일은 중지 루틴에 의해 기록된 검사합과 동일하다고 여겨져, 세그먼트 COOOH내의 데이터가 세그먼트 DOOOH로 복사된다. 유의할 것은, COOOH 데이터가 DOOOH로 복사될 때, 수정된 BIOS 데이터 영역 및 벡터 테이블은 중복 기록(overwrite)되며, 따라서, 복구가 불가능하다는 것이다.
이제 단계(478)에서, 재개 루틴은 시스템이 복원되고 있으며, 사용자가 재개를 포기하려면 Ctrl-Alt-Del을 눌러야 한다는 것을 사용자에게 표시하는 특정 신호를 스크린상에 기록한다. 중지 루틴에서 처럼, Ctrl-Alt-Del을 누르면, 단계(526)에서 중지 플래그가 소거되고, 단계(528)에서 시스템이 재부팅된다. 그러나, 재부팅시, 제2 PAL U2는 스위치 상태 012에 있으며, 따라서, X00H를 전력 관리 포트에 기록하더라도 전원(17)의 시스템 전력 공급을 그만두게 할 수 없다. 따라서, Ctrl-Alt-Del이 눌려지고 재개 루틴이 실행중일 때, 시스템은 정상적으로 재부팅된다.
다음 단계(480, 482 및 484)에서, 8277 디스켓 제어기(84), DMA 장치(71) 및 UART(94)는 세그먼트 DOOOH 데이터 구조의 값을 그들 제각기의 레지스터에 기록하므로서 복원된다.
그후 단계(486 내지 500)에서, 시스템 메모리는 단계(304 내지 318)을 참조한 설명에서 기술된 루틴과 유사한 트윈 버퍼(twin buffer) 루틴을 이용하여 중지 파일로부터 복원된다. 이 트윈 버퍼 시스템은 중지 파일로부터 압축된 데이터를 판독하여, 이 판독된 데이터를 세그먼트 COOOH에 기록한 후, 그것을 다시 압축 해제하여 시스템 메모리에 기록한다. 두 루틴에 시분할로 작동한다. 한 루틴은 중지 파일로부터 데이터를 판독하고, 이 판독된 데이터를 세그먼트 COOOH에 기록한다. 다른 한 루틴은 데이터를 압축 해제하여, 이 압축 해제된 데이터를 시스템 메모리에 기록한다. 후자는 포어그라운드에서 실행되며, 전자는 백그라운드에서 실행되는 인터럽트 구동 루틴이다. 분명히, 단지 하나의 CPU(40)만이 존재하므로, 주어진 시간에서 단지 하나의 루틴만이 실행될 수 있다. 그러나, 전자의 루틴은 인터럽트 구동 루틴이므로, 중지 파일로부터의 데이터 전송 속도를 최적화하기 위한 필요에 따라 후자 루틴의 실행을 인터럽트할 수 있다. 두 버퍼 각각의 길이는 전송 시간을 최적화한다고 사료되는 8K바이트이다.
이 프로세스는 단계(486)에서 시작하여, 중지 파일로부터 판독하고, 8K 버퍼의 시작부분을 채우기에 충분한 데이터를 세그먼트 COOOH에 기록하는 것으로 시작한다. 이때, 버퍼 판독 루틴(Read from Buffer Routine)(489)은 단계(306)에서 시작한다. 버퍼 판독 루틴(489)은 백그라운드에서 실행되며 단계(490-492)으로 구성되는 인터럽트 구동 루틴이다. 압출 해제 루틴(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)이 중지 파일로부터 방금 판독된 버퍼내 데이터에 대한 압축 해지를 시작할 수 있음을 압축 해지 루틴(493)에 표시한다. 그후 (492)에서 버퍼 판독 루틴(489)은 중지 파일로부터 판독되어야 할 8K 블럭이 남아있는지를 판단한다. 판독할 블럭이 남아 있지 않는 경우, 단계(502)에서 버퍼 판독 루틴은 중지 파일로부터 남아있는 데이터를 판독하여, 이 판독된 데이터를 현재 버퍼에 기록한다. 그후, 단계(500)에서 버퍼 판독 루틴은 백그라운드에서 실행을 멈추고, 사실상 압축 해제 루틴이 마지막 메모리의 압축 해제를 끝마치는 것을 기다린다.
그동안, 압축 해제 루틴(493)은 버퍼 플래그를 조사하여 버퍼가 시스템 메모리로 압축 해제될 준비가 되었는지를 판단한다. 즉, 압축 해제 루틴은 버퍼 판독 루틴이 현재 버퍼에 대한 작업을 종료할 때까지 기다리며, 종료시 압축 해제 루프는 단계(494)에서 속행된다.
일단 압축 해제 루틴(493)이 모든 시스템 메모리에 대한 압축 해제를 종료하면, 어느 백그라운드 루틴도 실행되지 않으며, 주 프로그램은 단계(504)에서 속행된다.
다음, 단계(504, 506)에서 비디오 제어기(56) 및 IDE 제어기(86)는 DOOOH 데이터 구조로부터의 값을 이들 각각의 장치의 레지스터들에 기록하므로서 복원된다. 그후, 단계(508)에서 CPU 캐시(41) 및 시스템 캐시(60)는 적절한 값을 CPU(40) 및 캐시 제어기(62)에 기록하여 인에이블된다. 다음 단계(510-514)에서, 재개 루틴은 세그먼트 DOOOH 데이터 구조의 값을 타이머 제어기(102), 8042 키보드 인터페이스 마이크로 프로세서(104) 및 8259 인터럽트 제어기(92) 내의 레지스터들에 기록하므로서, 각 장치의 상태를 복원한다.
다음, 단계(516)에서 재개 루틴은 교환 BIOS 데이터 영역 및 벡터 테이블 루틴(Swap BIOS Data Area and Vector Table Routine)을 호출한다. 이 루틴이 호출 되기 전에, 기지의 BIOS 데이터 영역 및 벡터 테이블은 세그먼트 0000H에서 활성 상태이며, 중지 파일로부터 판독된 BIOS 데이터 영역 및 벡터 테이블은 세그먼트 DOOOH에서 비활성 상태이다. 교환 후, 기지의 BIOS 데이터 영역 및 벡터 테이블은 세그먼트 DOOOH에서 비활성 상태이며, 중지 루틴에 의해 저장된 BIOS 데이터 영역 및 벡터 테이블은 세그먼트 OOOOH에서 활성 상태이다.
마지막으로, 단계(518)에서 재개 루틴은 CPU 복원 루틴으로 점프하는데, 이 루틴은 CPU(40)을 중지되기 전의 상태로 복원한다. CPU 복원 루틴(Restore CPU Routine)은 제14도를 참조하여 보다 상세히 기술될 것이다. 결국 CPU 복원 루틴은 실행 제어를 다시 APM으로 넘긴다.
최종적으로, CPU(40)는 복귀(RETURN) 명령어를 실행하여, 시스템이 APM으로 복귀토록 한다. 이제 시스템은 시스템이 전혀 중지되지 않았던 것처럼 코드 실행을 속행한다. 실제로, 시스템은 중지/재개 절차에 의해 영향을 받지 않는다.
이제 제13도를 참조하면, CPU 상태 저장 루틴(Save CPU State Routine)이 도시되어 있다. 단계(600)에서중지 루틴은 CPU 상태 저장 루틴으로 점프한다. 유의할 것은, APM은 이들 루틴이 실행되는 세그먼트 EOOOH 및 FOOOH를 판독/기록으로 인에이블한다는 것이다. 또한, 단계(602)에서 EFLAGS 및 8개의 범용 레지스터들(general purpose register)이 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비트 모드로 실행중인지를 나타내기 위해 플래그가 세트된다.
실행 코드의 흐름은, CPU(40)가 보호모드(Protected Mode)에서 실행중인지의 여부에 따라 단계(612)에서 분기한다. CPU(40)가 보호모드에서 실행중이 아닌 경우, 실제모드(Real Mode)에서 실행중임이 분명하며, 레지스터들은 매우 간명한 방식(straightforward manner)으로 저장될 수 있다. 먼저, 단계(614)에서 기계 상태 워드(machine status word)내의 값 및 CR3내의 값들은 세그먼트 E000H 데이터 구조에 기록된다. 또한, 단계(614)에서, TR 및 LDTR은 실제모드에서 0이므로, TR 및 LDTR에 대응하는 영역인 세그먼트 E000H 데이터 구조에 0이 기록된다.
그 다음, 단계(616)에서 코드는 공통 코드 경로(common code path)와 합쳐지며, GDTR 및 LDTR내에 저장된 값들이 세그먼트 EOOOH 데이터 구조에 기록된다. 다음, 실행 코드의 흐름은 단계(618)으로 진행하여, CPU(40)가 가상 8086 모드에서 실행되는지 아닌지의 여부에 따라 분기한다. CPU(40)가 가상 8086 모드에서 실행중이 아닌 경우, 코드는 공통 경로를 따라 단계(620)으로 진행하여, 디버그 레지스터들(debug registers)(DR7, DR6, DR3, DR2, DR1 및 DR0)이 스택에 푸시된다. 이들 레지스터는 디버거 혹은 다른 루틴에 의해 사용된다. 그 다음, 단계(622)에서 DS, ES, FS 및 GS가 스택에 푸시된다. 그 다음, CS, SS 및 ESP내의 값들은 세그먼트 EOOOH 데이터 구조에 기록된다.
이 시점에서, 세그먼트 EOOOH 데이터 구조에 기록되어야 할 모든 값들이 기록되었고, 따라서, 단계(626)에서 새도우 RAM 세그먼트 EOOOH 및 FOOOH는 턴오프으로 변경될 수 있다. 다음, 단계(628)에서 CPU 캐시(41)는 라이트 백(Write-Back)과 무효화 캐시(Invalidate Cache) 커맨드를 사용하여 플러시(flush)된다.
궁극적으로, 단계(630)에서 독특한 셧다운 플래그(Shutdown Flag)가 CMOS 비휘발성 메모리(96)내에 세트된다. 마지막으로, CPU 상태 저장 루틴은 중지 루틴으로 사실상 복귀(Return)한다. 복귀는 사실상 코드의 분기(branch)에 뒤이인 RESET이다. CPU(40)는 리세트 벡터에 의해 지시된 코드로 점핑하므로서 리세트된다. CPU(40)를 리세트하면 CPU가 실제모드로 진입하며, 실제모드에서는 모든 장치 및 메모리 영역이 보호 결함(protection fault) 발생의 염려없이 액세스될 수 있다. 이후에, CPU 상태가 저장되고, 중지 루틴은 시스템의 나머지 상태를 저장해야만 한다
리세트 벡터에 의한 지시된 코드내에서, 프로그램 제어는 셧 다운 플래그(Shutdown Flag)가 CMOS(96)에서 세트되어 있는지의 여부에 따라 분기한다. 셧다운 플래그가 소거된 경우, 시스템은 정상적으로 부팅된다. 반면에, 셧다운 플래그가 세트되어 있는 경우, 코드는 나머지 중지 루틴으로 분기한다. 즉, 실행 제어는 중지 루틴내의 제10도에 도시된 단계(253)으로 점프하여, 시스템(10)의 중지를 종료한다. 따라서, 단계(632)에서 CPU 상태 저장 루틴은 중지 루틴으로 효과적으로 복귀한다.
단계(612)을 다시 참조하면, CPU가 보호모드에 있는 경우, 코드는 단계(634)에서, CPU가 가상 8086 모드내에 있는지의 여부에 따라 분기한다. CPU가 가상 8086 모드가 아닌 경우, 코드는 단계(636)에서 현재 특권 레벨(priviledge level)이 0인지 혹은 아닌지의 여부에 따라 다시 분기한다. 현재 특권이 0이 아닌 경우, 적당한 특권이 없는 루틴이 CPU 상태 저장 루틴을 실행하고 있으며, (단계(652)에서 시작하는) 치명적 중지 에러 루틴(Fatal Suspend Error Routine)이 호출된다. 치명적 중지 에러 루틴은 후술될 것이다. 프로그램 제어가 치명적 중지 에러 루틴으로부터 복귀하는 경우, CPU는 CPU 상태 저장 루틴이 호출되기 전의 상태로 복귀되여야 하므로, 프로그램 셀행은 제14도의 단계(794)으로 분기하여, CPU의 부분 복원(partial restore)을 수행한다. 단지 부분 복원만이 필요한데 그 이유는 CPU의 매우 작은 부분만이 수정되었기 때문이다.
단계(636)을 다시 참조하면, 호출 코드가 적당한 특권 레벨을 가지는 경우, 단계(642)에서 저장이 계속되어 CR0, CR3, TR 및 LDTR의 값들이 세그먼트 EOOOH 데이터 구조에 저장된다. 그후, 전술한 바와 같이, 단계(616)에서 이 코드경로는 공통 코드 경로와 합쳐져 GDTR 및 IDTR의 값들이 EOOOOH 데이터 구조에 저장된다. 이곳으로부터, 코드는 전술한 단계(618 내지 632)의 경로를 따르며, 그 결과 나머지 중지 루틴 코드로 복귀(RESET + 분기)한다.
단계(634)을 다시 참조하면, CPU(40)가 가상 8086 모드에 있는 경우, 실행은 단계(644)에서 속행되어, 기계 상태 워드(CR0의 하위 16비트)의 값이 EOOOH 데이터 구조에 저장되고, 세그먼트 EOOOH 데이터 구조내의 플래그가 세트되어 CPU가 가상 8086 모드라는 것을 나타낸다. 그 다음, 이 코드는 전송 단계(646 및 648)을 통해 단계(616)에서 공통 코드와 합쳐진다. 단계(618)에서, CPU가 가상 8086 모드인 경우, 제어는 단계(650)으로 분기하여, DE, ES, FS 및 GS의 값들이 세그먼트 EOOOH 데이터구조에 저장된다. 이 코드는 단계(624)에서 공통 코드와 다시 합쳐진다. 이곳으로부터, 코드는 전술한 경로(624 내지 632)를 따르고, 그 결과 나머지 중지 루틴 코드로 복귀(RESET + 분기)한다.
치명적 중지 에러 루틴은 단계(652 내지 664)으로 구성되며, 부적절한 특권 레벨을 가진 코드가 CPU의 상태를 저장하고자 하는 경우, 단계(638)에서 호출된다. 먼저, 단계(654)에서 제7도를 참조하여 설명한 바와 같이 07H와 05H를 전력 관리 포트에 기록하므로서 고장안전 타이머가 리세트된다. 그 다음 단계(656)에서, 스피커(speaker)는 1/6초 간격으로 0.25초 동안 886 HZ에서 3차례 발신음을 낸다. 3차례의 발신음은 시도된 중지가 발생하지 않았음을 사용자에게 경고한다. 발신음 후에, 단계(658)에서 고장안전 타이머가 다시 리세트되어, 고장안전 타이머가 종료되고 이로써 전원(17)이 셧다운되기 전에 사용자에게 15초 내지 18초를 제공한다.
다음, 단계(660 내지662)에서 치명적 중지 에러 루틴은 사용자가 스위치(21)를 눌러 중지를 포기하기를 원하는지를 검사한다. 제7도를 참조하여 설명한 바와 같이, 전력 관리 포트의 판독결과 FFH가 나타나기를 기다리므로서 이 스위치에 폐쇄를 조사한다. 사용자가 버튼(21)을 누른 경우, 실행제어는 전술한 단계(640)으로 복귀한다. 이와 달리, 15초 내지 18초내에 사용자가 버튼(21)을 누르지 않는 경우, 고장안전 타이머가 종료되고 전원은 턴오프되어, 모든 코드 실행은 중단된다.
이제 제14도를 참조하면, 단계(700)으로부터 시작하는 CPU 복원 루틴이 도시되어 있다. 이 루틴은 하드웨어 및 메모리의 나머비 부분이 중지 이전의 상태로 복원된 후 재개 루틴에 의해 호출된다. 우선 세그먼트 E000H와 F000H가 아직 판독/기록이 아니면, 이 세그먼트들은 단계(702)에서 판독/기록으로 만들어져야 한다.
다음, 실행 코드는 단계(704)으로 진행하여, CPU(40)가 중지되었을 당시 가상 8086 모드에서 실행중이였는지의 여부에 따라 분기한다. 시스템(10)이 중지되었을 때 CPU(40)가 가상 8086 모드에서 실행중이었으면, 실행코드는 가상 8086 CPU 복원(Virtual 8086 CPU restore)에 독특한 단계(706 내지 728)으로 진행된다. 그후, 코드는 단계(730 내지 748)의 공통 경로와 합쳐진다.
상기 상태가 저장되었을 때 CPU가 가상 8086 모드이었으면, CR3, LDTR 및 TR은 CPU 상태 저장 루틴에 의해 그들의 값을 EOOOH 데이터 구조로 저장하기 위하여 액세스될 수 없었다. 따라서, CR3, LDTR 및 TR은 단계(706, 708 및 710)에서 각각 추정(estimate)되어야만 한다. 일반적으로, 이들은 시스템 RAM(53)을 통해 CR3, LDTR 및 TR이 지시하는 구조를 탐색하므로서 추정된다. 예를 들면, GDT내의 LDT 엔트리를 발견하면 LDTR이 결정될 수 있다.
CR3는 단계(706)에서 추정된다. CR3는 페이지 디렉토리 베이스 레지스터(Page Directory Base Register : PDBR)를 보유하며, 이 레지스터는 디렉토리의 페이지 프레임 어드레스, 페이지 레빌 캐시 디스에이블(Page-Level Cache Disable : PCD) 비트 및 페이지 레벨 라이트 쓰루(PWT) 비트를 가진다. PDBR의 추정은 페이지 디렉토리가 시스템 RAM(53)내에서 4K 경계(boundary)에서 시작해야 한다는 것을 알고, CPU 상태 저장 루틴에 의해 세그먼트 EOOOH 데이터 구조에 저장된 IDTR 및 GDTR의 값을 알고, BIOS 코드가 어드레스 공간 0E0000 - 0F0000에서부터 실행중이라는 가정하에 수행된다. BIOS 코드는 속도를 향상시키기 위하여 이미 새도우 RAM내로 새도우되었으므로 이러한 가정은 타당하다. 운영 체제가 BIOS 코드를 다른 영역으로 복사한 경우에는 CR3의 추정은 실패할 수 있다.
전술한 지식 및 가정과 함께, BIOS 코드 세그먼트에 대응하는 페이지 변환표(page translation table)의 존재 여부를 알기 위해 물리적 메모리(physical memory)의 매 4K 페이지가 테스트된다. 즉, 페이지로의 0380H의 오프셋(offset)은 값 000E0XXX, 000E1XXX, 000E2XXX,... 000FFXXX를 포함할 것이다. 일단 페이지의 위치가 파악되면, 시스템 RAM(53)을 탐색하여 이렇듯 위치가 파악된 페이지 표의 물리적 어드레스에 대응하는 첫 엔트리를 가지는 페이지 디렉토리를 찾는다. 페이지 디렉토리의 물리적 어드레스는 양호한 PDRB 추정값이다.
그후, 가설 PDRB(hypothetical PDRB)은 PDRB이 GDTR 및 LDTR의 어드레스를 정확하게 변환하는지 확인하므로서 검증된다. 즉, PDRB은 GDTR의 선형 어드레스(liner address)를 변환하는데 사용하고, GDT의 첫 엔트리는 널(null)이 되는지 확인된다(GDT의 첫 8바이트는 무든 CPU 모드내에서 항상 OOH임). 그후, 반환된 물리적 어드레스가 물리적 메모리의 범위내에 드는지 확인된다. 선형적-물리적 변환(linear to physical translation)을 성취하기 위해, CPU의 변환 방법을 모방(mimic)하는 서브루틴이 사용된다. 변환된 어드레스는 ES1내에 반환되고, 물리적 페이지가 물리적 메모리내에 존재하는 경우 캐리 플래그 CF는 소거되며, 물리적 페이지가 메모리에 존재하지 않는 경우 CF는 세트된다. 이 변환 루틴을 사용하여, GDT의 첫 바이트가 메모리(53)으로부터 판독된다. GDT의 첫 엔트리가 널(null)인 경우, 가설 PDRB은 제1테스트를 통과하고, 따라서, 다시 한번 테스트된다. 그후, PDBR은 변환 루틴을 사용하여 IDT를 발하기 위해 IDTR을 변환하는데 사용된다. 그다음, 반환된 물리적 어드레스는 물리적 메모리의 범위내에 드는지 확인된다. IDT의 첫 위치가 물리적 메모리내에 존재하는 경우, PDTR은 제2테스트를 통과한다.
가설 PDBR이 GDTR 및 IDTR로 올바르게 변환되는 경우, 그 값은 PDBR로 추정되어(presumed) 세그먼트 EOOOH 데이터 구조내 CR3 영역에 기록된다. 반면에, 가설 CR3가 어느 하나의 테스트라도 실패하는 경우, 루틴은 다시 시작되어, 시스템 메모리를 탐색하여 유효한 CR3로 인도할 수 있는 또 다른 BIOS 코드 세그먼트 페이지 변환 표를 찾는다.
PCD 및 PWT는 정상 플래이너 동작동안 OOH에서 고정된 것으로 향상 추정된다. 이들 값은 0으로 세트되며, CR3 영역의 PDBR과 함께 세그먼트 EOOOH 데이터 구조내에 기록된다.
일단 CR3가 추정되었으면, 단계(708)에서 LDTR이 추정된다. LDT가 GDT내의 어딘가에 있음을 알고, LDT가 메모리내에 존재하여야 함을 알므로, CR3가 추정되었을 때, LDTR은 추정될 수 있다. LDTR을 추정하기 위해, GDT가 탐색되어 존재하는 것으로 표시된 LDT을 찾는다. (단계(706)을 참조하여 설명된 변환 루틴을 사용하여 테스트되는) 물리적 메모리에 존재하고, 존재하는 것으로 표시된 첫 LDT는 LDTR이 지시하는 표이라고 가정된다. 이 표의 시작부의 물리적 어드레스는 세그먼트 EOOOH 데이터 구조내의 LDTR 영역에 저장된다.
비록 OS/2 하에서, 하나 이상의 LDT가 존재하는 것으로 표시될 수 있고 물리적 메모리에 존재할 수 있지만, 전술한 LDTR 추정 방법은 충분히 유용하다고 믿어진다. EMM386은 공통 가상 8086 모드 루틴(common Virtual 8086 Mode routine)이며, 따라서, 문제들을 일으키는 것처럼 보일 수 있다. 그러나, EMM386은 단지 하나의 CR3와 하나의 LDTR만을 가지므로, EMM386의 CR3 및 LDTR은 추정이 용이하다.
일단 CR3 및 LDTR이 추정되면, 단계(710)에서 TR이 추정된다 필연적으로 GDT 및 LDT내의 각 작업 선택기 엔트리(task selector entry)가 탐색되어 비지 비트(busy bit)가 세트된 작업 상태 선택기를 찾는다. 비지 80286 작업 상태 선택기인지 혹은 비지 80486 작업 상태 선택기인지를 판단하기 위해 각 엔트리의 유형 필드(type field)가 테스트된다. 비지 286 TSS 혹은 비지 486 TSS를 가지는 첫 엔트리는 TR이 지시하는 어드레스로 추정된다. 비지 286 혹은 486 TSS를 가지는 엔트리의 물리적 주소는 세그먼트 EOOOH 데이터 구조내의 TR 영역에 저장된다. 어떠한 엔트리도 비지 286 혹은 486 TSS를 가지지 않는 경우, 세그먼트 EOOOH 데이터 구조내의 TR 영역에 0이 저장된다.
CR3, LDTR 및 TR을 추정한 후, 코드는 단계(712)에서 속행된다. 단계(712)에서 TR이 유효 TSS를 지시하는 경우, 단계(714)에서 TR에 의해 지시된 TSS의 비지 비트(busy bit)는 소거된다. 어느 경우나, 코드는 단계(716)으로 진행하여, DS, ES, FS 및 GS가 GDT에 대한 유효한 선택기와 함께 적재된다. 그후 단계(718)에서, CR3 및 CR0가 세그먼트 E000H 데이터 구조로부터의 값으로 적재된다. 다음, 단계(720)에서 페이징 인에이블되어, 선형 어드레스가 물리적 어드레스와 동일한 유일한 영역은 세그먼트 EOOOH 및 F000H내의 영역이 된다. 그 다음, 단계(722)에서 IDTR, GDTR, LDTR 및 TR이 세그먼트 EOOOH 데이터 구조에 저장된 값으로 적재된다.
마지막으로, 단계(724 및 726)에서, 세그먼트 EOOOH 데이터 구조로부터의 GS, FS, DS, ES, SS, ESP, EFLAGS(VM 비트를 세팅한 후) 및 CS에 대응하는 값들을 스택상에 푸싱(pushing)하므로서, 가상 8086 인터럽트 스텍이 생성된다. 또한, 단계(726)에서 단계(730)의 코드에 대응하는 복귀 어드레스(return address)가 스택상에 푸싱된다. 마지막으로, IRETD 명령어가 실행되어 CPU(40)를 가상 8086 모드로 다시 배치하고, 단계(730)에 대응하는 코드로 실행을 전송한다.
단계(730)은 제14도의 각종 경로가 공통으로 사용하는 공통 경로를 시작한다. 단계(730)은 코프로세서(44)는 세그먼트 EOOOH 데이터 구조에 저장된 값을 이용하여 복원된다. 다음, 단계(732)에서 어드레서 라인(20)(I/O 포트 92H)의 상태가 스택으로부터 팝(pop)된다. 그다음, 단계(734)에서 새도우 RAM 세그먼트 COOOH가 다시 턴오프이 된다. 단계(736)에서 APM은 제7도는 참조하여 설명한 바와 같이 O1H를 전력 관리 포트에 기록하므로서 하드위어에 접속된다. 그다음, 단계(738)에서 새도우 RAM 세그먼트 EOOOH 및 FOOOH가 다시 턴오프으로 된다. 마지막으로, 단계(740)에서, CPU 상태 복원 루틴은 정상 재개가 발생하였음을 나타내는 플래그를 세트한다. 단계(742, 744 및 746)은 CPU 상태 복원 루틴에 의해 실행되지 않으며, 중지 이벤트에 의해 인터럽트되었던 코드로 복귀하기에 앞선 소정의 시간에, 8개의 범용 레지스터들이 스택으로부터 팝 오프(pop off)되고, (코드가 인터럽트되었을 시 마스크 가능 인터럽트들이 인에이블된 경우) 마스크가능 인터럽트(maskable interrupt)가 인에이블되고, 플래그가 스택으로부터 팝 오프되는 것을 나타내기 위해 사용된다. 마지막으로, CPU 상태 복원 루틴은 감독 루틴(Supervisor Routine)으로 복귀하며, 감독 루틴은 제어를 다시 APM으로 반환하고, APM은 모든 진부한 시스템값(stale system values)들을 갱신하고, 제어를 다시 인터럽트되었던 코드로 반환한다.
단계(704)을 다시 참조하면, CPU(40)가 인터럽트되었을 당시 가상 8086 모드에 있지 않은 경우, 코드는 경로(750 내지 792)로 진행하고, 단계(730 내지 748)의 공통 경로와 병합한다. 단계(750)에서, 세그먼트 EOOOH 데이터 구조내의 TR값이 TR이 유효 TSS를 지시한다고 나타내는 경우, 단계(752)에서 이 TSS의 비지 비트는 소거된다. 어느 경우나, (754)에서, GDTR 및 CR0가 세그먼트 EOOOH 데이터 구조의 값으로 적재된다.
단계(756 내지 764)에서, 더미 페이지 디렉토리 표(dummy page directory table)과 페이지 변환 표(page translation table)이 세그먼트 C000H로 적재된다. 우선, 단계(756)에서 새도우 RAM 세그먼트 COOOH가 판독/기록으로 된다. 두번째, 단계(758)에서 새로운 페이지 디렉토리 표이 어드레스 0C000H에서 생성된다. 세번째, 단계(760)에서 이 새로운 페이지 디렉토리 표의 첫 엔트리는 0C1000H를 지시하도록 수정된다. 네번째, 단계(762)에서 어드레스 0E0000 내지 0FFFFF가 제공되고, 이 어드레스 범위내에서 선형 어드레스들은 물리적 어드레스들과 동일하도록 새로운 페이지 변환 표이 0C1000H에서 생성된다. 마지막으로, 어드레스 변환이 0C0000H내의 새로운 더미 페이지 디렉토리 및 페이지 변환 표를 통해 이루어지도록 CR3내의 페이지 디렉토리 베이스 레지스터는 0C000H로 적자된다.
다음, 단계(766)에서 새도우 RAM 세그먼트 E000H 및 F000H는 판독/기록으로 된다. 그 다음, CPU(40)가 중지될 때 16비트 코드를 실행중이었던 경우 CPU(40)은 16비트 모드에 있었던 것이며, 단계(770)에서 16비트 코드 경로를 지시하는 오프셋(offset)이 세그먼트 E000H 데이터 구조에 저장된다. 반면에, CPU(40)가 16비트 모드가 아니었던 경우, 이 CPU(40)는 32비트 모드에 있었던 것이며, 단계(772)에서 16비트 오프셋 대신에 32비트 코드 경로를 지시하는 오프셋이 세그먼트 E000H 데이터 구조내에 저장된다. 어쨌던, 이들 코드 경로는 병렬적이며, 하나는 16비트 오퍼랜드를 사용하며 다른 하나는 32비트 오퍼랜드를 사용하는 것외에는 차이가 없다. 단계(770 내지 772)은 단순히 이들 평행 경로들(parallel paths) 중의 어느 하나로 오프셋을 설정한다. 이 경로 중의 하나(오프셋에 대응하는 하나)가 후술할 단계(782)으로 진입한다.
다음, 단계(774)에서 세그먼트 E000H 데이터 구조로부터의 CR3 값이 EDX로 적재되고, 세그먼트 E000H 데이터 구조의 SS값이 CX로 적재되고, 세그먼트 E000H 데이터 구조로부터의 ESP값이 EBP로 적재되고, 세그먼트 E000H 데이터 구조로부터의 TR 값이 ESI의 상위 절반(upper half of ESI)으로 적재되고, 또한, 세그먼트 E000H 데이터 구조로부터의 LDTR값이 ESI(SI)의 하위 절반(lower half of ESI(SI))으로 적재된다. 이들 값은 이하 그들의 적절한 위치로 시프트된다. 그후, 단계(776)에서는 GDTR, LDTR 및 CR0가 세그먼트 EOOOH 데이터 구조로부터의 그들의 값으로 적재된다. 단계(778)에서 LDTR은 SI에 저장된 LDTR값으로 적재된다. 그후, 코드는 단계(770 내지 772)에 놓인 오프셋으로 멀리 점프한다. 먼 점프(far jump)는 연산 코드(opcode)를 직접 소오스 코드(source code)에 배치하고, 단계(770 혹은 772)으로부터의 오프셋을 사용하여 코딩된다. 그후, 단계(782)에서, 코드는 16비트 연산 코드 경로 혹은 32 비트 연산 코드 경로중의 하나에서 속행된다.
다음, 단계(784)에서 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 상태 저장 루틴의 흐름도가 도시되어 있다. 루틴은 2개의 8259 인터럽트 제어기(92)의 미지 레지스터 (비록 몇 개의 레지스터는 기록 전용이지만)의 내용을 확인한다. 8259 상태의 저장은 단계(802)에서 실시간 클록(98)에 의해 사용되는 주기적(periodic) 인터럽트값과, 단계(804)에서 다른 모든 판독가능한 레지스터들을 세그먼트 E000H 데이터 구조에 저장하므로 진행된다. 본 기술분야에 잘 알려져 있는 바와 같이, 컴퓨터 시스템(10)의 구조는 소정 8259 판독 전용 레지스터들이 고정된 값을 가지도록 요구한다. 이들값은 알려져 있으므로 결정할 필요가 없다. 얻기 어려운 8259 값들은 8259 베이스 어드레스(8259 base address), 8259 슬레이브 어드레스(8259 slave address)이며, 두 8259가 OS에 의해 대기중(pending) 혹은 서비스중(in-service)인 인터럽트를 나타내도록 세트되었는지의 여부이다.
상술한 4개지 사항(items)은 제15도의 나머지 코드에 의해 확인된다. 단계(806)에서 8259는, 키보드(12) 및 마우스(13) 인터럽트를 제외하고는, 마스크(mask)된다.
다음, 인터럽트 벡터 테이블은 단계(808)에서 물리적 메모리의 기저(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는 다시 판독 전용으로 되고, 단계(840)에서의 호출 프로그램(calling program)으로의 복귀에 대한 준비로서 단계(838)에서 모든 인터럽트들이 마스킹(masking)된다.
본 발명은 실시예를 설명함으로써 예시되었으며, 이들 실시예가 상당히 상세히 설명되었으나, 출원인은 첨부된 특허 청구범위를 본 발명의 상세한 설명으로 제한하려는 의도는 없다. 당업자라면 부가적인 장점 및 수정을 명백히 인지할 것이다. 예를 들면, 전술한 바와 같이, 데이터를 하드 디스크에 기록하기 전에 연속 길이 부호화(run length encoding) 기법을 사용하여 데이터를 압출할 수 있다. 이와 달리, 임의의 적절한 압축 방법이 사용되거나 압축 방법이 전혀 사용되지 않을 수도 있다. 그러므로, 본 발명은 특정한 상세한 사항들, 대표적인 장치 및 방법, 그리고, 예시되고 설명된 예들로 한정되지 않는다. 따라서, 출원인의 일반적인 발명 개념의 사상 및 범주를 벗어나지 않고서는 이러한 상세한 설명에 변경을 가할 수 있다.
본원 발명에 따른 컴퓨터 시스템은 고가의 구성요소 및 복잡한 설계를 사용하지 않으면서 전력 절약 모드(power-conservation mode)를 가지며, 중지 상태에서 정상 동작 상태로 재개하는데 시간이 적게 걸리는 효과가 있습니다.

Claims (24)

  1. 운영 체제(operating system) 및 응용 프로그램(application program)을 실행하며 BIOS를 구비하는 컴퓨터 시스템에 있어서, 상기 컴퓨터 시스템은 ① CPU와; ② 상기 CPU와 회로 통신하며 메모리 데이터를 저장하기 위한 휘발성 시스템 메모리와; ③ 상기 CPU와 회로 통신하며, 상기 CPU와의 협조로 다수의 인터럽트 이벤트를 처리할수 있고, 상기 휘발성 시스템 메모리에 위치하는 관련된 제1 인터럽트 벡터 세트를 가지며, 상기 휘발성 시스템 메모리에 위치하는 관련된 제1 인터럽트 서비스 루틴 세트를 가지고, 상기 제1 인터럽트 벡터 세트 및 상기 제1 인터럽트 서비스 루틴 세트에 해당하는 최소한 하나의 기준 어드레스를 저장하는 최소한 하나의 내부 기록 전용 레지스터(at least one internally-loeated write-only register)를 갖는 인터럽트 제어기와, ④ 상기 CPU와 회로 통신하며, 소정의 중지 이벤트에 응하여 상기 최소한 하나의 내부 기록 전용 레지스터의 상태를 결정하는 제어부를 포함하며, 상기 제어부는 상기 인터럽트 제어기의 최소한 하나의 기준 어드레스의 상태를 결정하기 위하여 ㉮ 상기 휘발성 시스템 메모리에 제2 인터럽트 벡터 세트를 기록하는 단계와, ㉯ 상기 휘발성 시스템 메모리에 제2 인터럽트 서비스 루틴 세트를 기록하는 단계-여기서, 상기 제2 인터럽트 서비스 루틴 세트의 각각은 상기 제2 인터럽트 벡터 세트로부터의 인터럽트 벡터의 최소한 하나에 해당함-와, ㉰ 상기 제2 인터럽트 벡터 세트로부터의 인터럽트 벡터의 최소한 하나에 해당하는 상기 제2 인터럽트 스비스 루틴의 하나에 의해 서비스되는 인터럽트 이벤트를 발생하는 단계와, ㉱ 상기 인터럽트 제어기와 협조하여 인터럽트 이벤트를 처리하는 단계와, ㉲ 상기 제2 인터럽트 벡터 세트로부터의 인터럽트 벡터의 최소한 하나에 해당하는 인터럽트 서비스 루틴의 하나로 인터럽트를 서비스하는 단계와. ㉳ 인터럽트를 서비스하는 상기 단계의 후에 상기 휘발성 시스템 메모리의 상태로부터 상기 인터럽트 제어기의 최소한 하나의 기준 어드레스의 상태를 결정하는 단게를 수행하는 컴퓨터 시스템.
  2. 운영 체제(operating system) 및 응용 프로그램(application program)을 실행하며 BIOS를 구비하는 컴퓨터 시스템에 있어서, 상기 컴퓨터 시스템은 ① CPU와; ② 외부 전원으로부터 상기 컴퓨터 시스템으로 시스템 전력을 선택적으로 제공하는 회로를 가지며, 제1전원 상태 및 제2전원 상태를 갖는 전원과; ③ 상기 CPU와 회로 통신하는 비휘발성 저장 장치와; ④ 상기 CPU와 회로 통신하며, 메모리 데이터를 저장하는 휘발성 시스템 메모리와; ⑤ 상기 CPU와 회로 통신하며, 상기 CPU와의 협조로 다수의 인터럽트 이벤트를 처리할 수 있고, 상기 휘발성 시스템 메모리에 위치하는 관련된 제1 인터럽트 벡터 세트를 가지며, 상기 휘발성 시스템 메모리에 위치하는 관련된 제1 인터럽트 서비스 루틴 세트를 가지고, 상기 제1 인터럽트 벡터 세트 및 상기 제1 인터럽트 서비스 루틴 세트에 해당하는 최소한 하나의 기준 어드레스를 저장하는 최소한 하나의 내부 기록 전용 레지스터(at least one internally-located write-only register)를 갖는 인터럽트 제어기와; ⑥ 상기 CPU와 회로 통신하며, 레지스터 데이터를 저장하는 휘발성 시스템 레지스터와; ⑦ 상기 CPU와 회로 통신하며, 상기 컴퓨터 시스템의 상태를 소정의 중지 이벤트에 응하여 정상 동작 상태와 중지 상태 사이에서 선택적으로 변경하는 제어부를 포함하며, ㉠ 상기 정상 동작 상태는 상기 전원이 상기 제1 전원 상태에 있고, 상기 컴퓨터 시스템은 사용자 커맨드 또는 운영 체제 또는 BIOS에 응하여 상기 응용 프로그램을 실행할 수 있는 것을 특징으로 하며, ㉡ 상기 중지 상태는 레지스터 데이터와 메모리 데이터가 상기 비휘발성 저장 장치에 저장되고, 상기 전원은 상기 제2 전원 상태에 있는 것을 특징으로 하고, ㉢ 상기 정상 동작 상태로부터 상기 중지 상태로의 변경은 상기 제어부가 상기 시스템 메모리 및 상기 시스템 레지스터로부터의 메모리 데이터 및 레지스터 데이터를 상기 소정 중지 이벤트에 응하여 상기 비휘발성 저장 장치로 복사하는 단계를 포함하며, ㉣ 상기 전원은 상기 제어부에 응하여 상기 전원 상태들 사이에서 변하고, ㉤ 상기 정상 동작 상태와 상기 중지 상태 사이의 변경은 상기 제어부가 상기 소정 중지 이벤트에 응하여 상기 전원으로 하여금 각각 상기 제1 전원 상태와 상기 제2 전원 상태 사이에서 변경하게 하는 단계를 더 포함하며, ㉥ 상기 제어부는 상기 인터럽트 제어기의 최소한 하나의 기준 어드레스의 상태를 확인하기 위하여 ㉮ 상기 휘발성 시스템 메모리에 제2 인터럽트 벡터 세트를 기록하는 단계와, ㉯ 상기 휘발성 시스템 메모리에 제2 인터럽트 서비스 루틴 세트를 기록하는 단계-여기서, 상기 제2 인터럽트 서비스 루틴 세트의 각각은 상기 제2 인터럽트 벡터 세트로부터의 인터럽트 벡터의 최소한 하나에 해당함-와, ㉰ 상기 제2 인터럽트 벡터 세트로부터의 인터럽트 벡터의 최소한 하나에 해당하는 상기 제2 인터럽트 서비스 루틴의 하나에 의해 서비스되는 인터럽트 이벤트를 발생하는 단계와, ㉱ 상기 인터럽트 제어기와 협조하여 인터럽트 이벤트를 처리하는 단계와, ㉲ 상기 제2 인터럽트 벡터 세트로부터의 인터럽트 벡터의 최소한 하나에 해당하는 이터럽트 서비스 루틴의 하나로 인터럽트를 서비스하는 단계와, ㉳ 인터럽트를 서비스하는 상기 단계의 후에 상기 휘발성 시스템 메모리의 상태로부터 상기 인터럽트 제어기의 최소한 하나의 기준 어드레스의 상태를 결정하는 단계를 수행하는 데스크탑 컴퓨터 시스템.
  3. 운영 체제(operating system) 및 응용 프로그램(application program)을 실행하며 BIOS를 구비하는 컴퓨터 시스템에 있어서, 상기 컴퓨터 시스템은 ① CPU와; ② 외부 전원으로부터 상기 컴퓨터 시스템으로 시스템 전력을 선택적으로 제공하는 회로를 가지며, 제1전원 상태 및 제2전원 상태를 갖는 전원과; ③ 상기 CPU와 회로 통신하는 비휘발성 저장 장치와; ④ 상기 CPU와 회로 통신하며, 메모리 데이터를 저장하는 휘발성 시스템 메모리와; ⑤ 상기 CPU와 회로 통신하며, 상기 CPU와의 협조로 다수의 인터럽트 이벤트를 처리할 수 있고, 상기 휘발성 시스템 메모리에 위치하는 관련된 제1 인터럽트 벡터 세트를 가지며, 상기 휘발성 시스템 메모리에 위치하는 관련된 제1 인터럽트 서비스 루틴 세트를 가지고, 상기 제1 인터럽트 벡터 세트 및 상기 제1 인터럽트 서비스 루틴 세트에 해당하는 최소한 하나의 기준 어드레스를 저장하는 최소한 하나의 내부 기록 전용 레지스터(at least one internally-located write-only register)를 갖는 인터럽트 제어기와; ⑥ 상기 CPU와 회로 통신하며, 레지스터 데이터를 저장하는 휘발성 시스템 레지스터와; ⑦ 상기 CPU와 회로 통신하며, 상기 컴퓨터 시스템의 상태를 소정의 중지 이벤트에 응하여 정상 동작 상태와 중지 상태 사이에서 선택적으로 변경하는 제어부를 포함하며, ㉠ 상기 정상 동작 상태는 상기 전원이 상기 제1 전원 상태에 있고, 상기 컴퓨터 시스템은 사용자 커맨드 또는 운영 체제 또는 BIOS에 응하여 상기 응용 프로그램을 실행할 수 있는 것을 특징으로 하며, ㉡ 상기 중지 상태는 레지스터 데이터와 메모리 데이터가 상기 비휘발성 저장 장치에 저장되고, 상기 전원은 상기 제2 전원 상태에 있는 것을 특징으로 하고, ㉢ 상기 정상 동작 상태로부터 상기 중지 상태로의 변경은 상기 제어부가 상기 시스템 메모리 및 상기 시스템 레지스터로부터의 메모리 데이터 및 레지스터 데이터를 상기 소정 중지 이벤트에 응하여 상기 비휘발성 저장 장치로 복사하는 단계를 포함하며, ㉣ 상기 전원은 상기 제어부에 응하여 상기 전원 상태들 사이에서 변하고, ㉤ 상기 정상 동작 상태와 상기 중지 상태 사이의 변경은 상기 제어부가 상기 소정 중지 이벤트에 응하여 상기 전원으로 하여금 각각 상기 제1 전원 상태와 상기 제2 전원 상태 사이에서 변경하게 하는 단계를 더 구비하며, ㉥ 상기 전원은 상기 컴퓨터 시스템에 보조 전력을 제공하는 회로를 더 구비하고, ㉦ 상기 제1 전원상태는 상기 전원이 시스템 전력과 보조 전력을 상기 컴퓨터 시스템에 상기 외부 전원으로부터 공급하는 것을 특징으로 하며, ㉧ 상기 제2 전원상태는 상기 전원이 시스템 전력을 상기 컴퓨터 시스템에 상기 외부 전원으로부터 제공하지 않고, 상기 전원이 보조 전력을 상기 컴퓨터 시스템에 상기 외부 전원으로부터 제공하는 것을 특징으로 하고, ㉨ 상기 제어부는 상기 인터럽트 제어기의 최소한 하나의 기준 어드레스의 상태를 확인하기 위하여 ㉮ 상기 휘발성 시스템 메모리에 제2 인터럽트 벡터 세트를 기록하는 단계와, ㉯ 상기 휘발성 시스템 메모리에 제2 인터럽트 서비스 루틴 세트를 기록하는 단계-여기서, 상기 제2 인터럽트 서비스 루틴 세트의 각각은 상기 제2 인터럽트 벡터 세트로부터의 인터럽트 벡터의 최소한 하나에 해당함-와, ㉰ 상기 제2 인터럽트 벡터 세트로부터의 인터럽트 벡터의 최소한 하나에 해당하는 상기 제2 인터럽트 서비스 루틴의 하나에 의해 서비스되는 인터럽트 이벤트를 발생하는 단계와, ㉱ 상기 인터럽트 제어기와 협조하여 인터럽트 이벤트를 처리하는 단계와, ㉲ 상기 제2 인터럽트 벡터 세트로부터의 인터럽트 벡터의 최소한 하나에 해당하는 인터럽트 서비스 루틴의 하나로 인터럽트를 서비스하는 단계와, ㉳ 인터럽트를 서비스하는 상기 단계의 후에 상기 휘발성 시스템 메모리의 상태로부터 상기 인터럽트 제어기의 최소한 하나의 기준 어드레스의 상태를 결정하는 단계를 수행하는 데스크탑 컴퓨터 시스템.
  4. 운영 체제(operating system) 및 응용 프로그램(application program)을 실행하며 BIOS를 구비하는 컴퓨터 시스템에 있어서, 상기 컴퓨터 시스템은 ① CPU와; ② 외부 전원으로부터 상기 컴퓨터 시스템으로 시스템 전력을 선택적으로 제공하는 회로를 가지며, 제1전원 상태 및 제2전원 상태를 갖는 전원과; ③ 상기 CPU와 회로 통신하는 비휘발성 저장 장치와; ④ 상기 CPU와 회로 통신하며, 메모리 데이터를 저장하는 휘발성 시스템 메모리와; ⑤ 상기 CPU와 회로 통신하며, 상기 CPU와의 협조로 다수의 인터럽트 이벤트를 처리할 수 있고, 상기 휘발성 시스템 메모리에 위치하는 관련된 제1 인터럽트 벡터 세트를 가지며, 상기 휘발성 시스템 메모리에 위치하는 관련된 제1 인터럽트 서비스 루틴 세트를 가지고, 상기 제1 인터럽트 벡터 세트 및 상기 제1 인터럽트 서비스 루틴 세트에 해당하는 최소한 하나의 기준 어드레스를 저장하는 최소한 하나의 내부 기록 전용 레지스터(at least one internally-located write-only register)를 갖는 인터럽트 제어기와; ⑥ 상기 CPU와 회로 통신하며, 레지스터 데이터를 저장하는 휘발성 시스템 레지스터와; ⑦ 상기 CPU와 회로 통신하며, 상기 컴퓨터 시스템의 상태를 소정의 중지 이벤트에 응하여 정상 동작 상태와 중지 상태 사이에서 선택적으로 변경하고, 상기 컴퓨터의 상태를 최소한 하나의 소정의 재개 이벤트에 응하여 중지 상태와 정상 동작 상태 사이에서 선택적으로 변경하는 제어부와; ⑧ 상기 CPU 및 상기 제어부와 회로 통신하며, 상기 CPU에 의해 상기 최소한 하나의 소정의 재개 이벤트에 응하여 최소한 하나의 소정 부트 작업을 수행할 수 있는 부트부(a boot unit)를 포함하며, ㉠ 상기 정상 동작 상태는 상기 전원이 상기 제1 전원 상태에 있고, 상기 컴퓨터 시스템은 사용자 커맨드 또는 운영 체제 또는 BIOS에 응하여 상기 응용 프로그램을 실행할 수 있는 것을 특징으로 하며, ㉡ 상기 중지 상태는 레지스터 데이터와 메모리 데이터가 상기 비휘발성 저장 장치에 저장되고, 상기 전원은 상기 제2 전원 상태에 있는 것을 특징으로 하고, ㉢ 상기 정상 동작 상태로부터 상기 중지 상태로의 변경은 상기 제어부가 상기 시스템 메모리 및 상기 시스템 레지스터로부터의 메모리 데이터 및 레지스터 데이터를 상기 소정 중지 이벤트에 응하여 상기 비휘발성 저장 장치로 복사하는 단계를 포함하며, ㉣ 상기 전원은 상기 제어부에 응하여 상기 전원 상태들 사이에서 변하고, ㉤ 상기 정상 동작 상태와 상기 중지 상태 사이의 변경은 상기 제어부가 상기 소정 중지 이벤트에 응하여 상기 전원으로 하여금 각각 상기 제1 전원 상태와 상기 제2 전원 상태 사이에서 변경하게 하는 단계를 더 포함하며, ㉥ 상기 제어부는 상기 인터럽트 제어기의 최소한 하나의 기준 어드레스의 상태를 확인하기 위하여 ㉮ 상기 휘발성 시스템 메모리에 제2 인터럽트 벡터 세트를 기록하는 단계와, ㉯ 상기 휘발성 시스템 메모리에 제2 인터럽트 서비스 루틴 세트를 기록하는 단계-여기서, 상기 제2 인터럽트 서비스 루틴 세트의 각각은 상기 제2 인터럽트 벡터 세트로부터의 인터럽트 벡터의 최소한 하나에 해당함-와, ㉰ 상기 제2 인터럽트 벡터 세트로부터의 인터럽트 벡터의 최소한 하나에 해당하는 상기 제2 인터럽트 서비스 루틴의 하나에 의해 서비스되는 인터럽트 이벤트를 발생하는 단계와, ㉱ 상기 인터럽트 제어기와 협조하여 인터럽트 이벤트를 처리하는 단계와, ㉲ 상기 제2 인터럽트 벡터 세트로부터의 인터럽트 벡터의 최소한 하나에 해당하는 이터럽트 서비스 루틴의 하나로 인터럽트를 서비스하는 단계와, ㉳ 인터럽트를 서비스하는 상기 단계의 후에 상기 휘발성 시스템 메모리의 상태로부터 상기 인터럽트 제어기의 최소한 하나의 기준 어드레스의 상태를 결정하는 단계를 수행하는 데스크탑 컴퓨터 시스템.
  5. 운영 체제(operating system) 및 응용 프로그램(application program)을 실행하며 BIOS를 구비하는 컴퓨터 시스템에 있어서, 상기 컴퓨터 시스템은 ① CPU와; ② 외부 전원으로부터 상기 컴퓨터 시스템으로 시스템 전력을 선택적으로 제공하는 회로를 가지며, 제1전원 상태 및 제2전원 상태를 갖는 전원과; ③ 상기 CPU와 회로 통신하는 비휘발성 저장 장치와; ④ 상기 CPU와 회로 통신하며, 메모리 데이터를 저장하는 휘발성 시스템 메모리와; ⑤ 상기 CPU와 회로 통신하며, 상기 CPU와의 협조로 다수의 인터럽트 이벤트를 처리할 수 있고, 상기 휘발성 시스템 메모리에 위치하는 관련된 제1 인터럽트 벡터 세트를 가지며, 상기 휘발성 시스템 메모리에 위치하는 관련된 제1 인터럽트 서비스 루틴 세트를 가지고, 상기 제1 인터럽트 벡터 세트 및 상기 제1 인터럽트 서비스 루틴 세트에 해당하는 최소한 하나의 기준 어드레스를 저장하는 최소한 하나의 내부 기록 전용 레지스터(at least one internally-located write-only register)를 갖는 인터럽트 제어기와; ⑥ 상기 CPU와 회로 통신하며, 레지스터 데이터를 저장하는 휘발성 시스템 레지스터와; ⑦ 상기 CPU와 회로 통신하며, 상기 컴퓨터 시스템의 상태를 소정의 중지 이벤트에 응하여 정상 동작 상태와 중지 상태 사이에서 선택적으로 변경하고, 상기 컴퓨터의 상태를 최소한 하나의 소정의 재개 이벤트에 응하여 중지 상태와 정상 동작 상태 사이에서 선택적으로 변경하는 제어부와; ⑧ 상기 CPU 및 상기 제어부와 회로 통신하며, 상기 CPU에 의해 상기 최소한 하나의 소정의 재개 이벤트에 응하여 최소한 하나의 소정 부트 작업을 수행할 수 있는 부트부(a boot unit)를 포함하며, ㉠ 상기 정상 동작 상태는 상기 전원이 상기 제1 전원 상태에 있고, 상기 컴퓨터 시스템은 사용자 커맨드 또는 운영 체제 또는 BIOS에 응하여 상기 응용 프로그램을 실행할 수 있는 것을 특징으로 하며, ㉡ 상기 중지 상태는 레지스터 데이터와 메모리 데이터가 상기 비휘발성 저장 장치에 저장되고, 상기 전원은 상기 제2 전원 상태에 있는 것을 특징으로 하고, ㉢ 상기 정상 동작 상태로부터 상기 중지 상태로의 변경은 상기 제어부가 상기 시스템 메모리 및 상기 시스템 레지스터로부터의 메모리 데이터 및 레지스터 데이터를 상기 소정 중지 이벤트에 응하여 상기 비휘발성 저장 장치로 복사하는 단계를 수행하며, ㉣ 상기 전원은 상기 제어부에 응하여 상기 전원 상태들 사이에서 변하고, ㉤ 상기 정상 동작 상태와 상기 중지 상태 사이의 변경은 상기 제어부가 상기 소정 중지 이벤트에 응하여 상기 전원으로 하여금 각각 상기 제1 전원 상태와 상기 제2 전원 상태 사이에서 변경하게 하는 단계를 더 구비하며, ㉥ 상기 전원은 상기 컴퓨터 시스템에 보조 전력을 제공하는 회로를 더 구비하고, ㉦ 상기 제1 전원상태는 상기 전원이 시스템 전력과 보조 전력을 상기 컴퓨터 시스템에 상기 외부 전원으로부터 공급하는 것을 특징으로 하며, ㉧ 상기 제2 전원상태는 상기 전원이 시스템 전력을 상기 컴퓨터 시스템에 상기 외부 전원으로부터 제공하지 않고, 상기 전원이 보조 전력을 상기 컴퓨터 시스템에 상기 외부 전원으로부터 제공하는 것을 특징으로 하고, ㉨ 상기 제어부는 상기 인터럽트 제어기의 최소한 하나의 기준 어드레스의 상태를 확인하기 위하여 ㉮ 상기 휘발성 시스템 메모리에 제2 인터럽트 벡터 세트를 기록하는 단계와, ㉯ 상기 휘발성 시스템 메모리에 제2 인터럽트 서비스 루틴 세트를 기록하는 단계-여기서, 상기 제2 인터럽트 서비스 루틴 세트의 각각은 상기 제2 인터럽트 벡터 세트로부터의 인터럽트 벡터의 최소한 하나에 해당함-와, ㉰ 상기 제2 인터럽트 벡터 세크로부터의 인터럽트 벡터의 최소한 하나에 해당하는 상기 제2 인터럽트 서비스 루틴의 하나에 의해 서비스되는 인터럽트 이벤트를 발생하는 단계와, ㉱ 상기 인터럽트 제어기와 협조하여 인터럽트 이벤트를 처리하는 단계와, ㉲ 상기 제2 인터럽트 벡터 세트로부터의 인터럽트 벡터의 최소한 하나에 해당하는 인터럽트 서비스 루틴의 하나로 인터럽트를 서비스하는 단계와, ㉳ 인터럽트를 서비스하는 상기 단계의 후에 상기 휘발성 시스템 메모리의 상태로부터 상기 인터럽트 제어기의 최소한 하나의 기준 어드레스의 상태를 결정하는 단계를 수행하는 데스크탑 컴퓨터 시스템.
  6. 컴퓨터 시스템의 상태를 저장하는 방법에 있어서, 상기 컴퓨터 시스템은 (a) 시스템 전력을 외부 전원으로부터 컴퓨터 시스템에 선택적으로 제공하는 회로를 가지며, 제1 전원 상태 및 제2 전원 상태를 갖는 전원과; (b) 전자기계식 비휘발성 저장 장치와; (c) 메모리 데이터를 저장하는 휘발성 메모리와; (d) 레지스터 데이터를 저장하는 휘발성 레지스터를 포함하며, 상기 방법은 (1) 소정 중지 이벤트에 응하여, 상기 메모리 및 레지스터의 데이터를 역변경하는 단계와; (2) 상기 컴퓨터 시스템이 상기 역변경된 메모리 및 레지스터 데이터로부터 복원되도록 상기 역변경된 데이터를 상기 전자기계식 비휘발성 저장장치에 기록하는 단계와; (3) 상기 전원이 상기 제1 전원 상태로부터 상기 제2 전원 상태로 변경하도록 하는 단계를 포함하는 컴퓨터 시스템 상태의 저장 방법.
  7. 제6항에 있어서, (1) 상기 메모리 및 레지스터 데이터를 역변경하는 단계와 (2) 상기 역변경된 메모리 및 레지스터 데이터를 상기 전자기계식 비휘발성 저장장치에 기록하는 단계는 순차적으로 수행되는 컴퓨터 시스템 상태의 저장 방법.
  8. 제6항에 있어서, 상기 메모리 및 레지스터 데이터를 역변경하는 상기 단계는 최소한 일부에 대해 전경(foreground) 작업으로 수행되며, 상기 역변경된 메모리 및 레지스터 데이터를 상기 전자기계식 비휘발성 저장 장치에 기록하는 상기 단계는 최소한 일부에 대해 배경(background) 작업으로 인터럽트 구동 루틴에 의해 수행되는 컴퓨터 시스템 상태의 저장 방법.
  9. 컴퓨터 시스템의 상태를 저장하는 방법에 있어서, 상기 컴퓨터 시스템은 (a) 시스템 전력을 외부 전원을로부터 컴퓨터 시스템에 선택적으로 제공하는 회로를 가지며, 제1 전원상태 및 제2 전원 상태를 갖는 전원과, (b) 전자기계식 비휘발성 저장 장치와; (c) 메모리 데이터를 저장하는 휘발성 메모리와; (d) 레지스터 데이터를 저장하는 휘발성 레지스터를 포함하며, 상기 방법은 (1) 소정 중지 이벤트에 응하여, 상기 메모리 및 레지스터의 데이터 중에서 적어도 일부를 역변경하는 단계와; (2) 상기 컴퓨터 시스템이 상기 역변경된 메모리 및 레지스터 데이터로부터 복원되도록 상기 역변경된 데이터와 변경되지 않은 잔여 메모리 및 레지스터 데이터의 적어도 일부를 상기 전자기계식 비휘발성 저장장치에 기록하는 단계와; (3) 상기 전원이 상기 제1 전원 상태로부터 상기 제2 전원 상태로 변경하도록 하는 단계를 포함하는 컴퓨터 시스템의 상태 저장 방법.
  10. 제9항에 있어서, (1) 상기 메모리 및 레지스터 데이터의 적어도 일부를 역변경하는 단계와 (2) 상기 전자기계식 비휘발성 저장 장치에 상기 역변경된 메모리 및 레지스터 데이터와, 변경되지 않은 메모리 및 레지스터 데이터의 잔여부의 적어도 일부를 기록하는 단계가 최소한 일부에 대해 시간 다중화 방식으로 수행되는 컴퓨터 시스템 상태의 저장 방법.
  11. 제9항에 있어서, (1) 상기 메모리 및 레지스터 데이터의 적어도 일부를 역변경하는 단계와 (2) 상기 전자기계식 비휘발성 저장 장치에 상기 역변경된 메모리 및 레지스터 데이터와 역변경되지 않은 잔여 메모리 및 레지스터 테이터의 적어도 일부를 기록하는 단계는 테이터의 일부를 역변경하여 제1 데이터 버퍼에 기록하고, 데이터의 다른 부분이 역변경되어 제2 데이터 버퍼에 저장되는 동안 최소한 일부에 대해 시간 다중화 방식으로 상기 역변경된 데이터 부분을 상기 제1 데이터 버퍼로부터 상기 전자 기계식 비휘발성 저장 장치에 기록하며, 상기 단계들은 데이터 버퍼에 상기 사용되는 버퍼에 관하여 교대하는 컴퓨터 시스템 상태의 저장 방법
  12. 제9항에 있어서, 상기 메모리 및 레지스터 데이터의 적어도 일부를 역변경하는 상기 단계는 최소한 일부에 대해서는 전경 작업으로 수행되고, 상기 전자기계식 비휘발성 저장 장치에 상기 역변경된 메모리 및 레지스터 데이터와 역변경되지 않은 잔여 메모리 및 레지스터 데이터의 적어도 일부를 기록하는 단계는 최소한 일부에 대해 배경 작업으로 인터럽드 구동 루틴에 의해 수행되는 컴퓨터 시스템 상태의 저장 방법.
  13. 제9항에 있어서, 상기 메모리 및 레지스터 데이터의 적어도 일부를 역변경하는 상기 단계는 상기 메모리 및 레지스터 데이터를 런 길이 인코딩 방식으로 압축하는 단계를 포함하는 컴퓨터 시스템 상태의 저장 방법.
  14. 제9항에 있어서, 상기 컴퓨터 시스템은 (a) CPU 레지스터 데이터를 저장하는 CPU 레지스터와 CPU 캐쉬 데이터를 저장하는 CPU 캐쉬 메모리를 갖는 CPU와, (b) 시스템 데이터를 저장하는 시스템 메모리와, (c) 시스템 캐쉬 데이터를 저장하는 시스템 캐쉬 메모리와, (d) 비디오 데이터를 저장하는 비디오 메모리와 비디오 레지스터 데이터를 저장하는 비디오 레지스터를 갖는 비디오 서브시스템을 포함하며, (1) 상기 메모리 데이터는 상기 CPU 캐쉬 데이터, 상기 시스템 데이터, 상기 시스템 캐쉬 데이터, 상기 비디오 데이터를 포함하고, (2) 상기 레지스터 데이터는 상기 비디오 레지스터 데이터와 상기 CPU 레지스터 데이터를 포함하는 컴퓨터 시스템 상태의 저장 방법.
  15. 제14항에 있어서, 상기 비디오 데이터는 상기 비휘발성 저장 장치에 기록되기 전에 역변경되지 않는 컴퓨터 시스템 상태의 저장 방법.
  16. 운영체제 및 응용 프로그램을 실행하는 데스크탑 컴퓨터 시스템에 있어서, 상기 컴퓨터 시스템은 (a) CPU와; (b) 시스템 전력을 외부 전원으로부터 컴퓨터 시스템에 선택적으로 제공하는 회로를 가지며, 제1 전원 상태 및 제2 전원 상태를 갖는 전원-상기 제1 전원 상태는 상기 전원이 시스템 전력과 보조 전력을 상기 외부 전원으로부터 상기 컴퓨터 시스템에 제공하는 것을 특징으로 하며, 상기 제2 전원 상태는 상기 전원이 시스템 전력을 상기 외부 전원으로부터 상기 전원에 제공하지 않고 상기 전원이 보조 전력을 상기 외부 전원으로부터 상기 컴퓨터 시스템에 제공하는 것을 특징으로 함-과; (c) 상기 CPU와 회로 통신하는 전자기계식 비휘발성 저장 장치와; (d) 상기 CPU와 회로 통신하며, 메모리 데이터를 저장하는 휘발성 시스템 메모리와; (e) 상기 CPU와 회로 통신하며, 레지스터 데이터를 저장하는 휘발성 시스템 레지스터와; (f) 상기 CPU와 회로 통신하며, 소정 중지 이벤트에 응하여 정상 동작 상태로부터 중지 상태로 상기 컴퓨터 시스템의 상태를 선택적으로 변경하는 제어 장치를 포함하며; (1) 상기 정상 동작 상태는 상기 전원이 상기 제1 전원 상태에 있고, 상기 컴퓨터 시스템이 상기 응용 프로그램을 실행할 수 있는 것을 특징으로 하고, (2) 상기 중지 상태는 상기 레지스터 데이터와 상기 메모리 데이터가 상기 전자기계식 비휘발성 저장장치에 저장되어 있고, 상기 전원은 상기 제2 전원 상태에 있는 것을 특징으로 하며, (3) 상기 정상 동작 상태로부터 상기 중지 상태로의 상기 변경은 상기 제어장치가 상기 소정의 중지 이벤트에 응하여 ① 상기 메모리 및 레지스터 데이터를 역변경하는 단계와, ② 상기 컴퓨터 시스템의 상태가 상기 역변경된 메모리 및 레지스터 데이터로부터 복원되도록 상기 역변경된 데이터를 상기 전자기계식 비휘발성 저장 장치에 기록하는 단계를 수행하고, (4) 상기 전원은 상기 제어 장치에 응하여 상기 전원 상태들 사이에서 변경하며, (5) 상기 정상 동작 상태로부터 상기 중지 상태로의 변경은 상기 제어 장치가 상기 전원으로 하여금 상기 소정의 중지 이벤트에 응하여 상기 제1 전원 상태로부터 상기 제2 전원 상태로 각각 변경하도록 하는 단계를 더 포함하는 데스크탑 컴퓨터 시스템.
  17. 제16항에 있어서, 상기 제어 장치는 전력 관리 프로세서와, 상기 CPU에 의한 실행을 위한 코드를 포함하는 데스크탑 컴퓨터 시스템.
  18. 제16항에 있어서, 상기 제어 장치는 상기 컴퓨터 시스템의 상태를 상기 중지 상태로부터 상기 정상 동작 상태로 최소한 하나의 소정 재개 이벤트에 응하여 선택적으로 변경시키는 것을 또한 특징으로 하며, 상기 제어 장치는 상기 소정 재개 이벤트에 응하여 ① 상기 역변경된 메모리 및 레지스터 데이터를 상기 전자기계식 비휘발성 저장 자치로부터 판독하고, ② 상기 메모리 및 레지스터 데이터의 상기 변경을 역변환하며, ③ 상기 메모리 데이터를 상기 휘발성 시스템 메모리에 기록하고 상기 레지스터 데이터를 상기 휘발성 시스템 레지스터에 기록하는 데스크탑 컴퓨터 시스템.
  19. 운영체제와 응용 프로그램을 실행하는 데스크탑 컴퓨터 시스템에 있어서, 상기 시스템은 (a) CPU와; (b) 상기 CPU와 통신하며, 관련된 장치 구동기를 갖는 최소한 하나의 전자 장치- 상기 장치 구동기는 상기 CPU가 상기 전자 장치의 파워온 상태와 다른 기지의 상태로 상기 전자 장치를 초기화하는 것을 실행시킬 수 있음-와; (c) 시스템 전력을 외부 전원으로부터 상기 컴퓨터 시스템에 선택적으로 제공하는 회로를 갖으며, 상기 제1 전원 상태 및 제2 전원상태를 갖는 전원과; (d) 상기 CPU와 회로 통신하는 비휘발성 저장 장치와; (e) 상기 CPU와 회로 통신하며 메모리 데이터를 저장하는 휘발성 시스템 메모리와; (f) 상기 CPU와 회로 통신하며 레지스터 데이터를 저장하는 휘발성 시스템 레지스터와; (g) 상기 CPU와 회로 통신하며, 상기 컴퓨터 시스템의 상태를 정상 동작 상태로부터 중지 상태로 소정의 중지 이벤트에 응하여 선택적으로 변경시키고, 상기 컴퓨터 시스템의 상태를 상기 중지 상태로부터 상기 정상 동작 상태로 최소한 하나의 재개 이벤트에 응하여 선택적으로 변경시키는 제어 장치와; (h) 상기 CPU 및 상기 제어 장치와 회로 통신하며, 상기 CPU가 최소한 제1 소정의 재개 부팅 작업을 상기 최소한 하나의 소정의 재개 이벤트에 응하여 수행하는 것을 실행시킬 수 있는 부팅 장치를 포함하여, (i) 상기 정상 동작 상태는 상기 전원이 상기 제1 전원 상태에 있고 상기 컴퓨터 시스템이 상기 응용 프로그램을 사용자 코맨트 또는 운영체제에 응하여 실행시킬 수 있는 것을 특징으로 하며, (2) 상기 중지 상태는 상기 레지스터 데이터 및 상기 메모리 데이터가 상기 비휘발성 저장 장치에 저장되고 상기 전원이 상기 제2 전원 상태에 있는 것을 특징으로 하고, (3) 상기 정상 동작 상태로부터 상기 중지 상태로의 상기 변경은 상기 제어 장치가 상기 시스템 메모리 및 상기 시스템 레지스터로부터의 상기 메모리 데이터 및 상기 레지스터 데이터를 상기 비휘발성 저장 장치에 상기 소정의 중지 이벤트에 응하여 복사하는 것을 포함하며, (4) 상기 전원은 상기 전원 상태들 사이에서 상기 제어 장치에 응하여 변경하고, (5) 상기 정상 동작 상태로부터 상기 중지 상태로의 상기 변경은 상기 제어 장치가 상기 전원으로 하여금 상기 소정의 중지 이벤트에 응하여 상기 제1 전원 상태로부터 상기 제2 전원 상태로 각각 변경하도록 하는 것을 더 포함하며, (6) 상기 제1 소정의 재개 부팅 작업은 상기 장치 구동기를 상기 시스템 메모리에 적재하고, 상기 최소한 하나의 소정 재개 이벤트에 응하여 상기 장치 구동기를 실행시키며, 상기 최소한 하나의 전자 장치를 상기 최소한 하나의 전자 장치의 파워온 상태와 가른 기지 상태로 초기화하는 것을 포함하는 데스크탑 컴퓨터 시스템.
  20. 제19항에 있어서, (1) 상기 중지 상태로부터 상기 정상 동작 상태로의 상기 변경은 상기 제어 장치가 상기 메모리 데이터 및 상기 레지스터 데이터를 비휘발성 저장 장치로부터 상기 소정의 재개 이벤트에 응하여 검색하는 단계를 포함하고, (2) 상기 장치 구동기의 실행이 상기 장치 구동기의 최소한 일부로 하여금 상기 시스템 메모리에 실행을 진전시키기 위하여 상주하도록 하는 정도까지, 상기 시스템 메모리에 상주하는 상기 장치 구동기의 상기 부분이 상기 비휘발성 저장 장치로부터 검색되는 데이터에 의하여 고쳐쓰기되는 데스크탑 컴퓨터 시스템.
  21. 운영체제 및 응용프로그램을 실행하는 데스크탑 컴퓨터 시스템에 있어서, 상기 시스템은 (a) CPU와; (b) 시스템 전력을 외부 전원으로부터 상기 컴퓨터 시스템에 선택적으로 제공하는 회로를 갖으며, 상기 제1 전원 상태 및 상기 제2 전원 상태를 갖는 전원과; (c) 상기 CPU와 회로 통신하는 비휘발성 저장 장치와; (d) 상기 CPU와 회로 통신하며 메모리 데이터를 저장하는 휘발성 시스템 메모리와; (e) 상기 CPU와 회로 통신하며 레지스터 데이터를 저장하는 휘발성 시스템 레지스터와; (f) 상기 CPU와 회로 통신하며, 상기 컴퓨터 시스템의 상태를 정상 동작 상태로부터 중지 상태로 소정의 중지 이벤트에 응하여 선택적으로 변경시키고, 상기 컴퓨터 시스템의 상태를 상기 중지 상태로부터 상기 정상 동작 상태로 최소한 하나의 재개 이벤트에 응하여 선택적으로 변경시키는 제어 장치와; (g) 상기 CPU 및 상기 제어 장치와 회로 통신하며, 상기 CPU가 최소한 제1 소정의 재개 부팅 작업을 상기 최소한 하나의 소정 재개 이벤트에 응하여 수행하는 것을 실행시킬 수 있는 부팅 장치를 포함하며, 상기 CPU에 의한 실행이 가능한 관련된 다수의 장치 구동기를 갖는 부팅 장치 -상기 장치 구동기는 전자 장치를 상기 전자 장치의 파워온 상태와 다른 기지의 상태로 초기화하며, 상기 다수의 장치 구동기는 최소한 하나의 소정 서브셋(sudset)으로 우선순위가 매겨짐-를 포함하며, (1) 상기 정상 동작 상태는 상기 전원이 상기 제1 전원 상태에 있고 상기 컴퓨터 시스템이 상기 응용 프로그램을 사용자 코멘드 또는 운영체제에 응하여 실행시킬 수 있는 것을 특징으로 하며, (2) 상기 중지 상태는 상기 레지스터 데이터 및 상기 메모리 데이터가 상기 비휘발성 저장 장치에 저장되고 상기 전원이 상기 제2 전원 상태에 있는 것을 특징으로 하고, (3) 상기 정상 동작 상태로부터 상기 중지 상태로의 상기 변경은 상기 제어장치가 상기 시스템 메모리 및 상기 시스템 레지스터로부터의 상기 메모리 데이터 및 상기 레지스터 데이터를 상기 비휘발성 저장 장치에 상기 소정의 중지 이벤트에 응하여 복사하는 것을 포함하며, (4) 상기 전원은 상기 전원 상태들 사이에서 상기 제어 장치에 응하여 변경하고, (5) 상기 정상 동작 상태로부터 상기 중지 상태로의 상기 변경은 상기 제어 장치가 상기 전원으로 하여금 상기 소정의 중지 이벤트에 응하여 상기 제1의 전원 상태로부터 상기 제2 전원 상태로 각각 변경하도록 하는 것을 더 포함하며, (6) 상기 제1 소정의 재개 부팅 작업은 상기 소정의 장치 구동기 서브셋의 상기 장치 구동기를 상기 시스템 메모리에 적재하는 과정과, 상기 소저의 장치 구동기 서브셋의 상기 장치 구동기를 실행시키는 것을 포함 소정 재개 이벤트에 응하여 상기 장치 구동기를 실행시키는 과정을 포함하는 데스크탑 컴퓨터 시스템.
  22. 운영체제 및 응용 프로그램을 실행하는 데스크탑 컴퓨터 시스템에 있어서, 상기 컴퓨터 시스템은 (a) CPU와; (b) 시스템 전력을 외부 전원으로부터 컴퓨터 시스템에 선택적으로 제공하는 회로를 가지며, 제1 전원 상태 및 제2 전원 상태를 갖는 전원 -상기 제1 전원 상태는 상기 전원이 시스템 전력과 보조 전력을 상기 외부 전원으로부터 상기 컴퓨터 시스템에 제공하는 것을 특징으로 하며, 상기 제2 전원상태는 상기 전원이 시스템 전력을 상기 외부 전원으로부터 상기 전원에 제공하지 않고 상기 전원이 보조 전력을 상기 외부 전원으로부터 상기 컴퓨터 시스템에 제공하는 것을 특징으로 함-과; (c) 상기 CPU와 회로 통신하는 전자기계식 비휘발성 저장 장치와; (d) 상기 CPU와 회로 통신하며, 메모리 테이터를 저장하는 휘발성 시스템 메모리와; (e) 상기 CPU와 회로 통신하며, 레지스터 데이터를 저장하는 휘발성 시스템 레지스터와; (f) 상기 CPU와 회로 통신하며, 소정 중지 이벤트에 응하여 정상 동작 상태로부터 중지 상태로 상기 컴퓨터 시스템의 상태를 선택적으로 변경하는 제어 장치를 포함하며, (1) 상기 정상 동작 상태는 상기 전원이 상기 제1 전원 상태에 있고, 상기 컴퓨터 시스템이 상기 응용 프로그램을 실행할 수 있는 것을 특징으로 하고, (2) 상기 중지 상태는 상기 레지스터 데이터와 상기 메모리 데이터가 상기 전자기계식 비휘발성 저장장치에 저장되어 있고, 상기 전원은 상기 제2 전원 상태에 있는 것을 특징으로 하며, (3) 상기 정상 동작 상태로부터 상기 중지 상태로의 상기 변경은 상기 제어 장치가 상기 소정의 중지 이벤트에 응하여 ① 상기 메모리 및 레지스터 데이터의 적어도 일부를 역변경하는 단계와, ② 상기 역변경된 메모리 및 레지스터 데이터와 역변경되지 않은 잔여 메모리 및 레지스터 데이터의 적어도 일부를 상기 전자기계식 비휘발성 저장 장치에 기록하여, 상기 컴퓨터 시스템의 상태가 상기 역변경된 데이터로부터 복원되도록 하는 단계를 수행하고, (4) 상기 전원은 상기 제어 장치에 응하여 상기 전원 상태들 사이에서 변경하며, (5) 상기 정상 동작 상태로부터 상기 중지 상태로의 변경은 상기 제어 장치가 상기 전원으로 하여금 상기 소정의 중지 이벤트에 응하여 상기 제1 전원 상태로부터 상기 제2 전원 상태로 각각 변경하도록 하는 단계를 더 포함하는 데스크탑 컴퓨터 시스템.
  23. 컴퓨터 시스템 상태를 복원하는 방법에 있어서, 상기 컴퓨터 시스템은 (a) 시스템 전력을 외부 전원으로부터 컴퓨터 시스템에 선택적으로 제공하는 회로를 가지며, 제1 전원 상태 및 제2 전원 상태를 갖는 전원과; (b) 전자기계식 비휘발성 저장 장치와; (c) 메모리 데이터를 저자하는 휘발성 메모리와; (d) 레지스터 데이터를 저장하는 휘발성 레지스터를 포함하며, 상기 방법은 (1) 소정 재개 이벤트에 응하여, 상기 전원이 상기 제1 전원 상태로부터 상기 제2 전원 상태로 변경하도록 하는 단계와; (2) 역변경된 메모리 및 레지스터 데이터를 상기 전자기계식 비휘발성 저장장치로부터 판독하는 단계와; (3) 상기 메모리 및 레지스터 데이터의 상기 변경을 역변환하는 단계와; (4) 상기 메모리 데이터를 상기 휘발성 시스템 메모리에 기록하는 단계와; (5) 상기 레지스터 데이터를 상기 휘발성 시스템 레지스터에 기록하는 단계를 포함하는 컴퓨터 시스템 상태의 복원 방법.
  24. 컴퓨터 시스템 상태를 복원하는 방법에 있어서, 상기 컴퓨터 시스템은 (a) 시스템 전력을 외부 전원으로부터 컴퓨터 시스템에 선택적으로 제공하는 회로를 가지며, 제1 전원 상태 및 제2 전원 상태를 갖는 전원과; (b) 전자기계식 비휘발성 저장 장치와; (c) 메모리 데이터를 저장하는 휘발성 메모리와; (d) 레지스터 데이터를 저장하는 휘발성 레지스터를 포함하며, 상기 방법은 (1) 소정 재개 이벤트에 응하여, 상기 전원이 상기 제1 전원 상태로부터 상기 제2 전원 상태로 변경하도록 하는 단계와; (2) 상기 전자기계식 비휘발성 저장 장치로부터 역변경된 메모리 및 레지스터 데이터를 판독하는 단계와; (3) 상기 전자기계식 비휘발성 저장 장치로부터 변경되지 않은 메모리 및 레지스터 데이터를 판독하는 단계와; (4) 상기 역변경된 메모리 및 레지스터 데이터의 변경을 역변환하는 단계와; (5) 상기 메모리 데이터를 상기 휘발성 시스템 메모리에 기록하는 단계와; (6) 상기 레지스터 데이터를 상기 휘발성 시스템 레지스터에 기록하는 단계를 포함하는 컴퓨터 시스템 상태의 복원 방법.
KR1019940014715A 1993-07-26 1994-06-25 컴퓨터 시스템 및 그의 상태 보관방법 KR0167810B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US097,250 1993-07-26
US08/097,250 US5511202A (en) 1993-07-26 1993-07-26 Desktop computer system having zero-volt system suspend and control unit for ascertaining interrupt controller base address

Publications (2)

Publication Number Publication Date
KR950004164A KR950004164A (ko) 1995-02-17
KR0167810B1 true KR0167810B1 (ko) 1999-01-15

Family

ID=22262461

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1019940014715A KR0167810B1 (ko) 1993-07-26 1994-06-25 컴퓨터 시스템 및 그의 상태 보관방법

Country Status (7)

Country Link
US (2) US5511202A (ko)
EP (1) EP0636978B1 (ko)
JP (1) JP2798356B2 (ko)
KR (1) KR0167810B1 (ko)
CN (2) CN1064152C (ko)
CA (1) CA2120056C (ko)
DE (1) DE69425614D1 (ko)

Families Citing this family (61)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5526503A (en) * 1993-10-06 1996-06-11 Ast Research, Inc. Virtual addressing buffer circuit
US5560023A (en) 1994-09-07 1996-09-24 International Business Machines Corporation Automatic backup system for advanced power management
JP3224715B2 (ja) 1994-09-07 2001-11-05 インターナショナル・ビジネス・マシーンズ・コーポレーション コンピュータ・システムをウェイクさせる低電力リング検出
US5530879A (en) 1994-09-07 1996-06-25 International Business Machines Corporation Computer system having power management processor for switching power supply from one state to another responsive to a closure of a switch, a detected ring or an expiration of a timer
US5832281A (en) * 1994-10-19 1998-11-03 Canon Kabushiki Kaisha Power control apparatus and power control method
US5671422A (en) * 1994-11-14 1997-09-23 Intel Corporation Method and apparatus for switching between the modes of a processor
US5557739A (en) * 1994-11-14 1996-09-17 Gateway 2000, Inc. Computer system with component removal and replacement control scheme
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
JPH09282049A (ja) * 1996-04-15 1997-10-31 Pfu Ltd 情報処理装置の筐体
US5822600A (en) * 1996-07-19 1998-10-13 Compaq Computer Corporation Dynamic hibernation time in a computer system
KR100190529B1 (ko) * 1996-08-12 1999-06-01 윤종용 Vtr을 내장한 컴퓨터시스템
US5944829A (en) * 1996-09-30 1999-08-31 Intel Corporation Adjusting software characteristics by user interface based upon battery level and the amount of time the user wants the battery to last
US6246397B1 (en) * 1997-07-30 2001-06-12 Gateway, Inc. Screen saver computer program prohibition based on storage device activity
US6145068A (en) * 1997-09-16 2000-11-07 Phoenix Technologies Ltd. Data transfer to a non-volatile storage medium
TW403864B (en) * 1997-10-08 2000-09-01 Sony Corp Program startup apparatus and program startup method for use in electronic machine, and medium
US6098158A (en) * 1997-12-18 2000-08-01 International Business Machines Corporation Software-enabled fast boot
KR100283243B1 (ko) 1998-05-11 2001-03-02 구자홍 운영체제의 부팅방법
US6247151B1 (en) 1998-06-30 2001-06-12 Intel Corporation Method and apparatus for verifying that data stored in a memory has not been corrupted
CN1293461C (zh) * 1999-07-30 2007-01-03 神基科技股份有限公司 一种将电脑系统状态挂起的方法
US6693914B1 (en) 1999-10-01 2004-02-17 Stmicroelectronics, Inc. Arbitration mechanism for packet transmission
US6618042B1 (en) * 1999-10-28 2003-09-09 Gateway, Inc. Display brightness control method and apparatus for conserving battery power
US6601181B1 (en) 1999-12-14 2003-07-29 Gateway, Inc. Uninterruptible power supply apparatus and method
US6636963B1 (en) * 1999-12-30 2003-10-21 Cardiac Pacemakers, Inc. Quick starting for microprocessor-based system by retrieving a target state memory image and a target state data structure from an image storage medium
EP1164460A4 (en) * 2000-01-13 2008-12-10 Access Co Ltd COMPUTER SYSTEM AND COST-SAVING TAX PROCEDURE
US20020132603A1 (en) * 2000-12-08 2002-09-19 Jan Lindskog Method for power save
US6883037B2 (en) * 2001-03-21 2005-04-19 Microsoft Corporation Fast data decoder that operates with reduced output buffer bounds checking
KR100553082B1 (ko) * 2002-06-20 2006-02-15 엘지전자 주식회사 이동통신 단말기의 무선 데이터 다운로드 이어받기 장치및 방법
US20040225881A1 (en) 2002-12-02 2004-11-11 Walmsley Simon Robert Variant keys
US7310724B2 (en) * 2003-06-30 2007-12-18 Intel Corporation Parallel execution of enhanced EFI based BIOS drivers on a multi-processor or hyper-threading enabled platform
US20050086667A1 (en) * 2003-09-30 2005-04-21 Feng Jin Symmetric Scheduling for parallel execution
CN100445982C (zh) * 2004-02-12 2008-12-24 宏碁股份有限公司 多还原点的计算机还原系统及方法
US7400878B2 (en) 2004-02-26 2008-07-15 Research In Motion Limited Computing device with environment aware features
US20080100144A1 (en) * 2004-12-16 2008-05-01 Shoei-Lai Chen Automatic Power-Off Method for an Electronic Device
US7529921B2 (en) * 2004-12-17 2009-05-05 Cardiac Pacemakers, Inc. Fast initialization of medical device system having multiple operating systems
KR101031417B1 (ko) * 2005-01-31 2011-04-26 주식회사 하이닉스반도체 비휘발성 레지스터를 갖는 마이크로 프로세서 장치 및제어 방법
CN100426269C (zh) * 2005-04-18 2008-10-15 纬创资通股份有限公司 电脑系统与辅助设备电连接时致能或失能辅助设备的方法
US7827376B2 (en) * 2005-06-27 2010-11-02 Lenovo (Singapore) Pte. Ltd. System and method for protecting hidden protected area of HDD during operation
US8887063B2 (en) * 2008-05-21 2014-11-11 Smart Technologies Ulc Desktop sharing method and system
CN101620462A (zh) * 2008-07-03 2010-01-06 鸿富锦精密工业(深圳)有限公司 计算机装置
US8258748B2 (en) * 2009-03-11 2012-09-04 Enfora, Inc. Methods and apparatus for modeling, monitoring, simulating and controlling power consumption in battery-operated devices
TW201042449A (en) * 2009-05-19 2010-12-01 Inventec Corp Method for accessing storage unit
KR101036584B1 (ko) * 2009-06-22 2011-05-24 뉴엔텍(주) 유기성 슬러지를 함유한 폐수 처리장치 및 그 방법
US8508166B2 (en) 2009-08-10 2013-08-13 Emerson Climate Technologies, Inc. Power factor correction with variable bus voltage
US8698433B2 (en) * 2009-08-10 2014-04-15 Emerson Climate Technologies, Inc. Controller and method for minimizing phase advance current
US8264192B2 (en) 2009-08-10 2012-09-11 Emerson Climate Technologies, Inc. Controller and method for transitioning between control angles
WO2012037657A2 (en) 2010-09-24 2012-03-29 Research In Motion Limited Method and apparatus for differentiated access control
EP2619704B1 (en) 2010-09-24 2018-01-10 BlackBerry Limited Method and apparatus for differentiated access control
US9037907B2 (en) * 2011-06-10 2015-05-19 International Business Machines Corporation Operator message commands for testing a coupling facility
CN108549609B (zh) 2011-09-30 2022-06-21 英特尔公司 作为传统大容量存储设备的替代的非易失性随机存取存储器(nvram)
WO2013048503A1 (en) 2011-09-30 2013-04-04 Intel Corporation Apparatus and method for implementing a multi-level memory hierarchy having different operating modes
WO2013048491A1 (en) 2011-09-30 2013-04-04 Intel Corporation Apparatus, method and system that stores bios in non-volatile random access memory
EP2761465B1 (en) 2011-09-30 2022-02-09 Intel Corporation Autonomous initialization of non-volatile random access memory in a computer system
US9634593B2 (en) 2012-04-26 2017-04-25 Emerson Climate Technologies, Inc. System and method for permanent magnet motor control
JP6029350B2 (ja) * 2012-06-27 2016-11-24 キヤノン株式会社 情報処理装置、情報処理装置の制御方法及びプログラム
US8972762B2 (en) 2012-07-11 2015-03-03 Blackberry Limited Computing devices and methods for resetting inactivity timers on computing devices
EP2883302B1 (en) 2012-08-10 2020-09-30 Emerson Climate Technologies, Inc. Motor drive control using pulse-width modulation pulse skipping
US9923762B1 (en) * 2013-08-13 2018-03-20 Ca, Inc. Upgrading an engine when a scenario is running
CN105960633B (zh) * 2014-02-07 2020-06-19 株式会社半导体能源研究所 半导体装置、装置及电子设备
KR102017284B1 (ko) * 2015-05-26 2019-09-02 삼성전자주식회사 부팅 디바이스 및 그 동작 방법
US10818374B2 (en) * 2018-10-29 2020-10-27 Texas Instruments Incorporated Testing read-only memory using memory built-in self-test controller
US11635900B2 (en) * 2021-08-27 2023-04-25 Micron Technology, Inc. Memory sub-system signature generation

Family Cites Families (33)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4503494A (en) * 1980-06-26 1985-03-05 Texas Instruments Incorporated Non-volatile memory system
US4698748A (en) * 1983-10-07 1987-10-06 Essex Group, Inc. Power-conserving control system for turning-off the power and the clocking for data transactions upon certain system inactivity
JPS61194552A (ja) * 1985-02-22 1986-08-28 Fujitsu Ltd メモリのエラ−制御方式
JPS61210453A (ja) * 1985-03-15 1986-09-18 Canon Inc デ−タ記憶装置
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
US4933785A (en) * 1988-03-01 1990-06-12 Prairietek Corporation Disk drive apparatus using dynamic loading/unloading
JPH0293814A (ja) * 1988-09-30 1990-04-04 Toshiba Corp ラップトップ形パーソナルコンピュータの電力供給制御装置
US5218607A (en) * 1989-06-23 1993-06-08 Kabushiki Kaisha Toshiba Computer having a resume function and operable on an internal power source
KR930012128B1 (ko) * 1989-08-28 1993-12-24 가부시기가이샤 도시바 재개기능을 가진 컴퓨터 유니트
US5167024A (en) * 1989-09-08 1992-11-24 Apple Computer, Inc. Power management for a laptop computer with slow and sleep modes
US5021983B1 (en) * 1989-11-13 1996-05-28 Chips & Technologies Inc Suspend/resume apparatus and method for reducing power consumption in battery powered computers
US5276890A (en) * 1989-11-30 1994-01-04 Kabushiki Kaisha Toshiba Resume control system and method for executing resume processing while checking operation mode of CPU
JPH03202912A (ja) * 1989-12-28 1991-09-04 Toshiba Corp 携帯可能電子装置
JP2772103B2 (ja) * 1990-03-28 1998-07-02 株式会社東芝 計算機システム立上げ方式
US5008829A (en) * 1990-06-14 1991-04-16 International Business Machines Corporation Personal computer power supply
US5175853A (en) * 1990-10-09 1992-12-29 Intel Corporation Transparent system interrupt
US5193176A (en) * 1990-10-17 1993-03-09 Powercard Supply C.A. Computer work saving during power interruption
JPH04192010A (ja) * 1990-11-27 1992-07-10 Toshiba Corp パーソナルコンピュータ
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 インターナショナル・ビジネス・マシーンズ・コーポレイション プロセッサ用クロック信号の制御方法及び情報処理システム
JPH04282738A (ja) * 1991-03-12 1992-10-07 Seiko Epson Corp 情報処理装置のデータ処理方式
EP0584257B1 (en) * 1991-05-17 2004-08-04 Packard Bell NEC, Inc. Power management capability for a microprocessor having backward compatibility
US5297282A (en) * 1991-05-29 1994-03-22 Toshiba America Information Systems, Inc. Resume processing function for the OS/2 operating system
JPH077317B2 (ja) * 1991-06-10 1995-01-30 松下電器産業株式会社 システム再起動装置
JPH07101376B2 (ja) * 1991-06-10 1995-11-01 松下電器産業株式会社 システム再起動装置
US5355490A (en) * 1991-06-14 1994-10-11 Toshiba America Information Systems, Inc. System and method for saving the state for advanced microprocessor operating modes
US5274791A (en) * 1991-07-05 1993-12-28 Chips And Technologies, Inc. Microprocessor with OEM mode for power management with input/output intiated selection of special address space
JPH0566860A (ja) * 1991-09-05 1993-03-19 Toshiba Corp 電源制御装置
JP3024308B2 (ja) * 1991-09-30 2000-03-21 カシオ計算機株式会社 データ処理装置
US5410713A (en) * 1992-01-02 1995-04-25 Smith Corona/Acer Power-management system for a computer
US5229768A (en) * 1992-01-29 1993-07-20 Traveling Software, Inc. Adaptive data compression system

Also Published As

Publication number Publication date
EP0636978A1 (en) 1995-02-01
US5511202A (en) 1996-04-23
CN1350243A (zh) 2002-05-22
CN1209720C (zh) 2005-07-06
CA2120056C (en) 1998-04-07
JP2798356B2 (ja) 1998-09-17
CN1101442A (zh) 1995-04-12
DE69425614D1 (de) 2000-09-28
KR950004164A (ko) 1995-02-17
CA2120056A1 (en) 1995-01-27
US5925129A (en) 1999-07-20
CN1064152C (zh) 2001-04-04
JPH0744469A (ja) 1995-02-14
EP0636978B1 (en) 2000-08-23

Similar Documents

Publication Publication Date Title
KR0167810B1 (ko) 컴퓨터 시스템 및 그의 상태 보관방법
KR0128275B1 (ko) 컴퓨터 시스템과그의 전력사용 관리방법, 인터럽트 제어기의 베이스 어드레스 상태 확인방법과 씨피유 상태보존 및 복원방법
US5577220A (en) Method for saving and restoring the state of a CPU executing code in protected mode including estimating the value of the page table base register
KR100188501B1 (ko) 다수의 사용자 및 윈도에 기초한 컴퓨터 시스템 및 다수의 사용자에 기초한 컴퓨터 시스템을 제공하는 방법
KR100196893B1 (ko) 컴퓨터 시스템
KR100232314B1 (ko) 컴퓨터 시스템
EP0635778B1 (en) Desktop computer having a single-switch suspend/resume function
KR100196883B1 (ko) 컴퓨터 시스템
KR100190736B1 (ko) 컴퓨터 시스템
KR100218613B1 (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
JP3341970B2 (ja) コンピュータ・システム
KR100207884B1 (ko) 컴퓨터 시스템, 코드 실행 제어 방법, 및 컴퓨터 시스템 전력 관리 방법
AU732436B2 (en) Desktop computer system having multi-level power management

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20120907

Year of fee payment: 15

FPAY Annual fee payment

Payment date: 20130906

Year of fee payment: 16

EXPY Expiration of term