[go: up one dir, main page]

KR100190736B1 - Automatic backup system for advanced power management - Google Patents

Automatic backup system for advanced power management Download PDF

Info

Publication number
KR100190736B1
KR100190736B1 KR1019950028935A KR19950028935A KR100190736B1 KR 100190736 B1 KR100190736 B1 KR 100190736B1 KR 1019950028935 A KR1019950028935 A KR 1019950028935A KR 19950028935 A KR19950028935 A KR 19950028935A KR 100190736 B1 KR100190736 B1 KR 100190736B1
Authority
KR
South Korea
Prior art keywords
state
power
routine
power management
task
Prior art date
Legal status (The legal status 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 status listed.)
Expired - Fee Related
Application number
KR1019950028935A
Other languages
Korean (ko)
Other versions
KR960011766A (en
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 KR960011766A publication Critical patent/KR960011766A/en
Application granted granted Critical
Publication of KR100190736B1 publication Critical patent/KR100190736B1/en
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/26Power supply means, e.g. regulation thereof
    • G06F1/32Means for saving power
    • G06F1/3203Power management, i.e. event-based initiation of a power-saving mode
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/16Error detection or correction of the data by redundancy in hardware
    • G06F11/20Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0751Error or fault detection not based on redundancy
    • G06F11/0754Error or fault detection not based on redundancy by exceeding limits
    • G06F11/0757Error or fault detection not based on redundancy by exceeding limits by exceeding a time limit, i.e. time-out, e.g. watchdogs

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Quality & Reliability (AREA)
  • Computer Hardware Design (AREA)
  • Power Sources (AREA)

Abstract

본 발명은 회로 통신을 하는 CPU, 비휘발성 저장 장치, 휘발성 레지스터 및 메모리 데이타, 전력 관리 프로세서, 백업 중지 타이머 및 전원을 포함하는 중단/재개 컴퓨터 시스템에 관한 것이다. 전력 관리 프로세서는 전원에 의해 CPU로 공급되는 전력의 조절을 제어한다. 중단/재개 시스템은 전력 관리 제어를 포함하는 운영 체제에 의해 제어된다. 백업 중지 타이머는 운영 체제의 전력 관리 부분을 독자적으로 실행한다. 운영 체제의 전력 관리 부분이 기능을 중지하거나, 그렇지 않으면 시스템이 중단되어야 한다면, 백업 중지 타이머는 시스템을 중단시킨다.The present invention relates to a suspend / resume computer system including a CPU, nonvolatile storage, volatile register and memory data, a power management processor, a backup stop timer, and a power source for circuit communication. The power management processor controls the regulation of the power supplied to the CPU by the power source. The suspend / resume system is controlled by an operating system that includes power management controls. The backup stop timer independently runs the power management portion of the operating system. If the power management portion of the operating system ceases to function, or the system must be stopped, the backup stop timer stops the system.

Description

컴퓨터 시스템Computer systems

제1도는 본 발명이 구현될 수 있는 퍼스널 컴퓨터의 사시도.1 is a perspective view of a personal computer in which the present invention may be implemented.

제2도는 샤시, 커버, 전기 기계적 직접 액세스 저장 장치 및 플레이너 보드를 포함하는 제1도의 퍼스널 컴퓨터의 구성 요소와 이들 구성 요소간의 소정 관계를 예시하는 전개 사시도.FIG. 2 is an exploded perspective view illustrating the components of the personal computer of FIG. 1 including a chassis, a cover, an electromechanical direct access storage device, and a planar board, and certain relationships between these components. FIG.

제3A도 및 제3B도는 제1도 및 제2도의 퍼스널 컴퓨터의 소정 구성 요소간의 관계를 나타내는 블럭도.3A and 3B are block diagrams showing the relationship between predetermined components of the personal computer shown in FIGS.

제4도는 정상, 대기, 중지 및 오프의 네 가지 시스템 상태를 도시하는 본 발명의 컴퓨터 시스템의 상태도.4 is a state diagram of the computer system of the present invention showing four system states: normal, standby, suspend, and off.

제5도는 전원의 관련 부분을 도시하는 블럭도.5 is a block diagram showing a relevant portion of the power supply.

제6A도는 본 발명의 전력 관리 회로의 개략도.6A is a schematic diagram of a power management circuit of the present invention.

제6B도는 내장 모뎀에 대해 전력 관리 회로의 접속을 도시하는 전기적인 개략도.6B is an electrical schematic diagram illustrating the connection of a power management circuit to an internal modem.

제6C도는 전력 관리 회로의 리세트 회로내의 각종 신호를 도시하는 파형도.Fig. 6C is a waveform diagram showing various signals in the reset circuit of the power management circuit.

제6D도는 전원 고장 검출 및 정정 회로의 제2실시예를 도시하는 개략도.6D is a schematic diagram showing a second embodiment of a power supply failure detection and correction circuit.

제7도는 본 발명의 전력 관리 프로세서에 의해 유지되는 스위치 상태 중 하나의 상태를 도시하는 상태도.7 is a state diagram showing one of the switch states maintained by the power management processor of the present invention.

제8도는 본 발명의 파워업 루틴을 개략적으로 도시하는 흐름도.8 is a flow chart schematically showing the power-up routine of the present invention.

제9A도는 대략 매초마다 운영 체제내의 APM 장치 드라이버에 의해 호출되는 감독 루틴을 상세히 도시하는 흐름도.9A is a flowchart detailing the supervision routine called by the APM device driver in the operating system approximately every second.

제9B도는 APM 작업 최종 요구 루틴을 상세히 도시하는 흐름도.9B is a flowchart detailing an APM job final request routine.

제9C도는 APM 거절 최종 요구 루틴을 상세히 도시하는 흐름도.9C is a flowchart detailing the APM rejection final request routine.

제10도는 본 발명의 중지 루틴을 상세히 도시하는 흐름도.10 is a flowchart detailing the stop routine of the present invention.

제11도는 본 발명의 부트업 루틴을 상세히 도시하는 흐름도.11 is a flowchart detailing the bootup routine of the present invention.

제12도는 본 발명의 재개 루틴을 상세히 도시하는 흐름도.12 is a flowchart detailing a resume routine of the present invention.

제13도는 본 발명의 보관 CPU 상태 루틴을 상세히 도시하는 흐름도.Fig. 13 is a flowchart detailing the storage CPU state routine of the present invention.

제14도는 본 발명의 CPU 상태 회복 루틴을 상세히 도시하는 흐름도.14 is a flowchart detailing the CPU state recovery routine of the present invention.

제15도는 본 발명의 보관 8959 상태 루틴을 상세히 도시하는 흐름도.Figure 15 is a flowchart detailing the archive 8959 state routine of the present invention.

제16도는 본 발명의 동적 보관 파일 할당 루틴을 상세히 도시하는 흐름도.Figure 16 is a flowchart detailing the dynamic archive file allocation routine of the present invention.

제17도는 본 발명의 퇴장 대기 루틴을 상세히 도시하는 흐름도.Figure 17 is a flow chart showing in detail the exit wait routine of the present invention.

제18도는 본 발명의 진입 대기 루틴을 상세히 도시하는 흐름도.18 is a flowchart detailing an entry wait routine of the present invention.

제19도는 본 발명의 전력 관리 프로세서 루틴을 상세히 도시하는 흐름도.19 is a flowchart detailing the power management processor routine of the present invention.

*도면의 주요부분에 대한 부호의 설명* Explanation of symbols for main parts of the drawings

11 : 모니터 12 : 키보드11: monitor 12: keyboard

17 : 전원 21 : 스위치17: power 21: switch

21 : 스위치 23 : LED21: switch 23: LED

40 : 마이크로제어기 44 : 수치 코프로세서40: microcontroller 44: numerical coprocessor

48 : 메모리 제어기 50 : 어드레스 MUX48: memory controller 50: address MUX

52 : 데이터 버퍼 56 : 비디오 제어기52: data buffer 56: video controller

62 : 캐시 제어기 68 : 디코더를 갖는 래치/버퍼62 cache controller 68 latch / buffer with decoder

70 : 버스 제어기 72 : DMA 제어기70: bus controller 72: DMA controller

74 : 버퍼 78 : 입/출력 슬롯74: buffer 78: input / output slot

84 : 8277 디스켓 어댑터 86 : IDE 디스크 제어기84: 8277 Diskette Adapter 86: IDE Disk Controller

92 : 인터 럽트 제어기 94 : RS-232 UART92: interrupt controller 94: RS-232 UART

96 : CMOS NVRAM 98 : CMOS 클럭96: CMOS NVRAM 98: CMOS Clock

100 : 병렬 어댑터 102 : 타이머100: parallel adapter 102: timer

104 : 키보드 제어기 106 : 전력 관리 회로104: keyboard controller 106: power management circuit

900 : 내장 모뎀 902 : 외장 모뎀900: internal modem 902: external modem

904 : 트랜스포머 906 : 클럭 신디싸이저904: Transformer 906: Clock Synthesizer

본 발명은 전반적으로 컴퓨터 시스템 구조(computer system architecture)에 관한 것으로, 특히 APM 드라이버에 기초한 시스템 중지/재개 능력(system suspend/resume capability)을 가지는 데스크탑 컴퓨터 시스템(desktop computer system) 및 시스템이 중지 상태(suspend state)로 진입하도록 하는 백업 중지 시스템에 관한 것이다.BACKGROUND OF THE INVENTION 1. Field of the Invention The present invention relates generally to computer system architecture, in particular desktop computer systems having a system suspend / resume capability based on the APM driver and systems in which It is about a backup suspend system that allows you to enter suspend state.

퍼스널 컴퓨터 시스템은 본 기술 분야에서 잘 알려져 있다. 일반적으로, 퍼스널 컴퓨터 시스템, 특히, IBM 퍼스널 컴퓨터는 오늘날 현대 사회의 많은 분야에 컴퓨터 파워(computer power)를 제공하기 위해 광범위하게 사용되어 왔다. 퍼스널컴퓨터는 전형적으로 데스크탑(desktop), 플로워 스탠딩(floor standiug) 및 휴대용 마이크로컴퓨터(portable microcomputer)로 정의될 수 있는데, 이들은, 단일 중앙 처리 장치(CPU), RAM 및 BIOS ROM을 포함하는 휘발성 메모리(volatile memory)및 비휘발성 메모리(non-volatile memory), 시스템 모니터, 키보드, 하나 이상의 플로피 디스켓 드라이브(flexible diskette drives), 고정 디스크 저장 장치 드라이브(fixed disk storage drive)(하드 디스크로도 알려짐), 소위 마우스(mouse)로 일컬어지는 포인팅 장치(pointing devices), 그리고 선택사양적 프린터(optional printer)를 포함한다. 이러한 시스템의 두드러진 특징중의 하나는 이들 구성 요소를 함께 전기적으로 접속하기 위하여 마더보드(motherboard) 혹은 시스템플래이너(system planar)를 사용한다는 것이다. 또한, 이러한 시스템은 주로 단일 사용자에게 독립적인 계산 능력(computing power)을 제공하도록 설계되었으며, 개인이나 혹은 소규모 사업체가 구입할 수 있는 낮은 가격으로 책정된다. 이러한 퍼스널 컴퓨터 시스템의 예로는 IBM사의 PERSONAL COMPUTER AT 및 IBM사의 PERSONAL SYSTEM/1(IBM PS/1) ''등이 있다.Personal computer systems are well known in the art. In general, personal computer systems, particularly IBM personal computers, have been used extensively to provide computer power in many areas of modern society today. Personal computers can typically be defined as desktops, floor standiugs, and portable microcomputers, which include a single central processing unit (CPU), RAM, and BIOS ROM including volatile memory ( volatile memory and non-volatile memory, system monitors, keyboards, one or more floppy diskette drives, fixed disk storage drives (also known as hard disks), so-called Pointing devices, referred to as mice, and optional printers. One of the salient features of such a system is the use of a motherboard or a system planar to electrically connect these components together. In addition, these systems are primarily designed to provide independent computing power for a single user, and are priced low for individuals or small businesses. Examples of such personal computer systems include IBM's PERSONAL COMPUTER AT and IBM's PERSONAL SYSTEM / 1 (IBM PS / 1).

퍼스널 컴퓨터 시스템은 전형적으로 소프트웨어(software)를 실행하여, 워드 프로세싱(word processing), 스프레드시트(spread-sheets)를 통한 데이타의 조작 (manipulation of data), 데이타베이스를 이용한 데이타 수집 및 관계 설정, 그래프 디스플레이(displays of graphics), 시스템-설계 소프트웨어(system-design software)를 사용한 전기적 혹은 기계적 시스템 설계와 같은 다양한 동작들을 수행한다.Personal computer systems typically run software, such as word processing, manipulation of data through spreadsheets, data collection and relationship establishment using databases, and graphing. Perform various operations such as displays of graphics, electrical or mechanical system design using system-design software.

전술한 관련 출원중에서 처음 네 출원서[DESKTOP COMUTER HAVING A SINGLE SWITCH SUSPEND/RESUME FUNCTION이란 명칭으로 1993년 7월 23일 출원된 미국 특허 출원 제 08/097,334 호, ''DESKTOP COMPUTER SYSTEM HAVING ZERO VOLT SYSTEM SUSPEND란 명칭으로 1993년 7월 26일 출원된 미국 특허 출원 제 O8/097,334 호, 'METHOD OF SAVING AND RESTORING THE STATE OF A CPU EXECUTING CODE IN A PROTECTED MODE란 명칭으로 1993년 7월 23일 출원된 미국 특허 출원 제08/097,246 호 및 ''DESKTOP COMPUTER SYSTEM HAVING MULTI-LEVEL POWER MANAGEMENT란 명칭으로 1993년 7월 23일 출원된 미국 특허 출원 제 08/097,251 호]에는 네 가지 전력 관리 상태(power managemeut states), 즉 정상 동작 상태 (normal operating state), 대기 상태(standby state), 중지 상태(suspend state) 및 오프 상태(off state)를 포함하는 컴퓨터 시스템이 개시되어 있다. 오프 상태, 정상 동작 상태와 중지 상태간의 변경은 하나의 스위치를 사용하여 행하여진다.DESKTOP COMPUTER SYSTEM HAVING ZERO VOLT SYSTEM SUSPEND U.S. Patent Application No. O8 / 097,334, filed Jul. 26, 1993, entitled `` METHOD OF SAVING AND RESTORING THE STATE OF A CPU EXECUTING CODE IN A PROTECTED MODE '' 08 / 097,246 and US patent application Ser. No. 08 / 097,251, filed Jul. 23, 1993, entitled DESKTOP COMPUTER SYSTEM HAVING MULTI-LEVEL POWER MANAGEMENT, describe four power managemeut states: A computer system is disclosed that includes a normal operating state, a standby state, a suspend state, and an off state. The change between the off state, the normal operating state and the suspended state is made using one switch.

본 발명의 컴퓨터 시스템의 정상 동작 상태는 모든 전형적인 데스크탑 컴퓨터의 정상 동작 상태와 사실상 동일하다. 사용자는 응용 프로그램을 사용할 수 있으며, 기본적으로 이 컴퓨터를 다른 컴퓨터와 마찬가지로 취급할 수 있다. 하나의 차이점은 백그라운드(background)에서(BIOS 및 운영 체제에서) 실행되고 사용자에게 투명한(transparent) 방식으로 실행되는 전력 관리 드라이버(power management driver)가 존재한다는 점이다. 운영 체제(operating system : OS)내의 전력 관리 드라이버 부분은 인텔 사 및 마이크로소프트사에 의해 작성된 APM 장치(Advanced Power Management) 고급 프로그래밍 인티페이스(advanced programming interface)로서, 인텔 사의 80X86 계열의 프로세서(processors)상에서 동작하도록 작성된 대부분의 운영 체제에 존재한다. BIOS내 전력 관리 장치 부분(APM BIOS)은 APM OS 드라이버와 통신한다. APM OS 드라이버 및 APM BIOS 루틴은 함께 다른 세 가지 상태로, 그리고 다른 세 가지 상태로부터의 컴퓨터의 상태 전이를 제어한다.The normal operating state of the computer system of the present invention is substantially the same as the normal operating state of all typical desktop computers. The user can use the application program and basically treat this computer like any other computer. One difference is that there is a power management driver that runs in the background (in the BIOS and operating system) and runs in a transparent manner to the user. The power management driver portion of the operating system (OS) is the APM Advanced Power Management advanced programming interface written by Intel and Microsoft, and is part of Intel's 80X86 family of processors. It exists in most operating systems written to run on top of it. The power management device portion in the BIOS (APM BIOS) communicates with the APM OS driver. The APM OS driver and APM BIOS routines together control the transition of the computer into three different states and from the other three states.

제 2 상태, 즉 대기 상태는 정상 상태보다 적은 전력을 사용하지만, 실행중인 모든 응용 프로그램은 전과 다름없이 실행되도록 남겨둔다. 일반적으로, 대기 상태에서는 장치를 제각기 저전력 모드로 배치함으로써 전력이 절약된다. 예를 들면, 대기 상태에서는 하드 드라이브내 고정 디스크(fixed disk)의 회전을 중단시키고, 비디오 신호의 발생을 중단시킴으로써 전력이 절약된다.The second state, the standby state, uses less power than the normal state, but all running applications are left running as before. In general, in the standby state, power is saved by placing each device in a low power mode. For example, in standby, power is saved by stopping the rotation of a fixed disk in the hard drive and stopping the generation of a video signal.

제 3 상태는 중지 상태이다. 중지 상태에서, 컴퓨터 시스템은 극히 적은 양의 전력만을 소비한다. 중지된 컴퓨터는 벽면 아웃렛(wall outlet)으로부터 거의 전력을 소비하지 않는다. 소비되는 전력은 단지 컴퓨터 시스템내의(시스템이 AC 전력을 수신하지 않는 경우) 배터리로부터 발생되거나 또는(시스템이 AC 전력을 수신하고 있는 경우) 전원에 의해 보조 전력선에서 발생되는 적은 양의 전력으로서 스위치를 감시하는 회로를 유지하는 데 사용되는 적은 양의 전력뿐이다.The third state is a suspended state. In the suspended state, the computer system consumes very little power. A suspended computer consumes little power from the wall outlet. The power dissipated is simply a small amount of power generated from a battery in the computer system (if the system is not receiving AC power) or from a secondary power line by the power source (if the system is receiving AC power). There is only a small amount of power that is used to keep the circuitry monitored.

이러한 적은 양의 전력 사용은 전원이 턴오프되기 전에 고정 디스크 저장장치(하드 드라이브)로 컴퓨터 시스템의 상태를 보관(save)함으로써 성취된다. 중지 상태로 진입하기 위해, 컴퓨터 시스템은 모든 실행중인 코드(any executing code)를 인터럽트(iuterrupt)하고, 컴퓨터의 제어를 전력 관리 드라이버로 전달한다. 전력 관리 드라이버는 컴퓨터 시스템의 상태를 확인하고, 확인된 컴퓨터 시스템의 상태를 고정 디스크 드라이브 저장 장치에 기록한다. CPU 레지스터, CPU 캐시, 시스템 메모리, 시스템 캐시, 비디오 레지스터, 비디오 메모리 및 기타 장치의 레지스터의 상태는 모두 고정 디스크에 기록된다. 시스템의 전체 상태는 코트 응용 프로그램이 인터럽트에 의해 악영향을 받는 일 없이 회복될 수 있는 방식으로 보관된다. 그 후, 컴퓨터는 비휘발성 CM0S 메모리에 데이타를 기록하여 시스템이 중지 되었음을 표시한다. 최종적으로, 컴퓨터는 전원의 전력 발생을 중시킨다. 컴퓨터의 전체 상태는 고정 디스크 저장 장치에 안전하게 보관되고, 시스템 전력은 오프되며, 컴퓨터는 전원으로부터 단지 소량의 조절 전력(regulated power)만을 수신하여 스위치를 감시하도록 회로에 공급한다.This small amount of power usage is achieved by saving the state of the computer system to fixed disk storage (hard drives) before the power is turned off. To enter the suspended state, the computer system interrupts any executing code and transfers control of the computer to the power management driver. The power management driver checks the state of the computer system and writes the confirmed state of the computer system to the fixed disk drive storage device. The state of the CPU registers, CPU cache, system memory, system cache, video registers, video memory, and other device registers are all written to a fixed disk. The overall state of the system is kept in such a way that the coat application can recover without being adversely affected by interrupts. The computer then writes data to nonvolatile CM0S memory to indicate that the system has been stopped. Finally, the computer neutralizes the power generation of the power source. The overall state of the computer is securely stored in fixed disk storage, the system power is off, and the computer receives only a small amount of regulated power from the power supply and supplies it to the circuit to monitor the switch.

제 4 상태, 즉 최종 상태는 오프 상태이다. 이 상태에서, 전원은 시스템으로 조절 전력을 제공하지 않지만, 컴퓨터 시스템의 상태는 고정 디스크에 보관되어 있지 않다. 오프 상태는 통상의 방식으로 턴오프된 전형적인 데스크탑 컴퓨터와 사실상 동일하다.The fourth state, the final state, is off. In this state, the power supply does not provide conditioned power to the system, but the state of the computer system is not stored on a fixed disk. The off state is virtually identical to a typical desktop computer turned off in a conventional manner.

상태에서 상태로의 스위칭은 전력 관리 드라이버에 의해 처리되며, 전형적으로 단일 스위치의 폐쇄 이벤트(closure events), 플래그, 비활동 대기 타이머 (inactivity staudby timer) 및 비활동 중지 타이머(inactivity suspend timer)의 두개의 타이머에 기초한다. 시스템은 하나의 전력 버튼을 갖는다. 이 버튼은 컴퓨터 시스템을 턴온시키고, 시스템의 상태를 중지시키고, 시스템의 상태를 회복시키며, 시스템을 턴오프시키는 데 사용될 수 있다.State-to-state switching is handled by the power management driver and typically includes two closure events, a flag, an inactivity staudby timer, and an inactivity suspend timer on a single switch. Is based on a timer. The system has one power button. This button can be used to turn on the computer system, stop the state of the system, restore the state of the system, and turn off the system.

상기 시스템은 APM(Advanced Power Management)를 사용하여 상태 전이를 용이하게 하며, 상태 전이와 연관된 시스템 보수(system maintenance)를 용이하게 한다. APM은 데스크 탑 및 노트북내의 운영 체제 및 시스템 BIOS가 전력을 협조적으로 관리하는 하나의 방법을 제공하기 위해 개발된 산업 표준 고급 프로그래밍 인터페이스이다. APM은 시스템을 용이하게 중지 및 재개시키는 탁월한 도구인데, 그 이유는 APM이 중단 프로세스내에 운영 체제를 포함하고, 중지 프로세스가 발생되기 전에 운영 체제가 시스템을 준비시키도록 허용하기 때문이다.The system facilitates state transitions using Advanced Power Management (APM) and facilitates system maintenance associated with state transitions. APM is an industry standard advanced programming interface developed to provide a way for the operating system and system BIOS in desktop and notebook to cooperatively manage power. APM is an excellent tool for easily stopping and resuming a system because APM includes the operating system within the abort process and allows the operating system to prepare the system before the abort process occurs.

그러나, 운영 체제에 따라서는, 시스템을 중지시키기 위해 APM에 의존하면, 여러 결점이 발생할 수 있다. 마이크로소프트 윈도우 버전 3.1 및 MS-DOS에 있어서, 운영 체제 APM 드라이버가 APM BIOS 요구를 제공하는 것을 완전히 중단할 때가 여러 차례 존재한다. 예를 들면, 모델 대화 박스가 디스플레이되면, 마이크로소프트 윈도우 APM 드라이버는 APM BIOS 요구를 서비스하는 것을 완전히 중단한다. 결과적으로, 마이크로소프트 윈도우 APM 드라이버에 기초한 중지 및 재개시스템은 모델 대화 박스가 디스플레이중일 때 시스템을 결코 중지시키지 않을 것이다. 이것은 사용자에게 중대한 문제점을 제시하는데, 그 이유는 시스템이 시스템 상태를 보관하라는 사용자의 요구에 응답하여 중지되지 않기 때문이다. 이 결과는 사용자를 혼란으로 이끌 수 있으며, 사용자는 중지 및 재 시스템을 불신하게 되는데, 그이유는 중지 및 재개 시스템이 의존할 수 있을 만큼 신뢰성을 갖지 못하기 때문이다.However, depending on the operating system, depending on APM to halt the system, several drawbacks can occur. In Microsoft Windows version 3.1 and MS-DOS, there are many times when the operating system APM driver completely stops serving APM BIOS requirements. For example, when a model dialog box is displayed, the Microsoft Windows APM driver will completely stop servicing APM BIOS requests. As a result, a suspend and resume system based on the Microsoft Windows APM driver will never stop the system when the model dialog is being displayed. This presents a serious problem for the user because the system does not hang in response to the user's request to keep the system state. This result can be confusing to the user, and the user distrusts the suspend and resume system because it is not reliable enough for the suspend and resume system to rely on.

하나의 해결법은 시스템을 중지시키기 위해 하드웨어 시스템 관리 인터럽트 (SMI)에 의존하는 것이지만, 이러한 시스템은 AP에 의해 제공되는 이점을 상실하게 된다. 예를 들면, APM 드라이버는 전체 APM 인식 소프트웨어 및 하드웨어 응용에 시스템이 중지되려 한다는 것을 통지할 수 있고, 이들은 이에 따라 대응할 수있다. 따라서, 시스템이 APM 드라이버에 의존하는 것을 허용하면서도, APM 드라이버가 동작하지 않을 때도 시스템을 중지시킬 수 있는 시스템을 갖는 것이 바람직하다.One solution is to rely on hardware system management interrupts (SMI) to halt the system, but such systems lose the benefits offered by the AP. For example, the APM driver can notify the entire APM aware software and hardware application that the system is about to be stopped, and they can respond accordingly. Thus, it is desirable to have a system that allows the system to rely on the APM driver while still stopping the system even when the APM driver is not running.

본 발명의 시스템에는 APM 드라이버가 기능을 멈춘 때를 자동적으로 검출하여 이에 따라 시스템을 중지시키는 대체 중지 시스템이 제공된다. 본 발명의 자동백업 중지 시스템은 OS APM 드라이버의 정상 동작에 대해 개입하지 않으며, APM 드라이버가 APM BIOS 요구에 대한 서비스를 중단할 때 자동적으로 개입 (eugage)한다. APM이 다시 활성화되면, 백업 중지 시스템은 자동적으로 개입 상태에서 벗어난다(disengaged) 이것은 시스템이 백업 중지 시스템에 의해 제공된 보다 높은 신뢰성과 함게 APM의 이점을 취할 수 있도록 해준다.The system of the present invention is provided with an alternative stop system that automatically detects when the APM driver ceases to function and accordingly stops the system. The automatic backup stop system of the present invention does not intervene in the normal operation of the OS APM driver, and automatically intervenes when the APM driver stops servicing the APM BIOS request. When APM is reactivated, the backup abort system is automatically disengaged, allowing the system to take advantage of APM with the higher reliability provided by the backup abort system.

본 발명의 백업 중지 시스템에 있어서, 새로운 카운트다운 타이머는 OS APM 이 사전결정된 시간 주기동안 APM BIOS 요구를 서비스하지 않는 경우 만료된다. 이 타이머는 재시작, 즉 본래의 값으로 재로드될 수 있는 시간 단위, 예를 들면 초를 카운트하는 프리러닝 타이머이다. 타이머는 영으로 카운트다운될 때 만료된다. 바람직한 실시예에 있어서, 새로운 타이머는 외부 하드웨어내에 유지되고, 인터럽트 서비스 루틴, 예를 들면 시스템 BIOS 타이머 제로 인터럽트 처리기, 즉 SMI 인터럽트 서비스 루틴(system BIOS timer zero interrupt handler or the SMI interrupt service routine) 에 의해 서비스된다. 이와 달리, 타이머가 인터럽트 서비스 루틴에 의해서만 구현되고 서비스될 수도 있다.In the backup abort system of the present invention, the new countdown timer expires if the OS APM has not serviced the APM BIOS request for a predetermined time period. This timer is a free running timer that counts the time units that can be restarted, i.e. reloaded to their original values, e.g. seconds. The timer expires when it counts down to zero. In a preferred embodiment, the new timer is maintained in external hardware and is interrupted by an interrupt service routine, for example a system BIOS timer zero interrupt handler or the SMI interrupt service routine. Serviced. Alternatively, the timer may be implemented and serviced only by an interrupt service routine.

바람직하게, 새로운 타이머는 시스템 BIOS 타이머 제로 인터럽트 처리기에의해 서비스되는데, 이 처리기는 새로운 타이머가 만료되었으며 사용자가 중지를 원하는지(즉 중지 요구가 보류중인지)를 체크하도록 수정된다. 이러한 조건이 충족되면, 시스템은 운영 체제에 통지하지 않고, 즉 중지가 APM BIOS 이벤트 큐내에 배치되지 않고 중지될 수 있다. 시스템 재개시, 임계 재개 이벤트가 APM 이벤트 큐상에 배치된다. 동작중인 APM 드라이버가 서비스 이벤트를 다시 폴링할 때, APM 드라이버는 임계 재개 이벤트를 수신하여 운영 체제가 재개 후 클린업(clean up) 시스템 시간 갱신 등의 작입을 할 수 있도록 한다.Preferably, the new timer is serviced by the system BIOS timer zero interrupt handler, which is modified to check if the new timer has expired and the user wants to stop (ie, a stop request is pending). If this condition is met, the system can be stopped without notifying the operating system, that is, without stopping being placed in the APM BIOS event queue. Upon system restart, a critical resume event is placed on the APM event queue. When the running APM driver polls for service events again, the APM driver receives a critical resume event, allowing the operating system to initiate operations such as clean up system time updates after resumption.

바람직하게, APM 시스템 BIOS에 있어서,OS APM 드라이버로부터의 매 획득 이벤트(get event) 호출시, 새로운 카운트다운 타이머가 리세트, 즉 자신의 본래값으로 재로드된다. 이것은 APM이 이벤트를 서비스 중이고 정상적으로 동작중일 때카운트다운 타이머가 만료되는 것을 방지한다. 운영 체제 시스템 APM 드라이버가 이벤트 서비스를 중단하면(획득 이벤트 호출이 존재하지 않으면), 카운트다운 타이머는 리세트되지 않고 만료될 것이다. 사용자가 중지를 시도할 때, 시스템은 카운트다운 시간이 영에 다다를 때 자동적으로 응답한다.Preferably, in the APM system BIOS, upon every get event call from the OS APM driver, a new countdown timer is reset, i.e., reloaded to its original value. This prevents the countdown timer from expiring when the APM is servicing the event and operating normally. If the operating system APM driver stops the event service (if an acquisition event call does not exist), the countdown timer will expire without reset. When the user attempts to stop, the system automatically responds when the countdown time reaches zero.

카운트다운 타이머는 시스템에 대해 추가적인 특징을 또한 제공하는 저렴한 비용의 프로그램된 마이크로제어기 내에 구현된다. 마이크로제어기의 특징 중의 하나는 자동 백업 중지 시스템을 제공하는 데 사용되는 범용 카운트다운 타이머이다.The countdown timer is implemented in a low cost programmed microcontroller that also provides additional features for the system. One of the features of the microcontroller is a general-purpose countdown timer used to provide an automatic backup stop system.

대략 32 타이머 레벨 제로 인터럽트마다, 시스템 BIOS 인터럽트 처리기는 카운트다운 타이머가 만료되었는지와 사용자가 중지를 원하는지를 체크한다. 이러한 조건 발생시, 시스템은 즉각적으로 중지된다. 카운트다운 타이머는 16초로 세트되어 APM내 사각 지내(dead zones),(예를 들면 APM 획득 이벤트 폴 속도가 매 15초마다 1회인 마이크로소프트 윈도우즈하의 풀스크린 MS-DOS)을 허용한다.At approximately 32 timer level zero interrupts, the system BIOS interrupt handler checks if the countdown timer has expired and if the user wants to stop. When this condition occurs, the system is immediately stopped. The countdown timer is set to 16 seconds to allow dead zones in APM (e.g., full-screen MS-DOS under Microsoft Windows, where the APM acquisition event poll rate is once every 15 seconds).

본 발명은 운영 체제내 고급 전력 관리(APM)의 단점을 보완한다 카운트다운 타이머는 OS APM 드라이버가 BIOS 이벤트를 서비스하는데 실패하는 즉시 카운트다운을 시작한다. 이러한 시스템은 운영 체제 APM 드라이버가 획득 이벤트 서비스를 제공하는 것을 중지할 때 자동적으로 개입된다. 마찬가지로, 시스템은 APM 드라이버가 이벤트를 다시 서비스하기 시작할 때 자동적으로 개입 상태에서 벗어난다. 본 발명은 중지 및 재개 시스템의 의존성을 증대시킨다. 기지의 사각 지대는 백업 중지 시스템에 의해 자동적으로 커버된다. 백업 시스템은 완전히 자동적이고, 사용자의 관여를 필요로 하지 않는다.The present invention compensates for the shortcomings of Advanced Power Management (APM) in the operating system. The countdown timer starts counting as soon as the OS APM driver fails to service the BIOS event. Such a system is automatically involved when the operating system APM driver stops providing acquisition event services. Similarly, the system automatically leaves the intervention state when the APM driver starts to service the event again. The present invention increases the dependency of the suspend and resume system. Known blind spots are automatically covered by a backup stop system. The backup system is fully automatic and does not require user intervention.

본 발명의 상술한 장점 및 다른 장점들은 본 발명의 바람직한 실시예의 상세한 설명으로부터 명백하게 이해될 것이다.The above and other advantages of the present invention will be apparent from the detailed description of the preferred embodiments of the present invention.

본 발명이 구현되어 본 명세서의 일 부분을 구성하는 첨부 도면에서, 본 발명의 실시예들이 예시되었으며, 전술한 본 발명의 전반적인 설명 및 하기한 본 발명의 상세한 설명과 함께 첨부 도면을 참조함으로써 본 발명의 원리를 이해할 수 있을 것이다.In the accompanying drawings in which the present invention has been implemented and constitutes a part of this specification, embodiments of the invention have been illustrated, and by reference to the accompanying drawings in conjunction with the foregoing general description of the invention and the following detailed description of the invention, the invention Understand the principles of

비록, 본 발명이 본 발명의 바람직한 실시예가 도시된 첨부 도면을 참조하여 이하 상세히 기술될 것이지만, 당업자라면 본 발명의 바람직한 결과를 얻으면서도 다양한 변경을 가할 수 있음을 이해하여야 할 것이다. 따라서, 다음의 설명은 당업자를 대상으로 광범위한 설명적인 내용을 담고 있으며, 본 발명을 제약하려는 것은 아님을 이해해야 할 것이다. 본 발명은 단지 컴퓨터 구조 설계에만 한정되지 않으며, 디지탈 설계, BIOS 설계, 보호 모드 80486 코드 설계(protected mode 80486 code desgn), 응용 코드 설계, 운영 체제 코드 설계, 및 고급 전력 관리 고급 프로그래밍 인터페이스 사용을 포함하는 컴퓨터 시스템의 완전한 설계(complete design)를 다루고 있다. 본 출원서는 컴퓨터 시스템의 모든 면에 대해 잘 알고 있는 이들을 대상으로 작성되었다.Although the present invention will be described in detail below with reference to the accompanying drawings, in which preferred embodiments of the invention are shown, it will be understood by those skilled in the art that various changes may be made while obtaining the preferred results of the invention. Accordingly, the following description is to be understood that it is intended to those skilled in the art for a broader description and not to limit the invention. The invention is not limited to computer architecture design, but includes digital design, BIOS design, protected mode 80486 code desgn, application code design, operating system code design, and use of advanced power management advanced programming interfaces. It deals with the complete design of computer systems. This application is written for those who are familiar with all aspects of computer systems.

이제 첨부 도면을 보다 상세히 참조하면, 본 발명을 구체화한 마이크로컴퓨터 시스템이 참조 번호(10)(제 1 도)로 도시되어 있다. 전술한 바와 같이, 컴퓨터 (10)는 연관된 디스플레이 모니터(11), 키보드(12), 마우스(13), 그리고 프린터 혹은 플로터(14)를 구비하고 있다. 컴퓨터(10)(제 2 도)는 샤시(chassis)(19)와 함께 밀봉되고 차폐된 용적을 정의하는 장식용 외부 부재(16)와 내부 차폐 부재 (inner shield member)(18)로 형성된 커버(15)를 구비하며, 밀봉되고 차페된 용적내에 디지탈 데이타를 처리하고 저장하기 위한 데이타 처리 및 저장 구성 요소를 가진다. 적어도 소정의 이들 구성 요소는, 샤시(19)상에 장착되어, 상술한 구성요소 및 플로피 디스크 드라이브(floppy disk drives), 각종 유형의 직접 액세스 저장 장치, 액세서리 어댑터 카드 혹은 보드등과 같은 다른 연관된 요소들을 포함하는 컴퓨터(10)의 구성 요소들을 전기적으로 상호접속하는 수단을 제공하는 다충 플래이너(20) 혹은 마더보드상에 장착된다. 차후에 보다 상세히 기술되는 바와 같이, 마이크로컴퓨터의 동작 구성 요소로/로부터 입력/출력 신호를 전송하기 위한 수단이 플래이너(20)에 제공된다.Referring now to the accompanying drawings in more detail, a microcomputer system incorporating the present invention is shown by reference numeral 10 (FIG. 1). As mentioned above, the computer 10 has an associated display monitor 11, keyboard 12, mouse 13, and a printer or plotter 14. The computer 10 (FIG. 2) is a cover 15 formed of an inner shield member 18 and a decorative outer member 16 defining a sealed and sealed volume with a chassis 19. And a data processing and storage component for processing and storing digital data in a sealed and shielded volume. At least some of these components are mounted on the chassis 19 to provide the components described above and other associated elements such as floppy disk drives, various types of direct access storage, accessory adapter cards or boards, and the like. It is mounted on a motherboard planer 20 or on a motherboard that provides a means for electrically interconnecting the components of the computer 10 including them. As will be described in more detail later, means are provided to the planer 20 for transmitting input / output signals to / from the operating components of the microcomputer.

컴퓨터 시스템은 전원(17), 이하 스위치(21)로 지칭되는 전력 버튼(21) 및 전력/피드백 LED(23)를 구비한다. 이하 설명되는 바와 같이, 전형적인 시스템의 통상적인 전원 스위치와는 달리, 전력 버튼(21)은 전원(17)으로/로부터 비조절 라인 전력(unregulated line power)을 스위칭하지 않는다. 샤시(19)는 베이스(base)(22), 전면 판넬(frout panel)(24), 후면 판넬(rear panel)(25)(제 2 도)을 가진다. 전면 판넬(24)은 적어도 하나의 개랑된 베이(open bay)(도시된 형태에서는 네 개의 베이)를 정의하여 자기(magnetic) 혹은 광학(optical) 디스크용 디스크 드라이브, 테이프 백업 드라이브등과 같은 데이타 저장 장치를 수용한다. 예시된 형태에서는 한 쌍의 상부 베이(26,28), 한 쌍의 하부 베이(29,30)가 제공되어 있다. 하나의 상부 베이(26)는 (3.5 인치 드라이브로 알려진) 제 1 크기의 주변 드라이브(peripheral drive)를 수용하는데 적합하며, 다른 상부 베이(28)는(3.5와 5.25인치와 같은) 두 가지 크기중 선택된 하나의 크기의 드라이브를 수용하는데 적합하다. 하부 베이들은 단지 한가지 크기(3.5 인치)의 장치를 수용하는데 적합하다. 제 1 도에 도시된 플로피 디스크 드라이브(27)는 착탈형 매체 직접 액세스 저장 장치(removable medium direct access storage device)이며, 일반적으로 알려진 바와 같이, 그 속에 디스켓을 삽입할 수 있으며, 이 디스켓을 사용하여 데이타를 수신, 저장 및 전송할 수 있다. 하드 디스크(31)는 알려진 바와 같이, 데이타를 저장 및 전송할 수 있는 고정 매체 직접 액세스 저장 장치이다.The computer system has a power source 17, a power button 21, hereinafter referred to as a switch 21, and a power / feedback LED 23. As described below, unlike conventional power switches in typical systems, power button 21 does not switch unregulated line power to / from power source 17. The chassis 19 has a base 22, a front panel 24, and a rear panel 25 (FIG. 2). The front panel 24 defines at least one open bay (four bays in the form shown) to store data such as disk drives for magnetic or optical disks, tape backup drives, and the like. Accept the device. In the illustrated form, a pair of upper bays 26 and 28 and a pair of lower bays 29 and 30 are provided. One upper bay 26 is suitable for accommodating a peripheral drive of a first size (known as a 3.5 inch drive), while the other upper bay 28 is of two sizes (such as 3.5 and 5.25 inches). It is suitable for accommodating a drive of one size selected. The lower bays are only suitable for accepting one size (3.5 inch) device. Floppy disk drive 27 shown in FIG. 1 is a removable medium direct access storage device, and as is generally known, a diskette can be inserted therein, and the diskette can be used to Can be received, stored and transmitted. Hard disk 31 is a fixed medium direct access storage device capable of storing and transferring data, as is known.

상술한 구조를 본 발명과 관련짓기에 앞서, 퍼스널 컴퓨터 시스템(10)의 일반적인 동작에 대한 개요를 검토하는 것이 좋을 것이다. 제 3A 도 및 제 3B 도를 참조하면, 플래이너(20)에 장착된 구성 요소, 플래이너를 I/O 슬롯에 접속하는 접속부 및 퍼스널 컴퓨터의 여타 하트웨어를 포함하는 각종 구성 요소를 예시하는 퍼스널 컴퓨터 시스템의 블럭도가 도시되어 있다. 플래이너에 접속된 시스템 프로세서(40[본 명세서에서, CPU(40)]는 마이크로프로세서를 포함하며 고속 CPU 로컬 버스(42)에 의해 메모리 제어 장치(46)에 연결되고, 또한 이 메모리 제어 장치(46)를 통해 휘발성 랜덤 액세스 메모리(RAM)(53)에 연결된다. 메모리 제어 장치(46)는 메모리 제어기(48), 어드레스 멀티플랙서(50) 및 데이타 버퍼(52)를 포함한다. 메모리 제어 장치(46)는 네 개의 RAM 모듈(54)로 도시된 랜덤 액세스 메모리(53)에 접속된다. 메모리 제어기(48)는 마이크로프로세서(40)로/로부터의 어드레스를 특정 RAM(53) 영역으로 맵핑(mapping)하는 논리를 포함한다. 이 논리는 앞서 BIOS에 의해 점유된 RAM을 회수(reclaim)하는 데 사용된다. 메모리 제어기(48)는 ROM 선택 신호(ROMSEL)를 발생하여 ROM(88)을 인에이블(enable) 혹은 디스에이블(disable)시킨다. 시스템 프로세서(40)는 임의의 적절한 마이크로프로세서가 사용될 수 있는데, 한가지 적당한 마이크로프로세서를 들자면 인텔 사의 80486이다.Prior to associating the above-described structure with the present invention, it would be useful to review an overview of the general operation of the personal computer system 10. 3A and 3B, a personal computer that illustrates various components including components mounted to the planer 20, connections connecting the planer to the I / O slots, and other heartware of the personal computer. A block diagram of the system is shown. The system processor 40 (here, CPU 40) connected to the planer includes a microprocessor and is connected to the memory control device 46 by a high speed CPU local bus 42, which is also connected to the memory control device ( 46 is connected to volatile random access memory (RAM) 53. Memory control device 46 includes memory controller 48, address multiplexer 50, and data buffer 52. Memory control Device 46 is connected to random access memory 53, shown as four RAM modules 54. Memory controller 48 maps an address to / from microprocessor 40 to a particular RAM 53 area. This logic is used to reclaim the RAM previously occupied by the BIOS The memory controller 48 generates a ROM select signal ROMSEL to check the ROM 88. Enable or Disable System Program Processor 40 is there any appropriate microprocessor can be used, one instance a suitable microprocessor is the Intel 80486's.

인텔 80486은 내부 캐시(internal cache)를 가지므로, CPU(40)가 인텔 80486이라면 CPU 캐시(41)를 구비할 것이다.The Intel 80486 has an internal cache, so if the CPU 40 is an Intel 80486, it will have a CPU cache 41.

본 발명은 특히 제 3A 도 및 제 3B 도의 시스템 블럭도를 참조하여 기술되겠지만, 본 발명에 따른 장치 및 방법은 플래이너 보드의 다른 하드웨어 구성에서도사용될 수 있다. 예를 들면, 시스템 프로세서(40)는 인텔 80286 혹은 80386 마이크로프로세서일 수 있다. 본 명세서에서 사용된 80286,80386 혹은 80486라 지칭하는 것은 일반적으로 인텔 사의 마이크로프로세서를 의미한다. 그러나, 최근에 다른 제조자들은 인텔 X86 구조의 인스트럭션 세트를 실행할 수 있는 마이크로프로세서를 개발해 왔으며, 상술한 용어는 이 인스트럭션 세트를 실행할 수 있는 마이크로프로세서를 포함한다. 당업자라민 알 수 있는 바와 같이, 초기의 퍼스널컴퓨터는 전형적으로 시스템 프로세서로 유명한 인텔 8088 혹은 8086 마이크로프로세서를 사용했다. 이들 프로세서는 1 메가바이트(megabyte) 메모리를 어드레스(address)할 수 있는 능력을 가진다. 최근에, 퍼스널 컴퓨터는 고속 인텔 80286,80386 및 80486 마이크로프로세서를 통상 사용하는데, 이들 프로세서는 저속 8086마이크로프로세서를 에뮬레이트(emulate)하기 위해 가상(virtual) 혹은 실(real)모드에서 동작할 수 있거나, 혹은 몇몇 모델의 경우 어드레스 지정 범위를 1 메가 바이트에서 4 기가바이트(Gigabyte)로 확장하는 보호 모드(protected mode)에서 동작할 수 있다. 본질적으로,80286, 80386 및 80486의 실모드 특징은 8086과 8088마이크로프로세서용으로 작성된 소프트웨어에 하드웨어 호환성을 제공한다. 전술한 인텔 사 패밀리의 프로세서들은 주로, 486처럼, 전체 유형명칭(type designater)에서 마지막 세자리 숫자에 의해 식별된다.Although the invention will be described in particular with reference to the system block diagrams of FIGS. 3A and 3B, the apparatus and method according to the invention can also be used in other hardware configurations of the planer board. For example, system processor 40 may be an Intel 80286 or 80386 microprocessor. As used herein, the term 80286,80386 or 80486 refers to an Intel microprocessor. Recently, however, other manufacturers have developed microprocessors capable of executing an instruction set of an Intel X86 architecture, and the above term includes microprocessors capable of executing this instruction set. As can be appreciated by those skilled in the art, early personal computers typically used Intel 8088 or 8086 microprocessors, which are well known as system processors. These processors have the ability to address 1 megabyte of memory. Recently, personal computers typically use high speed Intel 80286,80386 and 80486 microprocessors, which can operate in virtual or real mode to emulate a low speed 8086 microprocessor, Alternatively, some models can operate in a protected mode that extends the addressing range from 1 megabyte to 4 gigabytes. In essence, the real-mode features of the 80286, 80386, and 80486 provide hardware compatibility for software written for the 8086 and 8088 microprocessors. Processors in the Intel family described above are often identified by the last three digits in the overall type designater, such as 486.

제 3A 도 및 제 3B 도를 다시 참조하면,(데이타, 어드레스 및 제어 구성 요소를 포함하는) CPU 로컬 버스(42)는 마이크로프로세서(40),[CPU(40) 자체에 제공되지 않는 경우]수치 코프로세서(math coprocessor)(144), 비디오 제어기(56), 시스템 캐시 메모리(60), 그리고 캐시 제어기(62)의 접속을 제공한다. 비디오 제어기(56)에는 모니터(혹은 비디오 디스플레이 터미날)(11) 및 비디오 메모리(58)가 연관된다. 또한, CPU 로컬 버스(42)상에 버퍼(64)가 연결된다. 버퍼(64)는 [CPU로컬 버스(42)에 비해] 저속의 시스템 버스(66)에 연결되며, 어드레스, 데이타 및 제어 구성 요소를 포함한다. 시스템 버스(66)는 버퍼(64)와 또다른 버퍼(68)간을 연결한다. 시스템 버스(66)는 또한 버스 제어, 타이밍 장치(70) 및 DMA 장치(71)에 접속된다. DMA 장치(7)는 중앙 중재기(82) 및 DMA 제어기(72)로 구성된다. 부가적인 버퍼(74)는 시스템 버스(66)과 ISA(Industry Standard Architecture) 버스(76)와 같은 선택사양적 피쳐 버스 사이의 인터페이스를 제공한다. 버스(76)에는 (도시되지 않은) ISA 어댑터 카드를 수용하기 위해 다수의 I/O 슬롯(78)이 연결된다. ISA 어댑터 카트는 다수의 I/O 슬롯(78)에 플러그로 연결되어, 시스템(10)에 부가적인 I/O 장치 혹은 메모리를 제공한다.Referring again to FIGS. 3A and 3B, the CPU local bus 42 (including the data, address and control components) is a number of microprocessors 40 (if not provided to the CPU 40 itself). A coprocessor 144, a video controller 56, a system cache memory 60, and a cache controller 62 are provided. Video controller 56 is associated with a monitor (or video display terminal) 11 and video memory 58. In addition, a buffer 64 is connected on the CPU local bus 42. The buffer 64 is connected to the slow system bus 66 (relative to the CPU local bus 42) and contains address, data and control components. System bus 66 connects between buffer 64 and another buffer 68. The system bus 66 is also connected to the bus control, the timing device 70 and the DMA device 71. The DMA device 7 consists of a central arbiter 82 and a DMA controller 72. The additional buffer 74 provides an interface between an optional feature bus, such as the system bus 66 and the Industry Standard Architecture (ISA) bus 76. The bus 76 is connected with a number of I / O slots 78 to accommodate ISA adapter cards (not shown). The ISA adapter cart is plugged into a number of I / O slots 78 to provide additional I / O devices or memory to the system 10.

중재 제어 버스(arbitration control bus)(80)는 DMA 제어기(72) 및 중앙 중재기(82)를 I/O슬롯(78), 디스켓 어댑터(84) 및 IDE(Integrated Drive Electronics) 고정 디스크 제어기(86)와 연결시킨다.Arbitration control bus 80 provides DMA controller 72 and central arbiter 82 with I / O slots 78, diskette adapters 84, and integrated drive electronics (IDE) fixed disk controllers (86). ).

마이크로컴퓨터 시스템(10)은 기본 4 메가바이트 RAM 모듈(53)을 구비하는 것으로 도시되었지만, 선택사양적 고-밀도 메모리 모듈(optional higher-density memory modules)(54)을 부가함으로써 추가적인 메모리가 제 3A 도 및 제 3B 도에도시된 바와 같이 상호접속될 수 있음을 이해해야 한다. 본 발명은 단지 예시를 위하여 기본 4 메가바이트 메모리 모듈을 참조하여 설명된다.The microcomputer system 10 is shown as having a basic 4 megabyte RAM module 53, but additional memory can be added by adding optional higher-density memory modules 54 to the third memory. It should be understood that they may be interconnected as shown in FIGS. 3 and 3B. The invention is described with reference to a basic 4 megabyte memory module for illustrative purposes only.

래치 버퍼(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)는 전원(17)과, 전력 스위치(21)와, 전력/피드백 LED(23)와,내부 모뎀(900) 및/또는 외부 모뎀(902)과 회로 통신(circuit communication)한다. 외부 모뎀(902)은 전형적으로 변압기(904)에 연결되며, 이 변압기는 당업자에게 잘 알려진 바와 같이 벽면 아웃렛에 연결된다. 모뎀(900,902)은 전형적인 전화 아웃렛(telephone outlet)에 연결된다. 전력 관리 회로(106)는 제 6A 도 및 제 6B 도에 도시되어 있으며, 제 6A,6B,6C 및 제 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으로부터 실행된다).Latch buffer 68 is connected between system bus 66 and planer I / O bus 90. Planer I / O bus 90 includes address, data, and control components. Along the planer I / O bus 90, a diskette adapter 84, an IDE disk adapter 86, an interrupt controller 92, an RS-232 adapter 94, a nonvolatile CMOS, also referred to herein as NVRAM. Various such as RAM 96, CMOS real time clock 98, parallel adapter 100, multiple timers 102, read only memory (ROM) 88, 8042 (104), and power management circuits 106. I / O adapter 84 and other components are connected. 8042 104 is a slave microprocessor that interfaces keyboard 12 and mouse 13. The power management circuit 106 is in circuit communication with a power source 17, a power switch 21, a power / feedback LED 23, an internal modem 900 and / or an external modem 902. . The external modem 902 is typically connected to a transformer 904, which is connected to a wall outlet as is well known to those skilled in the art. Modems 900 and 902 are connected to a typical telephone outlet. The power management circuit 106 is shown in FIGS. 6A and 6B and will be described in more detail with reference to FIGS. 6A, 6B, 6C and 7. Read-only memory 88 includes a BIOS used to interface between the operating system of microprocessor 40 and the I / O device. The BIOS stored in the ROM 88 may be copied to the RAM 53 to reduce the execution time of the BIOS. ROM 88 also responds to memory controller 48 (via a ROMSEL signal). When ROM 88 is enabled by memory controller 48, the BIOS is run from ROM. When the ROM 88 is disabled by the memory controller 48, the ROM does not respond to address inquiries from the microprocessor 40 (ie, the BIOS is executed from RAM).

실시간 클럭(98)은 당일의 시간 계산에 사용되고, NVRAM(96)은 시스템 구성데이타(system configuration data)를 저장하는 데 사용된다. 즉, NVRAM(96)은 시스템의 현재 구성을 나타내는 값을 포함한다. 예를 들면, NVRAM(96)은 고정 디스크 혹은 디스켓 용량, 디스플레이 유형, 메모리 용량, 시간, 날까등의 정보를 포함한다. 더우기, 세트 구성(SET Configuration)과 같은 특수 구성(special configuration) 프로그램이 실행될 때마다, 이들 데이타는 NVRAM에 저장된다. 세트 구성 프로그램의 목적은 시스템의 구성 특징을 나타내는 값을 NVRAM에 저장하는 것이다.The real time clock 98 is used to calculate the time of day and the NVRAM 96 is used to store system configuration data. That is, NVRAM 96 contains a value that indicates the current configuration of the system. For example, NVRAM 96 includes information such as fixed disk or diskette capacity, display type, memory capacity, time, date, and the like. Moreover, each time a special configuration program such as SET Configuration is executed, these data are stored in NVRAM. The purpose of the set configuration program is to store values in NVRAM that represent the configuration characteristics of the system.

전술한 장치의 거의 모두는 휘발성 레지스터를 포함한다. 도면을 간단히 나타내기 위해, 특정 장치의 레지스터는 그 장치로 참조될 것이다. 예를 들면, CPU레지스터는 CPU(40) 레지스터로 칭하며, 비디오 제어기 레지스터는 비디오 제어기(56) 레지스터로 참조될 것이다.Almost all of the foregoing devices include volatile registers. For simplicity, the register of a particular device will be referred to as that device. For example, the CPU register is referred to as the CPU 40 register, and the video controller register will be referred to as the video controller 56 register.

전술한 바와 같이, 컴퓨터는 샤시(19)과 함게 밀봉되고 차폐된 용적을 형성하는 커버를 구비하여, 마이크로컴퓨터의 상술한 구성 요소들을 포함한다. 커버(15)는 바람직하게, 주조가능한 합성 물질(modable synthetic material)로 제조된 단일 주조 구성 요소인 외부 장식용 커버 부재(16)와, 장식용 커버 부재의 형상에 맞춰 형성된 얇은 금속 시트 라이너(metallic thin sheet liner)(18)로 형성된다.As mentioned above, the computer includes the above-described components of the microcomputer, with a cover forming a sealed and shielded volume with the chassis 19. The cover 15 is preferably an outer decorative cover member 16, which is a single casting component made of a modable synthetic material, and a thin metallic sheet liner formed to match the shape of the decorative cover member. liner) 18.

그러나, 커버는 다른 공지의 방식으로 제조될 수 있으며, 또한, 본 발명의 유용성은 개시된 유형의 밀봉체(enclosure)에 한정되지 않는다.However, the cover can be manufactured in other known manners, and furthermore, the usefulness of the present invention is not limited to an enclosure of the type disclosed.

(동작 상태)(Operation state)

이제 제 4 도를 참조하면, 본 발명의 컴퓨터 시스템의 상태도(state diagram)가 도시되어 있다. 본 발명의 컴퓨터 시스템(10)은 정상 동작 상태(150),대기 상태(152), 중지 상태(154), 오프 상태(156)의 네 가지 상태를 가진다. 제 4도에 도시된 상태들간의 전이(transitions)는 바람직한 실시예의 설명을 위한 것일 뿐 본 발명을 한정하려는 것은 아니다. 따라서, 부가적인 이벤트가 상태 전이를 일으키는데 사용될 수 있다.Referring now to FIG. 4, a state diagram of a computer system of the present invention is shown. The computer system 10 of the present invention has four states: a normal operating state 150, a standby state 152, a suspended state 154, and an off state 156. The transitions between the states shown in FIG. 4 are for illustration of the preferred embodiment only and are not intended to limit the invention. Thus, additional events can be used to cause state transitions.

본 발명의 컴퓨터 시스템(10)의 정상 동작 상태(150)는 전형적인 데스크탑컴퓨터의 정상 동작 상태와 사실상 동일하다. 사용자는 응용 프로그램을 사용할 수 있고, 기본적으로 임의의 다른 컴퓨터들처럼 취급할 수 있다. 사용자가 알 수 있는 하나의 차이점은 운영 체제내 전력 관리 드라이버(APM OS 드라이버)의 존재로서, 이 전력 관리 드라이버는 백그라운드 및 각종 APM BIOS 루틴에서 실행된다.The normal operating state 150 of the computer system 10 of the present invention is substantially the same as the normal operating state of a typical desktop computer. The user can use the application and basically treat it like any other computer. One difference that the user can see is the presence of a power management driver (APM OS driver) in the operating system, which runs in the background and in various APM BIOS routines.

APM BIOS 루틴은 차후에 기술될 것이며, 중지(Suspend) 루틴, 재개(Resume)루틴,The APM BIOS routines will be described later, including the Suspend routine, Resume routine,

부트-업(Boot-Up) 루틴, 감독(supervisor) 루틴, 저장 CPU 상태(Save CPU State) 루틴, 그리고, CPU 상태 회복(Restore CPU State) 루틴을 포함한다. 도면에 도시되지 않은 APM BIOS 루틴은 APM BIOS 경로배정 루틴(APM BIOS Routing Routine)이 다. APM BIOS 경로배정 루틴은 본질적으로 APM OS 드라이버로부터의 커맨드(command)를 수신하여 적절한 APM BIOS 루틴을 호출한다. 예를 들면, APM OS 드라이버가 중지 커맨드를 발생할 때, APM BIOS 경로배정 루틴은 중지 루틴을 호출한다. 다른 예를 들면, APM OS 드라이버가 획득이벤트 커맨트(Get Event command)를 발생할 때마다, APM BIOS 경로배정 루틴은 감독 루틴을 호출한다. 이들 루틴은 BIOS내에 위치하여 BIOS가 섀도우(shadow)될 때 같이 섀도우된다. OS와 APM BIOS루틴내 전력 관리 드라이버는 컴퓨터의 네 가지 상태간의 전이를 제어한다. 문맥에 따라 다를 수도 있지만 단어 APM는 일반적으로 APM OS 드라이버를 지칭한다.Boot-Up routines, supervisor routines, Save CPU State routines, and Restore CPU State routines. An APM BIOS routine not shown in the figure is an APM BIOS Routing Routine. The APM BIOS routing routine essentially receives commands from the APM OS driver and invokes the appropriate APM BIOS routine. For example, when the APM OS driver issues a stop command, the APM BIOS routing routine calls the stop routine. In another example, whenever the APM OS driver issues a Get Event command, the APM BIOS routing routine calls the supervision routine. These routines are located in the BIOS and are shadowed together when the BIOS is shadowed. Power management drivers in the OS and APM BIOS routines control the transition between the four states of the computer. The word APM generally refers to the APM OS driver, although it may vary in context.

제 2 상태, 즉 대기 상태(152)는 정상 동작 상태(150)보다 적은 전력을 사용하면서도, 응용 프로그램이 통상 실행되던 것처럼 실행되도록 한다. 일반적으로,대기 상태(152)에서의 전력은 장치를 제각기의 저전력 모드로 배치하는 코트에 의해 절약된다. 바람직한 실시예에서는, 대기 상태(152)에서 고정 디스크 저장 장치(31)내의(도시되지 않은) 고정 디스크의 회전을 중단시키고, 비디오 신호의 발생을 중단시키고, CPU(40)를 저전력 모드로 배치함으로써 전력을 절약하는데, 이는 차후에 보다 상세히 기술될 것이다. 그러나, 이는 본 발명을 한정하려는 것은 아니며, 전력 소비 감소를 위해 CPU 클럭을 느리게 하거나 혹은 중단시키는 것과 같은 다른 방법을 사용할 수 있다.The second state, i.e., the standby state 152, uses less power than the normal operating state 150, but allows the application to run as if it had normally run. In general, power in standby state 152 is saved by a coat that places the device in its respective low power mode. In the preferred embodiment, by stopping the rotation of the fixed disk (not shown) in the fixed disk storage device 31 in the standby state 152, stopping the generation of the video signal, and placing the CPU 40 in the low power mode Saving power, which will be described in more detail later. However, this is not intended to limit the invention and other methods may be used, such as slowing down or stopping the CPU clock to reduce power consumption.

바람직한 실시예에서, 전력은 세 가지 별도의 방식으로 절약된다. 먼저, 정상 동작 상태(150)에서, 고정 디스크 저장 장치(31)내의 고정 디스크는 예를 들어 분당 3600,4500, 혹은 5400 회전수(RPM)로 일정하게 회전한다. 대기 상태(152)에서, IDE 디스크 제어기(86)에는 고정 디스크 저장 장치(31)를 저-전력 모드로 진입시키는(즉, 고정 디스크 저장 장치(31)내의 고정 디스크의 회전을 중단시키는) 커맨드가 주어지며, 이에 따라 고정 디스크의 회전동안 고정 디스크 저장 장치(31)내의(도시되지 않은) 모터(motor)가 전형적으로 소비하는 전력을 절약한다.In a preferred embodiment, power is saved in three separate ways. First, in the normal operating state 150, the fixed disk in the fixed disk storage device 31 rotates constantly, for example, at 3600, 4500, or 5400 revolutions per minute (RPM). In the standby state 152, the IDE disk controller 86 has a command for entering the fixed disk storage device 31 into the low-power mode (i.e., stopping the rotation of the fixed disk in the fixed disk storage device 31). This saves the power typically consumed by a motor (not shown) in the fixed disk storage 31 during rotation of the fixed disk.

두 번째로, 정상 동작 상태(150)에서, 컴퓨터 시스템의 비디오 제어기(56)는 비디오 디스플레이 터미날(11)에 나타난 이미지에 대응하는 비디오 신호(본 기술분야에서 잘 알려진 HSYNC, VSYNC, R, G, B 등)를 항상 발생한다. 대기 상태(152)에서, 비디오 제어기(56)는 비디오 신호 발생을 중단하며, 이에 따라 비디오 제어기(56)에 의해 통상 소비되는 전력을 절약한다. HSYNC, VSYNC, R, G 및 B는 모두 대략 0.00 VDC로 구동된다. VESA 방식 모니터(Video Electronics Standards Association compliarnt monitor)는 스스로 턴오프되므로 전력을 더 절약할 수 있다.Secondly, in the normal operating state 150, the video controller 56 of the computer system is connected to a video signal corresponding to the image shown in the video display terminal 11 (HSYNC, VSYNC, R, G, well known in the art). B) always occurs. In standby state 152, video controller 56 stops generating video signals, thereby saving power typically consumed by video controller 56. HSYNC, VSYNC, R, G and B are all driven at approximately 0.00 VDC. Video Electronics Standards Association compliarnt monitors turn off by themselves, saving even more power.

세 번째로, 정상 동작 상태(150)에서, CPU(40)는 항상 커맨드를 실행하며,따라서 전력을 소비한다. 대기 상태(152)에서는, BIOS가 APM CPU 유휴 호출(APM CPU Idle Call)에 응답하여 HALT 인스트럭션을 발생한다. HALT 인스트럭션을 실행하면, 다음 하드웨어 인터럽트가 발생할 때까지, CPU 전력 소모를 상당량 감소시킨다. CPU가 진정한 유휴 상태에 있다면, CPU는 90% 이상의 시간동안 정지(halt)된 상태로 남아있게 된다.Third, in the normal operating state 150, the CPU 40 always executes commands, thus consuming power. In standby state 152, the BIOS issues a HALT instruction in response to an APM CPU Idle Call. Executing the HALT instruction significantly reduces CPU power consumption until the next hardware interrupt occurs. If the CPU is truly idle, the CPU will remain idle for more than 90% of the time.

몇몇 시스템은 스크린-세이버(screen saver)를 구비하여, 스크린(11)을 어두워지게 함으로써 비디오 디스플레이 터미날의 전면에서의 포스포 변-인(phospher burn-in)을 방지한다. 대부분의 이러한 시스템에서, 비디오 제어기(56)는 여전히 비디오 신호를 발생한다. 단순히 어두운 스크린 혹은 동적 디스플레이(dynamic display)에 대응하는 신호를 발생한다. 따라서, 스크린-세이버를 실행하는 컴퓨터시스템은 여전히 이 비디오 신호를 발생하는데 필요한 전력을 소비한다.Some systems have a screen saver to prevent phosphor burn-in at the front of the video display terminal by darkening the screen 11. In most such systems, video controller 56 still generates a video signal. It simply generates a signal that corresponds to a dark screen or dynamic display. Thus, a computer system running a screen-saver still consumes the power required to generate this video signal.

제 3 상태는 중지 상태(154)이다. 중지 상태(154)에서, 컴퓨터 시스템은 극히 소량의 전력을 소비한다. 바람직한 실시예에서, 중지된 컴퓨터는 벽면 아웃렛으로부터 100 밀리와트(milliwatts)보다 적은 전력을 소비한다. 소비되는 전력은,전원(17)에서의 비효율성으로 인해 소비되는 내략 5 와트(watts) 정도의 전력과 전력 관리 회로(106)에 의해 사용되는 소량의 전력이다.The third state is suspended state 154. In the suspended state 154, the computer system consumes very little power. In a preferred embodiment, the suspended computer consumes less than 100 milliwatts of power from the wall outlet. The power consumed is about 5 watts of power consumed due to inefficiency in the power supply 17 and a small amount of power used by the power management circuit 106.

이러한 극히 소량의 전력 사용은 전원을 턴오프 하기에 앞서 컴퓨터 시스템의 상태를 고정 디스크 저장 장치(하드 드라이브)에 저장함으로써 성취된다. 중지 상태(154)에 진입하기 위해서, CPU(40)는 모든 응용 프로그램을 인터럽트하고 CPU의 프로그램 실행 제어를 전력 관리 드라이버로 전달한다. 전력 관리 드라이버 컴퓨터 시스템(10)의 상태를 확인하여, 컴퓨터 시스템의 전체 상태를 고정 디스크 저장 장치(31)에 기록한다. CPU(40) 레지스터, CPU 캐시(41), 시스템 RAM(53), 시스템 캐시(60), 비디오 제어기(56) 레지스터, 비디오 메모리(58), 그리고 잔여 휘발성 레지스터의 상태 모두가 고정 디스크 드라이브(81)에 기록된다. 시스템(10)의 전체 상태는 유용성을 크게 해치지 않으면서(without significant usability penalties) 회복될 수 있는 방식으로 저장된다. 즉, 사용자는 통상적인 경우 요구되는 시스템 운영 체제의 로딩, 그래픽 사용자 인터페이스의 로딩, 그리고 응용 프로그램의 로딩을 기다릴 필요가 없다.This extremely small amount of power usage is achieved by storing the state of the computer system in a fixed disk storage device (hard drive) prior to turning off the power supply. To enter suspend state 154, CPU 40 interrupts all application programs and transfers program execution control of the CPU to the power management driver. The state of the power management driver computer system 10 is checked and the overall state of the computer system is recorded in the fixed disk storage device 31. The states of the CPU 40 register, the CPU cache 41, the system RAM 53, the system cache 60, the video controller 56 registers, the video memory 58, and the remaining volatile registers are all fixed disk drives 81. ) Is recorded. The overall state of system 10 is stored in such a way that it can be recovered without significant significant usability penalties. That is, the user does not have to wait for the loading of the system operating system, the loading of the graphical user interface, and the loading of the application program, which are normally required.

그 후, 컴퓨터는 시스템이 중지되었음을 나타내는 데이타를 비휘발성 CMOS메모리(96)에 기록한다. 마지막으로, CPU(40)는 마이크로제어기(U2)에 지시하여 전원(17)의 ±5VDC 및 ±12VDC를 통한 시스템으로의 조절 전력 공급을 중지시키도록 한다. 컴퓨터 시스템(10)은 이제 컴퓨터의 전체 상태가 안전하게 고정 디스크저장 장치(31)에 저장되었으므로 전력 소비를 낮출 수 있다.The computer then writes data to nonvolatile CMOS memory 96 indicating that the system has been stopped. Finally, the CPU 40 instructs the microcontroller U2 to stop the supply of regulated power to the system via ± 5 VDC and ± 12 VDC of the power source 17. Computer system 10 can now lower power consumption because the entire state of the computer is safely stored in fixed disk storage 31.

상태(state)는 본 명세서를 통하여 유사하나 혼동될 수 있는 두 가지 의미로 사용된다. 장치는 특정 상태에 존재(in)할 수 있다. 네 가지 시스템 상태--정상(150), 대기(152), 중지(154) 및 오프(156)--는 본 발명의 컴퓨터 시스템의 일반적인 상태를 지칭한다. 이 상태들은 일반적인 방식으로 컴퓨터 시스템(10)을 설명한다. 예를 들면, 정상 동작 상태(150)에 있는 동안, CPU(40)는 여전히 코드를 실행중이며, 시스템(10)내의 다수의 레지스터를 변경한다. 마찬가지로, 유사한 활동(activity)이 대기 상태(152)에 있는 동안에도 발생한다. 따라서, 시스템(10)이 정상 동작 상태(150) 및 대기 상태(152)에 있는 동안 컴퓨터 시스템(10)의 메모리 및 레지스터 구성은 동적(dynamic)이다.State is used throughout the specification in two ways that are similar but can be confused. The device may be in a certain state. Four system states--normal 150, standby 152, suspend 154, and off 156-- refer to the general states of the computer system of the present invention. These states describe computer system 10 in a general manner. For example, while in the normal operating state 150, the CPU 40 is still executing code and changes a number of registers in the system 10. Similarly, similar activity occurs while in standby state 152. Thus, the memory and register configurations of the computer system 10 are dynamic while the system 10 is in the normal operating state 150 and the standby state 152.

다른 장치들도 소정 상태에 존재(in)할 수 있다. 전력 관리 회로(106)는 각종 전력 관리 특징을 구현하기 위해서 전력 관리 프로세서 제 6A 도에 도시된 마이크로제어기(U2)와 같은 제 2 의 프로세서를 바람직하게 사용한다. 이러한 프로세서로서 적합한 다수의 프로세서가 존재한다. 본 실시예에서는 전력 관리 프로세서로서 사전프로그램된(preprogrammed) 83C750 마이크로제어기를 사용한다. 마이크로제어기(U2)의 변수(variables) 및 핀(pins)은 제 6A 도를 참조하여 설명되는 바와 같이 여러가지 상태에 존재할 수 있다.Other devices may also be in a given state. The power management circuit 106 preferably uses a second processor such as the microcontroller U2 shown in FIG. 6A of the power management processor to implement various power management features. There are a number of processors suitable as such processors. This embodiment uses a preprogrammed 83C750 microcontroller as the power management processor. Variables and pins of the microcontroller U2 may be in various states as described with reference to FIG. 6A.

전술한 의미를 장치의 상태(the state of a device), 예를 들면, 컴퓨터시스템(10)의 상태 혹은 CPU(40)의 상태와 대비할 수 있다. 장치의 상태는 특정 컴퓨터 사이클에서의 그 장치의 상황(condition)을 지칭한다. 모든 메모리위치(memory locations) 및 레지스터는 특정 이진 값(particular binary values)을 갖는다. 장치의 상태는 그 장치의 내용의 정적 이진 스냅샷(static binary snapshot ) 이다.The foregoing meaning may be contrasted with the state of a device, for example the state of the computer system 10 or the state of the CPU 40. The state of a device refers to the condition of that device in a particular computer cycle. All memory locations and registers have specific binary values. The state of a device is a static binary snapshot of the device's contents.

컴퓨터 시스템(10)의 상태는 동작상 동등물(operational equivalents)을 지칭하며 반드시 정확한 사본(exact copies)을 의미하지는 않는다· 예를 들면, 상태 A에 있는 컴퓨터 시스템은 CPU 캐시(41) 혹은 시스템 캐시(60)내에 소정 메모리를 가질 수 있다. 어느 한 쪽의 캐시의 내용을 시스템 RAM(53)으로 되플러시(flush)시킴으로써 이 컴퓨터 시스템을 상태 B에 배치하는 것이 가능하다. 순수하게 말하자면, 캐시와 시스템 RAM의 내용이 다르므로, 상태 A에 있는 컴퓨터 시스템의 상태는 상태 B에 있는 컴퓨터 시스템의 상태와 다르다. 그러나,(프로그램이 캐시를 이용하여 실행할 수 없기 때문에 발생되는) 시스템 속도의 다소의 경감을 제외하고는 실행중인 프로그램에 영향을 미치지 않으므로, 소프트웨어 동작 측면에서 볼 때 상태 A와 상태 B는 동일하다. 즉, 비록 플러시된 캐시로 인해, 컴퓨터는 캐시 영역이 유용한 코드로 재로딩될 때까지 성능은 약간 떨어지겠지만, 상태 A의 컴퓨터와 상태 B의 컴퓨터는 소프트웨어 동작 측면에서는 동일하다.The state of computer system 10 refers to operational equivalents and does not necessarily mean exact copies. For example, a computer system in state A may be a CPU cache 41 or a system cache ( 60 may have a predetermined memory. It is possible to place this computer system in state B by flushing the contents of either cache to the system RAM 53. Purely speaking, because the contents of the cache and system RAM are different, the state of the computer system in state A is different from that of the computer system in state B. However, state A and state B are identical in terms of software operation, since they do not affect the running program except for a slight reduction in system speed (which occurs because the program cannot run using the cache). In other words, because of the cache being flushed, the computer is slightly degraded until the cache area is reloaded with useful code, but the computer in state A and the computer in state B are identical in terms of software operation.

단어 파워(power)도 또한 혼동이 가능한 두 가지 유사한 의미로 사용된다.The word power is also used in two similar meanings that can be confusing.

그러나 파워는 전기 전력에 관한 것이다. 그러나, 파워는 또한 계산 능력(computational power)에 관한 것으로도 사용된다. 그러나, 이러한 차이는 문맥에 의해 명확히 파악할 수 있을 것이다.But power is about electric power. However, power is also used as it relates to computational power. However, these differences will be clearly understood by context.

회로(circuit)는 일반적으로 물리 전자 장치 혹은 전기적으로 상호접속된 다수의 장치를 말한다. 그러나, 회로는 또한, 물리적 전자 장치의 CPU 코드 동등물을 포함하도록 의도되었다. 예를 들어,2-입력 NAND 게이트는 한편으로 74LS00에 의해 구현될 수도 있으며, 혹은 동일하게 프로그램가능 장치로 구현될 수 있다. 이들 두 장치는 물리 전자 장치이다. 다른 한편으로, CPU(40)가 두 개의 CPU-판독가능 입력 포트로부터 두 입력을 판독하도록 하고 CPU 커맨드를 사용하여NAND 결과를 발생하도록 하고, CPU-기록가능 출력 포트를 통하여 그 결과를 출력하도록 함으로써, NAND 게이트를 구현할 수 있다. 이러한 CPU-인티페이스가능 포트는 본 기술 분야에서 잘 알려진 디코드된 래치들(decoded latches), 그들의 프로그램가능 장치 동등물(programmable device equivalent)처럼 단순하거나, 혹은 PIA와같이 복잡할 수 있다. 회로는 상술한 세 가지 NAND 게이트 구현 예들을 모두 포함하도록 넓은 의미로 해석되어야 한다. 몇몇 경우, 회로는 단순히 전기적 경로(electrical pathway)를 지칭할 수도 있다. 전기적 경로의 유형(types of electrical pathways)은 와이어(wire), 트레이스(trace) 혹은 인쇄 회로 기판(printed circuit board)상의 비아(via)등을 포함하거나, 혹은 하나의 전기적으로 접속된 경로를 형성하는 여러 유형의 전기 경로 조합을 포함한다.Circuitry generally refers to a physical electronic device or a plurality of devices that are electrically interconnected. However, the circuit is also intended to include CPU code equivalents of the physical electronics. For example, the two-input NAND gate may be implemented by 74LS00 on the one hand or may be implemented in the same programmable device. These two devices are physical electronic devices. On the other hand, by causing the CPU 40 to read both inputs from two CPU-readable input ports, generate NAND results using CPU commands, and output the results through the CPU-writable output port. The NAND gate can be implemented. Such a CPU-interfaceable port can be as simple as decoded latches, their programmable device equivalent, or as complex as a PIA, as is well known in the art. The circuit should be construed broadly to include all three NAND gate implementations described above. In some cases, a circuit may simply refer to an electrical pathway. Types of electrical pathways include wires, traces, or vias on a printed circuit board, or form a single electrically connected path. Several types of electrical path combinations.

신호(signal)는 단일 전기 파형 혹은 다수의 파형을 나타낼 수 있다. 예를 들면, 비디오 제어기는 비디오 신호를 발생한다. 이 비디오 신호는 실제로 다수의 전기 전도체상의(본 기술 분야에서 잘 알려진 HSYNC, VSYNC, R, G, B 등의)신호이다.The signal may represent a single electrical waveform or multiple waveforms. For example, the video controller generates a video signal. This video signal is actually a signal on a number of electrical conductors (such as HSYNC, VSYNC, R, G, B, etc., well known in the art).

제 4 도를 다시 참조하면, 마지막 네 번째 상태는 오프 상태(156)이다. 이오프 상태(156)는 통상의 의미로 턴오프된 전형적인 컴퓨터 시스템과 사실상 동일하다. 이 오프 상태에서, 전원(17)의 주/조절 장치(primary/regulation unit)(172)는 컴퓨터(10)에 [제 5 도를 참조하여 보다 상세히 설명되는 바와 같이,AUX5를 통한 소량의 조절 전력(regulated power)을 제외하고는] 조절 전력 공급을 중단하는데, 이 컴퓨터 시스템(10)의 상태는 고정 디스크(31)에 저장되지 않았다.Referring back to FIG. 4, the last fourth state is an off state 156. This off state 156 is substantially the same as a typical computer system turned off in a conventional sense. In this off state, the primary / regulation unit 172 of the power source 17 is connected to the computer 10 with a small amount of regulated power via AUX5, as described in more detail with reference to FIG. The regulated power supply is turned off except for the regulated power, and the state of this computer system 10 has not been stored on the fixed disk 31.

중지 상태(154) 및 오프 상태(156)는 전원(17)이 더이상 조절 전력을 발생하지 않는다는 점에서 유사하다. 다른 점을 살펴 보면, 오프 상태(156)에서는 중지 상태(154)와는 달리 컴퓨터 시스템의 상태가 하드 드라이브(31)에 저장되지 않는다는 것이다. 또한, 오프 상태(156)를 벗어날 때, 컴퓨터(10)는 마치 턴온되는 것처럼 부팅(booting)된다. 즉, 임의의 실행 코드는 사용자에 의해 시작되거나 혹은 AUTOEXEC.BAT 화일과 같은 수단에 의해 자동적으로 시작되어야만 한다. 그러나,중지 상태를 벗어날 때에는, 컴퓨터(10)가 인터럽트되었을 당시의 상태로부터 다시 실행을 재개한다.Suspend state 154 and off state 156 are similar in that power source 17 no longer generates regulated power. In other words, in the off state 156, unlike the suspended state 154, the state of the computer system is not stored in the hard drive 31. Also, when exiting off state 156, computer 10 is booted as if it is turned on. That is, any executable code must be started by the user or automatically by a means such as the AUTOEXEC.BAT file. However, when leaving the stopped state, execution resumes from the state at the time when the computer 10 was interrupted.

제 4 도에는 또한 네 가지 상태간의 전이를 일으키는 이벤트의 일반적인 개략도가 도시되어 있다. 이들 이벤트는 제 6 내지 8 도를 참조하여 상세히 설명될것이나, 이 시점에서의 약간의 설명은 도움이 될 수 있다. 전력 버튼(21), 두 개의 타이머(비활동 대기 타이머 및 비활동 중지 타이머, 제 9 도를 참조한 설명을 참조), 기상 대기 분 타이머(minutes to wake up timer) 중지 인에이블 플래그(suspend enable flag)(제 6A 및 7 도를 참조한 설명을 참조)의 모두는 컴퓨터가 진입하는 상태에 영향을 준다. 일반적으로, 두 개 타이머는 하드웨어이거나 혹은 CPU에서 프로그램으로서 실행되는 CPU 코드 타이머일 수 있다. 바람직한 실시예에서, 이들 두 개의 타이머는 BIOS 데이타 세그먼트(BIOS data segment)로부터 실행되는 CPU 코드 타이머들이다. 그러나, 이들 두개의 타이머는 하드웨어 타이머일 수도 있는데, 이것은 시스템의 오버헤드(overhead)를 감소시킨다는 점에서 더나은 해결 방안이 될 수 있다. 이들 타이머는 제 9 도를 참조하여 보다 상세히설명될 것이다. 이들 두 타이머는 컴퓨터(10)의 정상 동작 상태(150) 혹은 대기 상태(152)에 있을 때 활동화된다. 타이머들은 다른 루틴과 통신하여 어느 한 타이머의 종료(expiration)가 이하 설명된 바와 같은 전이(transition)를 유발하도록 한다. 어느 한 쪽 혹은 양 쪽 타이머는, 사용자의 특정한 요구에 따라, 소정 시간주기(a certain peroid of time) 경과 후에 종료되도록 구성될 수 있다. 바람직한 실시예에서, 비활동 대기 타이머 및 비활동 중지 타이머는 10 내지 90 분 경과후에 종료되도록 설정될 수 있다. 어느 한 쪽 혹은 양 쪽 타이머는 중단될 수 있다.4 also shows a general schematic of the events causing the transition between the four states. These events will be described in detail with reference to FIGS. 6 through 8, but some explanation at this point may be helpful. Power button 21, two timers (inactivity wait timer and inactivity stop timer, see description of FIG. 9), minutes to wake up timer suspend enable flag (See the description with reference to FIGS. 6A and 7) all affect the state in which the computer enters. In general, the two timers may be hardware or CPU code timers that run as programs on the CPU. In a preferred embodiment, these two timers are CPU code timers that run from the BIOS data segment. However, these two timers may be hardware timers, which may be a better solution in terms of reducing the overhead of the system. These timers will be described in more detail with reference to FIG. These two timers are activated when the computer 10 is in the normal operating state 150 or the standby state 152. The timers communicate with other routines such that the expiration of either timer causes a transition as described below. Either or both timers may be configured to expire after a certain peroid of time, depending on the particular needs of the user. In a preferred embodiment, the inactivity wait timer and inactivity stop timer may be set to end after 10 to 90 minutes. Either or both timers can be stopped.

즉 절대로 종료(expire)할 수 없도록 구성될 수 있다. 타이머를 중단시키는 것(stopping)은 타이머의 증분 계수 동작(incremental counting action)을 실제로 멈추거나 혹은 단순히 타이머의 종료를 무시하는 형태를 취할 수 있다. 바람직한 실시예에서, 타이머 종료값으로 0을 설정하면, 타이머 종료는 테스트되지 않는다.That is, it can be configured to never terminate. Stopping the timer may take the form of actually stopping the incremental counting action of the timer or simply ignoring the end of the timer. In a preferred embodiment, setting 0 as the timer end value does not test the timer end.

예를 들면, 컴퓨터가 중지 상태에 진입함으로써 LAN이 그 컴퓨터와 관련하여 실패할 수 있으므로, 네트워크 컴퓨터의 사용자는 컴퓨터가 중지 상태(154)에 진입하는 것을 원치 않을 수 있다.For example, a user of a network computer may not want the computer to enter the suspended state 154 because the LAN may fail with respect to the computer as the computer enters the suspended state.

이론상, 타이 머들은 카운트-업(countt-up) 혹은 카운트-다운(count-down)할 수 있고, 일정한 사전결정된 상태(fixed predetermined state)로 리세트(reset)되어, 타이머가 시작(혹은 재개될 때, 또다른 일정한 사전결정된 상태로 계수하거나,혹은 현재값을 사용하여 종점 종료 트리거(endpoint expiration trigger)로서 합이나 차를 계산할 수 있다. 바람직한 실시예에서, 타이머가 리세트될 때, 실시간 클럭(98)으로부터의 분 변수의 현재값(the present value of the minutes variables)이 저장된다. 타이머는 저장된 분값으로부터 현재의 분값을 감산하고,이 차이값과 사용자가 선택한 값을 비교함으로써 종료 여부를 체크한다.In theory, the timers can count-up or count-down, reset to a fixed predetermined state, and the timer can be started (or resumed). When one counts to another constant predetermined state, or the current value may be used to calculate the sum or difference as an endpoint expiration trigger In a preferred embodiment, when the timer is reset, a real time clock ( The present value of the minutes variables from 98) is stored, and the timer checks whether it is finished by subtracting the current minute value from the stored minute value and comparing this difference with the user-selected value. .

두 타이머는 소정 시스템 활동(certain system activity)에 의해 영향을 받는다.Both timers are affected by certain system activity.

예를 들면, 바람직한 실시예에서, 키보드(12) 키를 누르고, 마우스(13)를이동시키고, 마우스(13)의 버튼을 누르는 사용자의 동작, 혹은 하드 드라이브(31)의 동작에 의해 각 타이머는 재시작(restart)되며, 이는 제 9 도를 참조하여 상세히 설명될 것이다. 그러므로, 사용자가 키보드(12) 키를 누른다든지 혹은 마우스(13)를 사용하는 동안, 혹은 응용 프로그램이 하드 드라이브(81)를 액세스하는 동안 어느쪽 타이머도 절대로 종료되지 않는다. 또한, 타이머를 리세트시키기 위해 다른 시스템 이벤트를 이용할 수도 있다. 이와 달리, 임의의 하드웨어 인터럽트활동이 모니터될 수도 있다. 따라서, 프린팅(IRQ 5 혹은 IRQ 7) 혹은 COMM 포트액세스(IRQ 2 혹은 IRQ 3) 동작이 시스템의 중지 상태(154) 진입을 방지하도록하는 것이 바람직할 수도 있다.For example, in a preferred embodiment, each timer may be set by the user's action of pressing the keyboard 12 key, moving the mouse 13, and pressing the button of the mouse 13, or by the operation of the hard drive 31. It is restarted, which will be described in detail with reference to FIG. Therefore, neither timer is ever terminated while the user presses a keyboard 12 key or uses the mouse 13, or while an application accesses the hard drive 81. It is also possible to use other system events to reset the timer. Alternatively, any hardware interrupt activity may be monitored. Thus, it may be desirable to allow printing (IRQ 5 or IRQ 7) or COMM port access (IRQ 2 or IRQ 3) operations to prevent entering the suspended state 154 of the system.

중지 인에이블 플래그는 마이크로제어기(U2)내의 CPU-조작가능 및 판독가능 래치(CPU-manipulable and readable latch)로서, 제 6A 도를 참조하여 상세히 설명될 것이다. 요약하면, 마이크로제어기(U2)를 하나의 모드에 설정한 채 스위치(21)를 누르면 시스템(10)은 오프 상태가 되고, 이 마이크로제어기(U2)를 다른 모드로 설정한 채 스위치(21)를 누르면 시스템(10)은 중지 상태(154)로 된다. 컴퓨터 시스템(10)이 정상 동작 상태(150)에 있고 마이크로제어기(U2)에 설정된 중지 인에이블 플래그가 클리어된 상태인 동안 전력 버튼(21)을 누르면, 컴퓨터 시스템(10)은 참조 번호(158)에서 도시된 바와 같이 오프 상태(156)로 진입한다. 컴퓨터 시스템(10)이 오프 상태(156)일 때 전력 버튼(21)을 누르면, 참조 번호(160)에 의해 도시된 바와 같이 컴퓨터 시스템은 정상 동작 상태(150)로 진입한다. 또한, 시스템은 이하 상세히 설명되는 여러가지 외부 이벤트에 의해서도 오프 상태(156)로부터 정상 동작 상태(150)로 진입할 수 있다.The stop enable flag is a CPU-manipulable and readable latch in the microcontroller U2, which will be described in detail with reference to FIG. 6A. In summary, when the switch 21 is pressed with the microcontroller U2 set to one mode, the system 10 is turned off, and the switch 21 is set with the microcontroller U2 set to another mode. When pressed, system 10 enters a suspended state 154. When the computer button 10 is in the normal operating state 150 and the power button 21 is pressed while the stop enable flag set in the microcontroller U2 is cleared, the computer system 10 is referred to by reference numeral 158. Enter the off state 156 as shown. Pressing the power button 21 when the computer system 10 is in the off state 156 causes the computer system to enter a normal operating state 150, as shown by reference numeral 160. The system can also enter the normal operating state 150 from the off state 156 by various external events described in detail below.

컴퓨터 시스템(10)이 정상 동작 상태(150)에 있으면, 컴퓨터(10)는 하나의 이벤트에 의해 대기 상태(150)로 진입할 수 있다. 참조 번호(162)에 도시된 바와같이, 비활동 대기 타이머가 종료되면, 컴퓨터 시스템(10)은 대기 상태(152)로 변할 것이다. 이와 달리, 시스템이 사용자가 이 시스템을 강제적으로 즉시 대기 상태로 배치할 수 있도록 대화 상자(dialog box), 스위치, 기타 입력 장치등의 수단을 제공할 수도 있다. 참조 번호(164)에 도시된 바과 같이, 컴퓨터 시스템(10)이 대기 상태(152)에 있는 동안, 사용자가 전력 버튼(21)을 누르는 것을 포함하여 전술한 종류의 어떤 시스템 혹은 사용자 활동이 있으면, 컴퓨터 시스템(10)은 대기상태를 벗어나 정상 동작 상태로 재진입한다.If the computer system 10 is in the normal operating state 150, the computer 10 may enter the standby state 150 by one event. As shown at 162, when the inactivity wait timer expires, computer system 10 will change to standby state 152. Alternatively, the system may provide means such as dialog boxes, switches, other input devices, etc., to allow the user to force the system into immediate standby. As shown by reference numeral 164, if there is any system or user activity of the type described above, including the user pressing the power button 21 while the computer system 10 is in the standby state 152, Computer system 10 exits from the standby state and reenters the normal operating state.

전력 버튼(21)을 누르면, 시스템은 대기 상태(152)로부터 정상 동작 상태(150)로 진입한다. 전술한 바와 같이, 대기 상태에서는, 모니터(11)가 블랭크 상태로 되고 전력/피드백 LED(23)는 마이크로제어기(U2)내의 플래그가 어떻게 구성되었는가에 따라 온(on)되거나 깜박인다. 시스템을 사용하고자 이 시스템에 접근중인 사용자는 모니터(11)가 꺼져 있음을 인지하고, 이 시스템이 중지 상태(154)이거나 오프 상태(156)에 있다고 생각하여, 전력 버튼(21)을 누름으로써 이 시스템을정상 동작 상태(150)로 진입시키려 시도할 수도 있다. 전력 버튼(21)을 누른 결과시스템이 중지 상태(154) 혹은 오프 상태(156)로 진입했다면, 사용자는 컴퓨터를 턴오프시키거나 중지시킨 것이 되버리며, 이는 자신의 본래 의도와는 다른 것이다. 따라서, 대기 상태(152)에서 전력 버튼(21)을 누르면, 시스템은 대기 상태(152)로부터 정상 동작 상태(150)로 변한다. CPU(40)는 유휴 상태라도 스위치가 눌러졌음을 곧 알 수 있다. 하드웨어 인터럽트는 CPU(40)를 초당 대략 20회 정도 유휴 상태로부터 벗어나도록 하고, 그 후, 다음 APM 획득 이벤트 동안, 마이크로제어기(U2)가 조치되어 스위치(21)가 눌려졌는지 여부를 판정한다.When the power button 21 is pressed, the system enters the normal operating state 150 from the standby state 152. As described above, in the standby state, the monitor 11 is in a blank state and the power / feedback LED 23 is on or flashes depending on how the flag in the microcontroller U2 is configured. A user who is accessing the system to use the system recognizes that the monitor 11 is off, thinks that the system is in the stopped state 154 or the off state 156, and presses the power button 21 to do so. An attempt may be made to enter the system into a normal operating state 150. If the system has entered the suspend state 154 or the off state 156 as a result of pressing the power button 21, the user will turn off or halt the computer, which is not his original intention. Thus, when the power button 21 is pressed in the standby state 152, the system changes from the standby state 152 to the normal operating state 150. The CPU 40 will soon know that the switch was pressed even in the idle state. The hardware interrupt causes the CPU 40 to escape from the idle state approximately 20 times per second, and then during the next APM acquisition event, the microcontroller U2 is acted on to determine whether the switch 21 has been pressed.

컴퓨터(10)가 정상 동작 상태(150)에 있다면 두 가지 이벤트가 컴퓨터를 중지 상태(154)로 진입시킬 수 있다. 첫째, 참조 번호(166)에 도시된 바와 같이, 비활동 중지 타이머가 종료되면, 컴퓨터 시스템(10)은 중지 상태(154)로 변할 것이다. 두 번째, 참조 번호(166)에 도시된 바와 같이, 마이크로제어기(U2)에 기록된 중지 인에이블 플래그가 SET인 동안 전력 버튼(21)을 누르면 컴퓨터 시스템(10)을 즉시 중지 상태(154)로 진입시킬 수 있다. 이와 달리, APM 드라이버는 추가로 중지 요구를 설정 전력 상태 : 중지(Set Power State : Suspend) 커맨드를 통해 발생할 수도 있는데, 이는 APM BIOS 드라이버로 하여금 중지 루틴을 호출토록 한다. 중지상태에 있는 동안 사용자가 전력 버튼(21)을 누르면, 참조 번호(168)에 도시된 바와 같이, 컴퓨터는 정상 동작 상태(150)로 변한다.If the computer 10 is in the normal operating state 150, two events may cause the computer to enter the suspended state 154. First, as shown at 166, when the inactivity suspend timer expires, computer system 10 will change to suspend state 154. Second, as shown by reference numeral 166, pressing the power button 21 while the suspend enable flag recorded in the microcontroller U2 is SET causes the computer system 10 to immediately enter the suspend state 154. Can enter. Alternatively, the APM driver may additionally issue a suspend request via the Set Power State (Suspend) command, which causes the APM BIOS driver to invoke the suspend routine. When the user presses the power button 21 while in the suspended state, the computer changes to the normal operating state 150, as shown at 168.

또한, 시스템(10)을 중지 상태(154)에서 정상 동작 상태(150)로 변경[참조번호(168)]시키거나, 오프 상태(156)에서 정상 동작 상태(15o)로 변경[참조 번호(160)]시키기 위해 여러가지 외부 이벤트를 사용할 수 있다. 예를 들면, 제 6A 도의 회로의 마이크로제어기(U2)내의 전화링 검출 회로(telephone ring detect circuit)는 부착된 전화선이 울릴 때 시스템(10)을 오프 상태(156)이거나 중지 상태(154)로부터 정상 동작 상태(150)로 진입시키도록 구성될 수 있다. 이러한 특징은 팩스 데이타(telefax data) 혹은 디지탈 데이타(digital data)를 수신하는 시스템에 유용하다. 시스템은 전화링에 응답하여 정상 동작 상태로 진입하여, 입력 팩스 전송을 수신하고, 화일을 업로드 또는 다운로드하고, 시스템의 원격 액세스를 허용하는 등의 사전설정된 기능을 수행하며, 비활동 중지 타이머의 종료에 응답하여 중지 모드로 재진입함으로써, 시스템이 정상 동작 상태인 동안만 전력을 소비한다.Also, the system 10 is changed from the stopped state 154 to the normal operating state 150 (reference number 168), or from the off state 156 to the normal operating state 15o (reference number 160). You can use various external events to do this. For example, a telephone ring detect circuit in the microcontroller U2 of the circuit of FIG. 6A may turn off the system 10 when the attached telephone line rings and from normal to stop state 154. And may enter the operational state 150. This feature is useful for systems that receive fax data or digital data. The system enters normal operation in response to a telephone ring, performs preset functions such as receiving incoming fax transmissions, uploading or downloading files, allowing remote access of the system, and terminating an inactivity timer. By re-entering the suspend mode in response, it consumes power only while the system is in a normal operating state.

마찬가지로 마이크로제어기(U2)는 기상 대기 분 알람 카운터(miuutes to make alarm counter)를 구현하며, 이 카운터에 의해 알람형 이벤트가 시스템(10)을 중지 상태(154) 또는 오프 상태(156)로부터 정상 동작 상태(150)로 진입시킬 수 있다. 이러한 시스템은 전화 이용료가 저렴한 소정 시간에 팩스 또는 디지탈 데이타를 전송하고, 시스템 하드 드라이드(31)를 테이프 백업 시스템(tape backup system)으로 백업하는 것과 같은 시스템 유지 기능을 수행하는데 유용하다.후자의 경우에 있어서, 기상 대기 분은 스케쥴러가 테이프 백입 프로그램을 실행시키기에 앞서 정해진 시간에 시스템을 턴온시키도록 설정된다. 이와 달리, APM BIOS 스케쥴러가 테이프 백업 프로그램의 실행을 위해 설정될 수도 있다.The microcontroller U2 likewise implements a mitotes to make alarm counter, by which an alarm event causes the system 10 to operate normally from the stopped state 154 or the off state 156. State 150 may be entered. Such a system is useful for transmitting a fax or digital data at a predetermined time at a low phone charge, and performing a system maintenance function such as backing up the system hard drive 31 to a tape backup system. For example, the wake up time is set to cause the scheduler to turn on the system at a predetermined time prior to executing the tape backfill program. Alternatively, the APM BIOS scheduler may be configured for execution of the tape backup program.

마지막으로, 참조 번호(170)에 도시된 바와 같이, 컴퓨터 시스템(10)이 대기상태(152)에 있을 때 비활동 중지 타이머가 종료되면, 컴퓨터 시스템(10)은 중지상태(154)로 변한다. 컴퓨터 시스템(10)은 중지 상태(154)에서 대기 상태(152)로 다시 변할 수 없고, 참조 번호(168)를 참조하여 설명한 바와 같이, 단지 정상 동작상태(150)로만 전이할 수 있다.Finally, as shown at 170, if the inactivity suspend timer expires when the computer system 10 is in the standby state 152, the computer system 10 changes to the suspended state 154. The computer system 10 may not change back from the suspended state 154 to the standby state 152 and may only transition to the normal operating state 150, as described with reference to reference numeral 168.

명백하게, 컴퓨터 시스템(10)은 상태를 즉시 변경할 수는 없다. 네 가지 상태중 어느 하나로부터의 전이에서, 필요한 시스템 변경을 행하려면 소정 주기의 시간이 필요하다. 각 전이 주기에 대한 상세한 설명은 제 6 내지 15 도를 참조하여 상세히 기술될 것이다.Clearly, computer system 10 may not change state immediately. In transitions from any of the four states, a certain period of time is required to make the necessary system changes. Details of each transition period will be described in detail with reference to FIGS. 6 to 15.

(시스템 하드웨어)(System hardware)

CPU(40)상에서 실행되는 코드를 상세히 설명하기에 앞서, 먼저 상기한 네 가지 상태를 성취하기 위해 필요한 하드웨어에 대해 논의하는 것이 도움이 된다.Before describing in detail the code executed on the CPU 40, it is helpful to first discuss the hardware required to achieve the four states described above.

제 5 도에는 전원(17)의 블럭도가 도시되어 있다. 전원(17)은 제어 장치(174) 및 주/조절 장치(172)의 두 가지 장치를 가진다. 전원(17)은 전형적인 벽면 아웃렛으로부터 115 VAC를 수신하는 라인-인(Line-in), 전원(17)의 조절 활동을 제어하는 ON등의 다수의 입력을 가진다. 전원(17)은 AC 라인-아웃,±5 VDC,±12 VDC, AUX5,GND, 그리고 POWERGOOD등의 다수의 출력을 가진다. AC 라인-아웃은 전형적으로 비디오 디스플레이 터미날(11)의(도시되지 않은) 전력 입력으로 전달되는 115VAC(unregulated 115 VAC)이다. 제어 장치(174)는 ON 입력을 수신하고, POWERGOOD 출력을 생성한다. 주/조절 장치(172)는 라인-인 입력으로부터의 115VAC를±5,±12 VDC로 선택적으로 조절한다. 주/조절 장치(172)는, 제어 장치(174)에 의해 인터페이스되어, 전력을 ON 의 값에 따라±5 VDC 및±12 VDC로 조절한다. 바람직한 실시예에서, 제어 장치(174)는 ON 신호를 발생하는 회로에 예를 들어 적절한 광절연체(optoisolator)와 같은 절연을 제공하여야 한다.5 shows a block diagram of the power source 17. The power source 17 has two devices, the control device 174 and the main / regulator 172. Power source 17 has a number of inputs, such as Line-in receiving 115 VAC from a typical wall outlet, ON to control the regulating activity of power source 17, and the like. The power source 17 has a number of outputs such as AC line-out, ± 5 VDC, ± 12 VDC, AUX5, GND, and POWERGOOD. AC line-out is typically 115 VAC (unregulated 115 VAC) delivered to the power input (not shown) of video display terminal 11. Control device 174 receives an ON input and generates a POWERGOOD output. The main / regulator 172 selectively regulates 115 VAC from the line-in input to ± 5, ± 12 VDC. The main / regulator 172 is interfaced by the controller 174 to regulate power to ± 5 VDC and ± 12 VDC depending on the value of ON. In a preferred embodiment, the control device 174 must provide insulation, such as a suitable optosolator, for the circuit which generates the ON signal.

라인-인 입력과 AC 타인-아웃,±5 VDC,±12 VDC, GND, 그리고 POWERGOOD은 본 기술 분야에서 잘 알려져 있다. 전원(17)이 오프, 즉 라인-인으로부터 조절 전압을 제공하지 않을 때, POWERGOOD 신호는 논리적으로 0(ZERO)이다.Line-in input and AC tin-out, ± 5 VDC, ± 12 VDC, GND, and POWERGOOD are well known in the art. When the power supply 17 is off, i.e., does not provide a regulating voltage from line-in, the POWERGOOD signal is logically zero (ZERO).

전원(17)이 온일때, 전원(17)은 115 VAC 라인-인으로부터±5 VDC,±12 VDC의 조절전압을 생성한다. 이들 네 가지 조절 전압 및 이와 연관된 GND는 본 기술 분야에서 통상적으로 알려진 시스템 전력이다. 조절 전압 레벨이 허용가능한 공차(acceptable tolerances)내에 있다면, POWERGOOD 신호는 논리 1(ONE)로 변할 것이다. +5 혹은 +12 전압선이 공차를 벗어나민, POWERGOOD 신호는 논리 0으로 되어,이러한 조건을 표시한다.When power source 17 is on, power source 17 generates a regulated voltage of ± 5 VDC, ± 12 VDC from the 115 VAC line-in. These four regulating voltages and their associated GNDs are system power commonly known in the art. If the regulated voltage level is within acceptable tolerances, the POWERGOOD signal will change to logic 1 (ONE). If the +5 or +12 voltage line is out of tolerance, the POWERGOOD signal will be logic 0, indicating this condition.

AUX5 출력은 보조 +5 VDC(auxiliary±5 VDC)를 플래이너에 제공한다. 전원(17)이 공칭 115 VDC(nominal 115 VAC)를 제공하는 전형적인 벽면 아웃렛에 플러그(plug)되어 있을 때, 주/조절 장치(172)는 전원의 온 혹은 오프에 상관없이 조절 +5 VDC를 AUX5에 제공한다. 따라서, 전원이 AC 전력을 수신하는 동안, 전원(17)은 항상 공칭 +5 VDC를 AUX5에 제공한다. 주/조절 장치(172)는 전원(17)의 온 동안에만 +5 출력을 통해 조절 +5 VDC를 생성한다는 점에서 AUX5 출력과는 상이하다. 또한, 바람직한 실시예에서, 주/조절 장치(172)는 +5 출력을 통해 +5 VDC에서 수 암페어(amp)의 전류를 제공하는 반면, AUX5 출력을 통해서는 +5VDC에서 1암페어 미만의 전류를 제공한다는 점에서 다르다.The AUX5 output provides an auxiliary +5 VDC (auxiliary ± 5 VDC) to the planer. When the power source 17 is plugged into a typical wall outlet providing a nominal 115 VAC, the main / regulator 172 will adjust the regulation +5 VDC regardless of whether the power source is on or off. To provide. Thus, while the power source receives AC power, power source 17 always provides the nominal +5 VDC to AUX5. The main / regulator 172 differs from the AUX5 output in that it generates an regulated +5 VDC through the +5 output only during the power up 17. Also, in the preferred embodiment, the main / regulator 172 provides a few amps of current at +5 VDC through the +5 output, while a current of less than 1 amp at +5 VDC through the AUX5 output. It is different in that it is provided.

전형적인 종래의 전원은 고-전류 쌍투 스위치(high-amperage double-throwswitch)를 사용하여 전원의 조절부(regulation section)로/로부터 라인-인 입력을접속하고 분리한다. 본 발명의 전원(17)은 고-전류 쌍투 스위치를 사용하지 않는다. 대신에, 스위치(21)는 ON 신호를 발생하는 회로를 제어한다.A typical conventional power supply uses a high-amperage double-throwswitch to connect and disconnect line-in inputs to and from the regulation section of the power supply. The power supply 17 of the present invention does not use a high-current twin throw switch. Instead, the switch 21 controls the circuit that generates the ON signal.

바람직한 실시예에서, 스위치(21)는 순시 단극(momentary single-pole), 단투 푸쉬버튼 스위치(single throw pushbutton)이다. 그러나, 당업자라면 제 6A 도의 회로를 단극 쌍투 스위치와 같은 다른 유형의 스위치를 사용하도록 변경할 수 있을 것이다. AC라인-인은 항상 벽면 아웃렛으로부터 주/조절 장치(172)에 접속된다. ON이 논리1(대략 AUX5, 공칭 +5 VDC)일 때, 주/조절 장치(172)는 115 VAC 라인-인을±5 혹은±12 출력을 통해±5 VDC 혹은±12 VDC로 조절하지 않는다. 주/조절 장치(172)는 AUX5 출력에서 저-전류량 공칭 +5 VDC를 제공한다. 반면에, ON이 논리0(대략 GND)일 때, 주/조절 장치(172)는 네 개의±5 및±12 출력을 통해 115 VAC라인-인을±5 VDC 및±12 VDC로 각각 조절한다. 따라서, ON이 1 일 때, 전원(17)은 오프''이고, ON이 0 일 때, 전원(17)은 온이다.In a preferred embodiment, the switch 21 is a momentary single-pole, single throw pushbutton. However, one of ordinary skill in the art would be able to modify the circuit of FIG. 6A to use other types of switches, such as single pole double throw switches. The AC line-in is always connected to the main / regulator 172 from the wall outlet. When ON is a logic 1 (approximately AUX5, nominally +5 VDC), primary / regulation unit 172 is 115 VAC line - no control over the the ± 5 or ± 12 outputs to ± 5 VDC or ± 12 VDC. Main / regulator 172 provides a low-current nominal +5 VDC at the AUX5 output. On the other hand, when ON is logic 0 (approximately GND), the main / regulator 172 regulates 115 VAC line-in to ± 5 VDC and ± 12 VDC, respectively, via four ± 5 and ± 12 outputs. Thus, when ON is 1, the power supply 17 is off '' and when ON is 0, the power supply 17 is on.

구체적인 경우, 전술한 전원(17)처럼 AUX5 출력과 ON 입력을 구비한 전원은 보다 통상적인 전원 공급자들로부터 얻어질 수가 있다.In specific cases, a power source with an AUX5 output and an ON input, such as the power source 17 described above, can be obtained from more conventional power suppliers.

이제 제 6A 도를 참조하면, 제 6A 도는 본 발명의 컴퓨터 시스템(10)의 전자회로를 개략적으로 도시한 도면이다. 제 6A 도의 회로는 스위치(21), 전력/피드백LED(23), 전원(17), 비디오 디스플레이 터미날(11) 및 CPU(40)상에서 실행되는 코드간의 인터페이스를 담당한다.Referring now to FIG. 6A, FIG. 6A is a schematic diagram of an electronic circuit of the computer system 10 of the present invention. The circuit of FIG. 6A is responsible for the interface between the switch 21, the power / feedback LED 23, the power supply 17, the video display terminal 11 and the code executed on the CPU 40. FIG.

회로는 네 개의 집적 회로(integrated circuits), 즉 제 1 사전프로그램된 PAL16Lb(U1), 사전프로그램된 83C750 마이크로제어기(U2), 당해 기술 분야에 잘 알려진 74LS05(U3) 및 제 2 프로그램된 PAL16L8(U4)(도시되지 않음)와 제 6A 도에 도시된 바와 같이 회로 통신하는 각종 이산 구성 요소(discrete components)를 포함한다. 일반적으로, PAL(U1) 및(U4)(도시되지 않음)는 제 3A 도 및 제 3B 도의 플레이너 입/출력 버스(90)와 마이크로제어기(U2)간을 인터페이스시키며, 마이크로제어기(U2)는 제 6A 도의 잔여 회로(remaining circuitry)에 인터페이스되고, 스위치(21), 전원(17), 비디오 디스플레이 터미날(11) 및 프로그램가능 클럭 신디싸이저(programmable clock synthesizer)(906)에 인터페이스된다. 클럭 신디싸이저(906)는 당업자에게 잘 알려진 다수의 클럭 신디싸이저중 하나이다. 이러한 부품 중의 하나는 크론텔(Chrontel)사에 의해 제조된 CH9055A로서 수많은 구입처로부터 쉽게 구입할 수 있다.The circuit comprises four integrated circuits, namely a first preprogrammed PAL16Lb (U1), a preprogrammed 83C750 microcontroller U2, a 74LS05 (U3) and a second programmed PAL16L8 (U4) well known in the art. (Not shown) and various discrete components in circuit communication as shown in FIG. 6A. In general, PAL U1 and U4 (not shown) interface between planar input / output bus 90 and microcontroller U2 of FIGS. 3A and 3B, and microcontroller U2 It is interfaced to the remaining circuitry of FIG. 6A and to the switch 21, the power supply 17, the video display terminal 11 and the programmable clock synthesizer 906. Clock synthesizer 906 is one of a number of clock synthesizers well known to those skilled in the art. One such component is the CH9055A manufactured by Chrontel, which is readily available from a number of sources.

제 6A 도의 회로는 스위치(21),16㎒ 크리스탈(Y1),18개의 저항(R1-R18),8개의 커패시터(C1-C8), 바람직한 실시예에 있어서 논리 스위치(1ogical switch)로 작용하는데 적합한 표준 저전류 NMOS FET인 세 개의 N-형 MOSFET(Q1-Q3),6개의 1N4148 소신호 다이오드(CR1-CR6)를 더 포함하며, 이들 모두는 제 6A 도에 도시된 바와 같이 구성되고 접속된다. 저항(R1-R18)은 1/4와트 저항으로 제 6A 도에 도시된 값(±5%)을 갖는다. 커패시티(C1)는 10μF(±10%) 전해 커패시터(electrolytic capacitor)이다. 커패시티(C2 C3)는 22pF(±10%) 탄탈늄 커패시터(tantalum capacitors)이다. 커패시터(C4-C8)는 0.1μF(±10%) 세라믹 커패시터(ceramic capacitor)이다. 마지막으로, 커패시터(C9)는 1000pF(±10%) 세라믹 커패시터이다.The circuit of FIG. 6A is suitable for acting as a switch 21, 16 MHz crystal Y1, 18 resistors R1-R18, 8 capacitors C1-C8, in a preferred embodiment as a logic switch. It further comprises three N-type MOSFETs Q1-Q3, six 1N4148 small signal diodes CR1-CR6, which are standard low current NMOS FETs, all of which are configured and connected as shown in FIG. 6A. Resistor R1-R18 is a 1/4 watt resistor and has the value (± 5%) shown in Figure 6A. The capacitance C1 is a 10 μF (± 10%) electrolytic capacitor. Capacities (C2 C3) are 22pF (± 10%) tantalum capacitors. Capacitors C4-C8 are 0.1 μF (± 10%) ceramic capacitors. Finally, capacitor C9 is a 1000 pF (± 10%) ceramic capacitor.

크리스탈(Y1) 및 커패시터(C2 및 C3)는 본 기술 분야에서 잘 알려진 바와 같이 동작 타이밍을 제어하기 위하여 마이크로제어기(U2)에 의해 사용되는 신호를 발생한다. 다이오드(CR1 및 CR3) 및 저항(R14)은 VBAT 신호로부터 AUX5 신호를 분리시키는 동시에, AUX5 신호가 VBAT 신호를 보층하도록 허용하여 전원(17)이 AUX5 신호를 발생하는 동안에는 배터리(171)가 고갈되지 않도록 한다. AUX5 신호는 다이오드(CR1 및 CR3)를 통해 단계적으로 감소되어 VBAT에 접속된 장치에 적절한 전압을 공급한다. 이와 달리, VBAT 라인이 AUX5 라인으로부터 분리될 수도 있다.Crystal Y1 and capacitors C2 and C3 generate signals used by microcontroller U2 to control the timing of operation as is well known in the art. Diodes CR1 and CR3 and resistor R14 separate the AUX5 signal from the VBAT signal, while allowing the AUX5 signal to complement the VBAT signal so that the battery 171 is not depleted while the power source 17 generates the AUX5 signal. Do not The AUX5 signal is stepped down through the diodes CR1 and CR3 to supply the appropriate voltage to the device connected to VBAT. Alternatively, the VBAT line may be separated from the AUX5 line.

제 2 PAL(U4)(도시되지 않음)은 SA(1)에서 SA(15)까지의 어드레스 라인 및 AEN(어드레스 인에이블) 라인에 접속된다. SA(1)에서 SA(15)까지와 AEN은 제 3A 도 및 제 3B 도에 도시된 플레이너 입/출력 버스(90)의 일부이다. 제 2 PAL(U4)는 단순히 어드레스 디코더로서 기능하도록 프로그램되고, 사전설정된 어드레스가 어드레스 라인 SA(1)에서 SA(15)까지의 어드레스 라인상에 나타나고, AEN 라인이 활동일 때, 활동 로우 신호(active low signal) DCD#를 제공한다. 본 특정 실시예에 있어서, 제 2 PAL(U4)는 어드레스 0ECH 및 0EDH에서 두 개의 연속적인 8 비트 입/출력 포트를 디코드하도록 프로그램된다. 이와 달리, DCD# 신호는 본 기술 분야에 잘알려진 바와 같이 메모리 제어기(memory controller) 또는 ISA 제어기 칩세트(ISA controller chipset)와 같은 다른 전자 장치에 의해 발생될 수도 있다.The second PAL U4 (not shown) is connected to the address line from the SA 1 to the SA 15 and the AEN (address enable) line. SA 1 to SA 15 and AEN are part of the planar input / output bus 90 shown in FIGS. 3A and 3B. The second PAL U4 is simply programmed to function as an address decoder, and a preset address appears on the address line from address line SA 1 to SA 15, and when the AEN line is active, the active low signal ( active low signal) Provides DCD #. In this particular embodiment, the second PAL U4 is programmed to decode two consecutive 8-bit input / output ports at addresses 0ECH and 0EDH. Alternatively, the DCD # signal may be generated by another electronic device, such as a memory controller or ISA controller chipset, as is well known in the art.

제 1 PAL(U1)은(i) 커맨드 및 데이타가 CPU(40)와 마이크로제어기(U2) 사이에서 전달되도록 하기 위한 CPU와 마이크로제어기(U2)간의 판독/기록 인터페이스기능,(ii)마우스 인터럽트 INT12 및 키보드 인터럽트 INT1의 논리 OR 기능 및 (iii)CPU(40)로부터의 커맨드에 응답하여 마이크로제어기(U2)를 리세트하는 리세트출력 기능과 같은 여러 기능을 제공하도록 프로그램된다.The first PAL U1 has (i) a read / write interface function between the CPU and the microcontroller U2 for command and data to be transferred between the CPU 40 and the microcontroller U2, and (ii) the mouse interrupt INT12. And a logical OR function of the keyboard interrupt INT1, and (iii) a reset output function for resetting the microcontroller U2 in response to a command from the CPU 40.

제 1 PAL(U1)은 두 개의 연속적인 입/출력 포트틀 사용하며, 이들 포트는 본명세서에서 전력 관리 포트로도 지칭된다. 제 1 PAL(U1)은 플레이너 입/출력 버스(90)로부터의 8개의 입력,즉 SD(4), SD(0), SA(0), IOW#, IOR#, RST-DRV, IRQ1및 IRQ12을 갖는다. 제 1 PAL(U1)은 당업자에게 잘 알려진 바와 같이 메모리 제어기(46)에 의해 발생되는 핀(7)(I6)에서의 활동 하이 신호 RST-DRV 입력에 의해 알려진 초기 상태로 리세트된다.The first PAL U1 uses two consecutive input / output ports, which are also referred to herein as power management ports. The first PAL U1 has eight inputs from the planar input / output bus 90, i.e. SD (4), SD (0), SA (0), IOW #, IOR #, RST-DRV, IRQ1 and Has IRQ12. The first PAL U1 is reset to its known initial state by the active high signal RST-DRV input at pin 7 (I6) generated by the memory controller 46 as is well known to those skilled in the art.

마이크로제어기(U2)의 리세트 라인(RST751)은 핀(9)에 존재한다. 리세트 서브회로(reset subcircuit)(920)는 RST751 신호의 발생을 담당하고, 제 6A 도에 도시된 바와 같이 네 개의 저항(R4, R16, R17 및 R18), 두 개의 커패시너(C1 및 C8)및 두 개의 MOSFET(Q2 및 Q3)을 포함하며, 제 1 PAL(U1) 및 마이크로제어기(U2)와 회로 통신한다. 리세트 서브회로(920)는 제 1 PAL(U1)로부터의 리세트 출력 신호(RESET)와 마이크로제어기(U2)의 리세트 입력 신호(RST751)를 인터페이스하여RESET 라인이 논리 1이면, RST751 라인은 논리 1로 되어, 마이크로제어기(U2)를 리세트시킨다.The reset line RST751 of the microcontroller U2 is present at the pin 9. A reset subcircuit 920 is responsible for the generation of the RST751 signal, four resistors R4, R16, R17 and R18 and two capacitors C1 and C8 as shown in FIG. 6A. And two MOSFETs Q2 and Q3, and are in circuit communication with the first PAL U1 and the microcontroller U2. The reset subcircuit 920 interfaces the reset output signal RESET from the first PAL U1 and the reset input signal RST751 of the microcontroller U2 so that if the RESET line is logic 1, the RST751 line In logic 1, the microcontroller U2 is reset.

제 1 PAL(U1)은 CPU(40)가 논리 1을 제어 포트(OEDH)의 비트 0에 기록하는 것에 응답하여 마이크로제어기(U2)를 리세트시킨다. 논리 1을 제어 포트(OEDH)의 비트0으로 기록하면 제 1 PAL(U1)에 의해 RES디 라인이 논리 1로 되고, 이에 따라RST751 라인이 논리 1로 되어, 마이크로제어기(U2)가 리세트된다. CPU(40)는 논리0을 제어 포트(OEDH)의 비트 0으로 기록함으로써 리세트 요구를 클리어한다.The first PAL U1 resets the microcontroller U2 in response to the CPU 40 writing logic 1 to bit 0 of the control port OEDH. Writing logic 1 to bit 0 of control port OEDH causes the RES D line to be logic 1 by the first PAL (U1), thereby causing the RST751 line to be logic 1, thereby resetting the microcontroller U2. . The CPU 40 clears the reset request by writing logic 0 to bit 0 of the control port OEDH.

또한, 리세트 서브회로는 제 6C 도에 도시된 바와 같이, 전원(17)에 대한 AC소스의 브라운 아웃(brownout) 또는 블랙아웃(blackout)이 발생하는 동안 AUX5전압이 떨어진 후에 발생하는 바와 같이, AUX5 신호의 전압이 주어진 양만큼 상승될 때마다, RST751 라인을 논리 1로 만들어 마이크로제어기(U2)를 리세트한다.In addition, the reset subcircuit is generated after the AUX5 voltage drops while the brownout or blackout of the AC source to the power source 17 occurs, as shown in FIG. 6C. Each time the voltage of the AUX5 signal rises by a given amount, reset the microcontroller U2 by making the RST751 line logic 1.

83C750의 제조자인 필립스(Philips)사는 리세트 문제를 방지하기 위해 간단한 RCPhilips, manufacturer of the 83C750, uses a simple RC to prevent reset problems.

회로의 사용을 제안하지만, 간단한 RC 회로는 83C750이 전원 브라운 아웃(power supply brownout)동안 래치업(latch up)을 발생시킬 수가 있다. 제 6A 도의 특정구성에 있어서는, AUX5 전압이 R4, R16 및 C1에 의해 결정되는 시정수보다 큰 시간주기내에 임계량(threshold amount)만큼 상승될 때, RST751 라인은 R17 및 C8에 의해 결정되는 시간 주기동안 논리 1로 된다(이에 따라 마이크로제어기(U2)가 리세트된다). 제 6A 도에 도시된 바람직한 실시예에 있어서, 임계값은 대략 1.5VDC이다.Although the use of the circuit is suggested, a simple RC circuit can cause the 83C750 to latch up during a power supply brownout. In the specific configuration of FIG. 6A, when the AUX5 voltage rises by a threshold amount within a time period greater than the time constant determined by R4, R16, and C1, the RST751 line goes through the time period determined by R17 and C8. It becomes logic 1 (the microcontroller U2 is reset by this). In the preferred embodiment shown in Figure 6A, the threshold is approximately 1.5 VDC.

이제 제 6C 도를 참조하면, 리세트 회로(920)의 파형이, AC 전력이 전원(17)에 인가됨에 따라 AUX5가 상승하는 시간 주기와 브라운 아웃이 발생하는 동안의 시간 주기에 대해 도시되어 있다. t0전에, 전원은 AUX5를 발생하지 않으며, VBAT는 대략 3.3V이므로, Q3는 도통되고 RST751 라인은 접지된다. t0에서, 전원은 AUX5를 발생하기 시작하고, 전압은 AUX5에 영향을 끼치는 전원내 부하 및 커패시티에 기초한 속도로 상승을 시작한다. C1과 R4 사이의 노트인 노드 1은 AUX5와 용량적으로 결합되고, 따라서 노드 1은 AUX5의 상승에 따라서 상승된다.Referring now to FIG. 6C, the waveform of the reset circuit 920 is shown for the time period during which AUX5 rises and the time period during which brown out occurs as AC power is applied to the power source 17. . Before t0, the supply does not generate AUX5, and VBAT is approximately 3.3V, so Q3 is conductive and the RST751 line is grounded. At t0, the power supply starts generating AUX5, and the voltage starts rising at a rate based on the load and capacity in the power supply affecting AUX5. Node 1, a note between C1 and R4, is capacitively coupled with AUX5, so node 1 is raised as the AUX5 rises.

t1에서, 노드 1은 대략 1.5V에 도달하며, 이것은 Q2를 트리거하기에 충분한 전압이어서, Q2는 도통되며 노드 2는 접지된다. t2에서, 노트 2가 2.5V를 통과함에 따라서, Q3는 도통을 중단하고, RST751 라인은 R18을 경유해 AUX5의 레벨까지 점프하고, 대략 5V까지 AUX5와 더불어 상승한다. RST751 라인이 대략 3V로 될 때, 마이크로제어기(U2)는 리세트된다.At t1, node 1 reaches approximately 1.5V, which is enough voltage to trigger Q2, so that Q2 is conductive and node 2 is grounded. At t2, as Note 2 passes 2.5V, Q3 stops conducting, and the RST751 line jumps to RUX5's level via R18 and rises with AUX5 to approximately 5V. When the RST751 line becomes approximately 3V, the microcontroller U2 is reset.

t3에서, AUX5가 상승을 멈춤에 따라서 노드 1도 상승을 중단하고 C1 및 R4에의해 결정된 속도로 접지[제 1 PAL(U1)의 RESET 라인이 로우]까지 방전하기 시작한 다. t4에서, 노트 1이 대략 1.5V를 통과할 때, Q2는 도통을 중단하고, 노트 2는 C8 및 R17에 의해 결정된 속도로 충전된다. t5에서, 노트 2가 대략 2.5V를 통과할 때, Q3는 도통되고, RST751 라인은 접지된다. 따라서, 파워온 시점 리세트(reset on power-on)이 완료되고, 시스템은 통상적으로 AUX5는 5V, VBAT는 3.3V 노드 1은 접지, 노드 2는 VBAT인 상태에 놓인다.At t3, as AUX5 stops rising, node 1 also stops rising and begins to discharge to ground (the RESET line of the first PAL (U1) is low) at a rate determined by C1 and R4. At t4, when note 1 passes approximately 1.5V, Q2 stops conduction and note 2 charges at the rate determined by C8 and R17. At t5, when note 2 passes approximately 2.5V, Q3 is conductive and the RST751 line is grounded. Thus, a reset on power-on is completed and the system is typically in a state where AUX5 is 5V, VBAT is 3.3V, Node 1 is ground, and Node 2 is VBAT.

t6에서, AUX5 라인에서 브라운 아웃이 시작되고, AUX5는 방전한다. AUX5에 용량적으로 결합된 노드 1은 AUX5를 추종하려 시도하지만, 추종하지 못하게 되는데, 그 이유는 제 1 PAL(U1)내 다이오드가 노드 1이 -0.5V보다 훨씬 낮아지는 것을 방지하기 때문이다. t7에서, AUX5는 최저 포인트이고, 다시 상승을 시작한다. 노드1 역시 AUX5를 추종하여 상승된다. t8에서, 노드 1은 대략 1.5V에 도달하고, 이는 Q2를 트리거하기에 충분한 전압이어서, Q2는 도통되며 노트 2는 접지로 된다. t9에서, 노트 2가 2.5V를 통과할 때, Q3는 도통을 중단하고, RST751 라인은 R18을 경유해 AUX5의 레벨까지 점프하고, 대략 5V까지 AUX5와 더불어 상승한다. RST751 라인이 대락 3V로 될 때, 마이크로제어기(U2)는 리세트된다.At t6, brown out is started at the AUX5 line, and AUX5 discharges. Node 1 capacitively coupled to AUX5 attempts to follow AUX5, but fails to follow, because the diode in the first PAL (U1) prevents node 1 from getting much lower than -0.5V. At t7, AUX5 is the lowest point and starts rising again. Node 1 is also raised following AUX5. At t8, node 1 reaches approximately 1.5V, which is enough voltage to trigger Q2, so that Q2 is conductive and note 2 is grounded. At t9, when Note 2 passes 2.5V, Q3 stops conduction, and the RST751 line jumps to RUX5 level via R18 and rises with AUX5 to approximately 5V. When the RST751 line becomes approximately 3V, the microcontroller U2 is reset.

t10에서, AUX5는 상승을 멈추며, 따라서 노트 1 역시 상승을 멈추고 C1 및 C4에 의해 결정된 속도로 접지[제 1 PAL(U1)의 RESET 라인이 로우]까지 방전하기시작한다.t11에서, 노드 1이 대략 1.5V를 통과할 때, Q2는 도통을 중단하고, 노드2는 C8 및 R17에 의해 결정된 속도로 충전된다. t12에서, 노드 2가 대략 2.5V를 통과할 때, Q8는 도통되고, RST751 라인은 접지된다. 따라서, 브라운 아웃에 기인한 리세트 사이클(brownout-induced reset cycle)이 완료된다. 이러한 특정 브라운 아웃동안 노드 1은 3V를 초과하여 상승되지 않고, 따라서 노트 1이 RST751 핀에 접속된다면, 노드 1은 마이크로제어기를 리세트시키기 않을 것이다. 그러나, AUX5의 전압은 4V 미만으로 낮아지고, 이러한 전압은 마이크로제어기(U2)를 정의되지 않은 상태(undefined)로 진입시키기에 충분할 것이다.At t10, AUX5 stops rising, so note 1 also stops rising and begins to discharge to ground [RESET line of first PAL (U1) is low] at the rate determined by C1 and C4. When approximately 1.5V passes, Q2 stops conducting, and node 2 charges at the rate determined by C8 and R17. At t12, when node 2 passes approximately 2.5V, Q8 is conductive and the RST751 line is grounded. Thus, the brownout-induced reset cycle due to brown out is completed. During this particular brown out node 1 will not rise above 3V, so if note 1 is connected to the RST751 pin, node 1 will not reset the microcontroller. However, the voltage of AUX5 is lowered below 4V, and this voltage will be sufficient to enter the microcontroller U2 into an undefined state.

리세트를 트리거하기 위한 임계치는 기준값으로 제한되며, 따라서 임계 전압을 상승 또는 저하시키려면, 기준값(본 경우에 있어서 VBAT)은 각각 상승 또는 하강되어야 한다. 본 리세트 회로는 마이크로제어기(U2)에 대한 증대된 리세트 보호의 이점을 제공하는 동시에, 매우 저렴하고 마이크로제어기(U2)를 리세트하지 않는 동안에는 사실상 전력을 소비하지 않는다.The threshold for triggering the reset is limited to a reference value, and therefore, to raise or lower the threshold voltage, the reference value (VBAT in this case) must be raised or lowered respectively. This reset circuit provides the advantage of increased reset protection for the microcontroller U2, while being very inexpensive and virtually consuming no power while not resetting the microcontroller U2.

제 6A 도를 다시 참조하면, 마이크로제어기(U2)는 제 1 PAL(U1)을 경유해 CPU(40)에 인터페이스되고 다수의 입력, 출력 및 내부적으로 제어가능한 기능을 보유한다.Referring back to FIG. 6A, microcontroller U2 is interfaced to CPU 40 via first PAL U1 and has a number of input, output, and internally controllable functions.

SWITCH 신호는 핀(8)(P0.0)에서 입력되고, 푸쉬버튼(21)의 현재 상태를 나타낸다. 푸쉬버튼(21)은 통상 오픈되어 있다. 푸쉬버튼(21)이 오픈되어 있는 동안,SWITCH 라인은 저항(R1)을 퉁해 논리 0(접지)으로 된다. 푸쉬버튼(21)이 눌러졌을때, 폐쇄 이벤트(closure event)를 야기하여, SWITCH 라인은 저항(R13)을 통해 논리 1이 된다. 커패시티(C6)는 스위치 페쇄 이벤트(switch closure event)를 디바운스(debounce)하도록 작용한다. 스위치(21)의 페쇄 이벤트의 임의의 후속 디바운싱은, 당업자에게 잘 알려진 바와 같이, 스위치를 사전설정된 횟수 예를 들면 50회 판독하고, 스위치 라인이 이러한 모든 판독에 대해 동일함을 확인함으로써, 마이크로제어기(U2)내에서 수행된다.The SWITCH signal is input at pin 8 (P0.0) and represents the current state of pushbutton 21. The push button 21 is normally open. While the pushbutton 21 is open, the SWITCH line goes to logic 0 (ground) across the resistor R1. When pushbutton 21 is pressed, it causes a closure event, which causes the SWITCH line to be logic 1 via resistor R13. Capacity C6 acts to debounce switch closure events. Any subsequent debounce of the closing event of the switch 21 may be performed by reading the switch a predetermined number of times, for example 50 times, and ascertaining that the switch line is the same for all such readings, as is well known to those skilled in the art. It is performed in the controller U2.

전원(17)의 조절은 마이크로제어기(U2)에 의해 직접적으로 제어될 수 있다.The regulation of the power source 17 can be controlled directly by the microcontroller U2.

제 6A 도에 도시된 바와 같이,ON 신호는 핀(5)(P3.0)에서 출력되고, 저항(R6)을 경유해 SWITCH내 신호와 와이어드 OR(wired-OR)되어 전원의 ON# 신호를 제어한다.As shown in FIG. 6A, the ON signal is output at pin 5 (P3.0) and wired OR with the signal in SWITCH via resistor R6 to provide the ON # signal of the power supply. To control.

ON 신호가 논리 1이면, MOSFET Q1은 도통되어 ON# 라인(JP2의 핀2)을 논리 이접지)으로 이끌며, 이에 의해 전원(17)으로 하여금 ±5VDC 및 ±12VDC 라인을 통해 시스템에 조절 전력을 제공하도록 한다. 다른 한편,ON 라인이 논리 0이던, MOSFET Q1은 도통되지 않으며, 따라서 ON# 라인(JP2의 핀2)은 저항(R7)에 의해 논리 1로 이끌어져, 전원(17)으로 하여금 ±5VDC 및 ±12VDC 라인을 통해 시스템에 조절 전력을 제공하는 것을 중단하도록 한다.If the ON signal is logic 1, MOSFET Q1 will conduct and lead to the ON # line (pin 2 of JP2), thereby causing the power supply 17 to regulate power to the system via the ± 5 VDC and ± 12 VDC lines. Provide it. On the other hand, MOSFET Q1, where the ON line is logic 0, is not conducting, so the ON # line (pin 2 of JP2) is led to logic 1 by resistor R7, causing power supply 17 to have ± 5 VDC and ± Stop providing regulated power to the system through the 12VDC line.

ON 라인의 상태는 스위치(21)의 페쇄 이벤트에 응답하여, 또한 CPU(40)에 의해 기록될 수 있는 마이크로제어기(U2)내의 기록가능 레지스터 비트(writable register bit)를 통하여 CPU(40)에 응답하여 제어된다. 마이크로제어기(U2)는 AUX5에 의해 전력을 공급받으며, 따라서 마이크로 제어기(U2)는 항상 전력을 공급받아 코드를 실행하고 시스템을 제어한다. 전원(17)이 ±5VDC 및 ±12VDC 라인을 통해 시스템에 조절 전력을 제공하지 않고,(i)스위치(21)가 눌러지거나 (ii)외부 이벤트중 하나의 이벤트가 발생한다면, 마이크로제어기(U2)는 ON 신호를 인가(assert)하고, 이러한 인가에 의해 전원(17)으로 하여금 ±5VDC 및 ±12VDC 라인을 통해 시스템에 조절 전력을 제공하도록 한다. 마이크로제어기는 스위치(21)가 해제된 후 계속해서 ON 신호를 인가한다.The state of the ON line is in response to the closing event of the switch 21 and also in response to the CPU 40 via a writable register bit in the microcontroller U2 which can be written by the CPU 40. Is controlled. Microcontroller U2 is powered by AUX5, so microcontroller U2 is always powered to execute code and control the system. If the power source 17 does not provide regulating power to the system via the ± 5VDC and ± 12VDC lines, and (i) the switch 21 is pressed or (ii) one of the external events occurs, then the microcontroller (U2) Asserts an ON signal, which causes power supply 17 to provide regulated power to the system via the ± 5 VDC and ± 12 VDC lines. The microcontroller continues to apply an ON signal after the switch 21 is released.

백업 시스템(backup system)으로서, 전원(17)은 또한 푸쉬버튼(21)을 통해 사용자의 직접적인 제어하에서 턴온될 수 있다. 이러한 옵션은 전형적으로, 전력버튼(21)의 누름에 응답하여 파워업되지 않은 시스템에 의해 입증되는 바와 같이 마이크로제어기(U2)가 예상대로 기능하지 않는 경우에만 사용될 것이다. 제 6A 도에 도시된 바와 같이, 스위치(21)는 또한 다이오드(CR2), MOSFET Q1, 저항(R7) 및 커넥티(JP2)를 통해 전원(17)의 ON# 라인을 제어한다. 통상적으로, 푸쉬버튼(21)은 오픈되어 있고, MOSFET Q1은 도통이 아니며, 따라서 ON# 라인(JP2의 핀2)은 레지스터(R7)에 의해 논리 1(AUX5)로 이끌리고, 전원(17)은 ±5VDC 및 ±12VDC 라인을 통해 조절 전력을 제공하지 않는다. 푸쉬버튼(21)이 사용자에 의해 눌러진 상태로 유지되면, SWITCH 라인은 논리 1로 이끌리고, MOSFET Q1은 도통되어 ON# 라인(JP2의 핀2)을 논리 0(접지)으로 이끌며, 이에 의해 전원(17)이 ±5VDC 및 ±12VDC 라인을 통해 조절 전력을 제공하기 시작한다. 버튼(21)이 계속 눌러진 상태에서, 시스템에 전력이 공급된 후, BIOS는 CPU(40)로 하여금 마이크로제어기(U2)가 아직 기능하는 지를 테스트한다. 테스트 결과 마이크로제어기(U2)가 기능하지 않는 것으로 판단되면, CPU(40)는 마이크로제어기(U2)를 리세트하고, 이 마이크로제어기(U2)는 리세트된 후 스위치(21)가 계속 눌러지고 있음을 검출한다. 결과적으로, 버튼(21)이 계속눌러진 상태에서, 마이크로제어기는 ON 신호를 인가하고, 사용자는 이제 마이크로 제어기가 전원(17)을 제어하고 있음을 인식하여 결국 스위치(21)를 해제할 수 있다. 이러한 백업 옵션을 사용하기 위해, 사용자는 로고(logo)가 나타난 후 대략 2초 정도의 시간 주기동안 버튼(21)을 눌러야만 한다.As a backup system, the power supply 17 can also be turned on under the direct control of the user via the pushbutton 21. This option will typically only be used if the microcontroller U2 does not function as expected, as evidenced by a system that is not powered up in response to the press of the power button 21. As shown in FIG. 6A, the switch 21 also controls the ON # line of the power supply 17 through the diode CR2, the MOSFET Q1, the resistor R7 and the connection JP2. Typically, pushbutton 21 is open, MOSFET Q1 is not conductive, so ON # line (pin 2 of JP2) is led to logic 1 (AUX5) by resistor R7, and power supply 17 Does not provide regulated power through the ± 5VDC and ± 12VDC lines. When pushbutton 21 remains pressed by the user, SWITCH line is led to logic 1, MOSFET Q1 conducts to lead ON # line (pin 2 of JP2) to logic 0 (ground), thereby Power source 17 begins to provide regulated power over the ± 5VDC and ± 12VDC lines. With the button 21 held down, after the system is powered up, the BIOS causes the CPU 40 to test whether the microcontroller U2 is still functioning. If it is determined that the microcontroller U2 is not functioning, the CPU 40 resets the microcontroller U2, and after the microcontroller U2 is reset, the switch 21 is kept pressed. Is detected. As a result, with the button 21 kept pressed, the microcontroller applies the ON signal, and the user can now recognize that the microcontroller is controlling the power source 17 and eventually release the switch 21. . In order to use this backup option, the user must press the button 21 for a period of approximately 2 seconds after the logo appears.

마이크로제어기(U2)는 (i)스위치(21)가 눌러지거나 (ii)CPU(40)가 시스템을 턴오프하도록 마이크로제어기에 지시하는 것에 응답해서만 시스템을 턴오프한다.The microcontroller U2 turns off the system only in response to (i) the switch 21 being pressed or (ii) the CPU 40 instructing the microcontroller to turn off the system.

마이크로제어기에게는 이들 이벤트가 동일한데, 그 이유는 마이크로제어기는 스위치 누름이 스위치(21)의 폐쇄 이벤트에 의해서도 혹은 CPU(40)에 의해서도 야기될 수 있도록(즉, 하드웨어 버튼 누름/해제(hardware button press/release)가 소프트웨어 버튼 누름/해제와 사실상 동일하게 다루어지도록) 구성되어 있기 때문이다.These events are the same for the microcontroller, because the microcontroller allows the switch press to be triggered either by the closing event of the switch 21 or by the CPU 40 (ie, hardware button press / release). / release) is actually treated the same as software button press / release.

마이크로제어기(U2)는 단지 마이크로제어기(U2)내의 중지 인에이블 플래그가 클리어되어 있는 경우, CPU에 의한 커맨드없이 시스템을 중지시킨다. 이러한 경우에 있어서, 시스템에 전력이 공급되고 중지 인에이블 플래그가 클리어되어 있으면, 스위치(21)의 폐쇄 이벤트에 응답하여, 마이크로제어기(U2)는 ON 신호를 클리어시켜, 전원(17)이 ±5VDC 및 ±12VDC 라인을 통해 조절 전력을 제공하는 것을 중지시킨다.ON 신호는 스위치(21)가 해제된 후 클리어된 채로 남아있는다.The microcontroller U2 only stops the system without a command by the CPU when the stop enable flag in the microcontroller U2 is cleared. In this case, if the system is powered up and the suspend enable flag is cleared, in response to the close event of the switch 21, the microcontroller U2 clears the ON signal, so that the power supply 17 is ± 5 VDC. And stop providing regulating power through the ± 12VDC line. The ON signal remains clear after the switch 21 is released.

시스템 상태가 하드 디스크 드라이브에 성공적으로 보관된(중단된) 후 명령이 내려질 때, 마이크로제어기(U2)는 CPU에 의한 커맨드에 응답하여 시스템을 또한 턴오프시킨다. 이러한 커맨드에 응답하여, 마이크로제어기(U2)는 ON 신호를 클리어시키며, 이에 의해 전원(17)이 ±5VDC 및 ±12VDC 라인을 통해 조절 전력을 제공하는 것을 중지시킨다.When a command is issued after the system state has been successfully stored (hanged) on the hard disk drive, the microcontroller U2 also turns off the system in response to the command by the CPU. In response to this command, microcontroller U2 clears the ON signal, thereby stopping the power supply 17 from providing regulating power over the ± 5 VDC and ± 12 VDC lines.

또한 마이크로제어기(U2)는 또한 소정의 외부 이벤트가 야기되면, 이를 검출하고, 시스템에 영향을 끼칠 수 있다. EXT_RING 신호가 핀(7)(P0.1)에서 입력되어,마이크로제어기(U2)가 전력이 공급된 외장 모뎀(902)으로부터의 링(ring)을 검출할 수 있도록 한다. 당업자에게 알려진 바와 같이, 전형적인 외장 모뎀은 링 신호가 팁(tip)과 링 전화선 양단에서 검출될 때 잘 알려진 RS-232C 포맷에서 논리 1로 토글되는 링 신호를 공급한다. 이 신호는 다이오드(CR6)를 경유해 마이크로제어기(U2)에 인터페이스되고, 저항(R10 및 R11)에 의해 분할되어, 최종적으로 EXT_RING라인을 경유해 마이크로제어기(U2)로 입력된다. 토글 신호(toggling signal)는 매 25초마다 샘플링되고, 마이크로제어기(U2)에 의해 분석되어, 이러한 입력이 두 개의 연속적인 샘플동안 논리 1일 때에는 언제나 링이 존재하는 것으로 판단한다.In addition, the microcontroller U2 can also detect when an external event occurs and affect the system. The EXT_RING signal is input at pin 7 (P0.1), allowing microcontroller U2 to detect a ring from powered external modem 902. As is known to those skilled in the art, a typical external modem supplies a ring signal that toggles to logic 1 in the well-known RS-232C format when a ring signal is detected across the tip and ring telephone line. This signal is interfaced to the microcontroller U2 via the diode CR6, divided by the resistors R10 and R11, and finally input to the microcontroller U2 via the EXT_RING line. The toggle signal is sampled every 25 seconds and analyzed by microcontroller U2 to determine that a ring is present whenever this input is logical 1 for two consecutive samples.

이러한 조건이 충족되는 것에 응답하여, 마이크로제어기(U2)는 ON 신호를 인가하고, 이에 의해 전원(17)이 ±5VDC 및 ±12VDC 라인을 통해 조절 전력을 제공하도록 한다. 인입 전화 호출을 검출하는 데 사용될 EXT_LRING 신호를 위해, 외부 전력 공급형 모뎀(902)이 제공되어야 한다.In response to this condition being met, microcontroller U2 applies an ON signal, thereby causing power supply 17 to provide regulating power over the ± 5 VDC and ± 12 VDC lines. For the EXT_LRING signal to be used to detect incoming telephone calls, an external powered modem 902 must be provided.

이와 달리, RS-232 사양에 따른 이진(binary) 신호를 제공하는(또는EXT_RING신호를 인가하도록 충분히 근사한) 다른 장치가 EXT_RING 라인에 인터페이스될 수도 있고, 시스템 예를 들면 모션 센서(motionu sensors), 버글러 알람 센서(burglar alarm sensors), 음성 기동형 센서(voice activatecl sensors), 광센서(light sensors), 적외선 센서(infrared light sensors), 클래퍼(claDDer)형 센서 등의 시스템을 기상시키는 데 사용된다.Alternatively, another device that provides a binary signal in accordance with the RS-232 specification (or sufficiently close to apply the EXT_RING signal) may be interfaced to the EXT_RING line and may be used in systems such as motion sensors and buzzers. It is used to wake up systems such as burglar alarm sensors, voice activatecl sensors, light sensors, infrared light sensors and claDDer type sensors.

제 6A 도 및 제 6B 도에 도시된 바와 같이, 본 실시예는 또한 링 검출 회로(ring-detect circuit)에 기초한 광절연체(optoisolator)(OPTO1)를 포함하는 내장모뎀(900)으로부터 전화링 신호를 검출하기 위한 수단을 포함한다. 예를 들어 휴렛-팩카드사 등에 의해 제조된 많은 적절한 광절연체를 수많은 구입처로부터 쉽게 구입할 수 있다. 내장 모뎀(900)은 시스템 플레이너(20)의 회로내에 설계되거나 확장슬롯(expansion slots)(78)중 하나의 슬롯에 배치될 수 있다. 후자의 경우에 있어서, 모뎀(900)은 베르그(Berg) 또는 유사한 커넥터를 제공하도록 수정되어 광절연체(OPT01)로부터의 신호가 제 6A 도의 전력 관리 회로의 회로에 전기적으로 접속되도록 허용해야만 한다. 많은 모뎀 제조사는 그들의 내장 모뎀을 수정하여 본 발명의 회로와 더불어 사용하기에 적합한 커넥터를 제공한다. EXT_WAKEUP# 신호는 마이크로제어기(U2)의 핀(4)(P0.2)에서 입력되며, 링 검출 광절연체(OPTO1)로부터의 신호를 내장 모뎀(900)으로 입력시키는 데 사용된다. 이 신호는 저항(R9 및 R5), 다이오드(CR6) 및 커패시터(C9)를 경유해 인터페이스되고, EXT WAKEUP# 라인을 경유해 마이크로제어기(U2)내에 최종적으로 입력된다.As shown in FIGS. 6A and 6B, the present embodiment also provides a ringing signal from the built-in modem 900 that includes an optosolator OPTO1 based on a ring-detection circuit. Means for detecting. Many suitable optical insulators, for example manufactured by Hewlett-Packard, Inc., are readily available from a number of sources. The internal modem 900 may be designed within the circuitry of the system planer 20 or placed in one of the expansion slots 78. In the latter case, the modem 900 should be modified to provide a Berg or similar connector to allow the signal from the opto-insulator OPT01 to be electrically connected to the circuit of the power management circuit of FIG. 6A. Many modem manufacturers modify their internal modems to provide connectors suitable for use with the circuitry of the present invention. The EXT_WAKEUP # signal is input at pin 4 (P0.2) of the microcontroller U2 and is used to input the signal from the ring detection optical insulator OPTO1 to the internal modem 900. This signal is interfaced via resistors R9 and R5, diode CR6 and capacitor C9 and finally input into microcontroller U2 via EXT WAKEUP # line.

내장 모뎀(900)의 임계 및 보호부(threshold and protection portion)(905)는 표준 팁 및 링 전화선에 접속되고, 모뎀 설계 분야의 당업자에게 알려진 바과같이,(i)뇌방전(lightening) 및 모뎀(900)에 손상을 끼칠 수 있는 다른 전기적 이벤트(electrical events)로부터 보호하고,(ii)링 임계전압(ring threshold voltage)을 설정한다.The threshold and protection portion 905 of the internal modem 900 is connected to standard tip and ring telephone lines and, as is known to those skilled in the art of modem design, includes: (i) lightning and modem ( Protect from other electrical events that may damage 900, and (ii) set a ring threshold voltage.

광절연체(OPTO1)로부터의 토글 신호는 마이크로제어기(U2)에 의해 검출 및 분석되고, EXT_WAKEUP상의 신호의 세 개의 연속적인 신호 주기가 15.1Hz와 69.1Hz 사이의 주파수를 가질 때에는 언제나 링이 존재하는 것으로 판단한다. EXT_RING을 따라 링 신호를 제공하기 위해 전력이 공급되어야 하는 EXT_RING 신호 회로와는 달리, 내장 모뎀(900)은 EXT_WAKEUP# 라인을 따라 적절한 신호를 공급하기 위해 광절연체(OPT01)에 전력이 공급될 필요가 없으며, EXT_WAKEUP# 라인은 통상 R5에 의해AUX5까지 이끌어진다.The toggle signal from the optical insulator OPTO1 is detected and analyzed by the microcontroller U2, and a ring is present whenever three successive signal periods of the signal on the EXT_WAKEUP have a frequency between 15.1 Hz and 69.1 Hz. To judge. Unlike the EXT_RING signal circuit, which must be powered to provide a ring signal along the EXT_RING, the internal modem 900 needs to be powered by the opto-isolator OPT01 to supply the appropriate signal along the EXT_WAKEUP # line. None, the EXT_WAKEUP # line is normally driven by R5 to AUX5.

CPU(40)가 시스템 관리 인터럽트(system management interrupt : SMI)를 허용하면(CPU(40)는 본 발명의 다수의 이점을 취하는데 유용한 시스템을 위해 SMI를 포함할 필요는 없다), 마이크로제어기(U2)는 CPU의 시스템 관리 인터럽트(SMI)를 경유해 CPU(40)를 인터럽트할 수 있다. SMI_OUT# 신호는 마이크로제어기(U2)의 핀 (3)(P3.2)에서 출력되고, 마이크로제어기(U2)는 이를 통하여 CPU(40)를 즉시 인터럽트할 수 있으므로 운영 체제가 이 인터럽트를 유효로 하거나 혹은 허용할 때를 기다리지 않아도 된다. SMI_OUT# 라인의 상태는 CPU(40)에 의해 기록될 수 있으며 마이크로제어기(U2)내에 위치한다. 기록가능 레지스터 비트(writable registerbit)에 의해 제어되어 CPU(40)에 의해 기록될 수 있다. 또한, 마이크로제어기(U2)는 SMI_OUT# 신호를 인가할 수 있으며, 이에 의해 (i) ACTIVITY# 라인상에서 검출되는 활동에 응답하거나 (ii) 마이크로제어기(U2)가 전원(17)으로 하여금 시스템에 조절 전력을 제공하는 것을 중지시키기 전에 CPU(40)를 인터럽트할 수 있다. 이들 이벤트의 어느 한 쪽 또는 양 쪽 모두는 CPU로부터 마이크로제어기(U2)로의 명령에 의해 인에이블 및 디스에이블될 수 있다.If the CPU 40 allows a system management interrupt (SMI) (the CPU 40 need not include SMI for a system useful to take advantage of the many benefits of the present invention), the microcontroller (U2). ) Can interrupt the CPU 40 via the system management interrupt (SMI) of the CPU. The SMI_OUT # signal is output from pin (3) (P3.2) of microcontroller U2, and microcontroller U2 can interrupt the CPU 40 immediately through this, so that the operating system enables this interrupt or Or you don't have to wait when you allow it. The state of the SMI_OUT # line can be recorded by the CPU 40 and located in the microcontroller U2. It can be controlled by a writable register bit and written by the CPU 40. Microcontroller U2 may also apply an SMI_OUT # signal, whereby (i) in response to activity detected on the ACTIVITY # line, or (ii) microcontroller U2 causes power source 17 to adjust the system. The CPU 40 may be interrupted before stopping providing power. Either or both of these events can be enabled and disabled by instructions from the CPU to the microcontroller U2.

각각의 SMI, CPU(40)내 마이크로코드(microcode)는 CPU의 상태를 메모리로/로부터의 특정 CPU 상태 보관 영역에 보관한다. 그 후, CPU(40)는 SMI 인터럽트 처리기(interrup handler)를 실행하고, 이 처리기는 아래의 기능을 수행한다. CPU의 상태를 회복하기 위해, SMI 인터럽트 처리기는 RSM(재개) 인스트럭션을 발생하여, CPU(40)가 특정 보관 영역으로부터 자신의 상태를 회복하도록 한다.Each SMI, microcode in CPU 40, stores the state of the CPU in a specific CPU state storage area to and from memory. The CPU 40 then executes an SMI interrupt handler, which performs the following functions. To recover the state of the CPU, the SMI interrupt handler issues an RSM (resume) instruction, causing the CPU 40 to recover its state from a particular storage area.

CPU(40)가 마이크로제어기(U2)로 하여금 CPU의 SMI를 경유해 CPU(40)를 인터럽트하도록 하기에 앞서, CPU(40)는 SMI의 이유를 표시하는 CMOS NVRAM내의 변수에기록한다. CMOS NVRAM내의 이 값은 디폴트로 OOH값을 가지며, 이것은, 마이크로제어기(U2)가 전원(17)으로 하여금 조절 전력을 제공하는 것을 중지시키도록 하기에 앞서 인터럽트가 발생하는 바와 같이, 마이크로제어기(U2)가 CPU(40)를 비동기적으로 인터럽트하고 있다는 것을 CPU(40)에 표시한다. 각각의 SMI후에, CPU(40)는 CMOS NVRAM내의 그 변수를 OOH로 설정한다. 이러한 값에 응답하여, CPU(40)는 시스템이 마이크로제어기(U2)에 의해 긴박하게 파워 다운(power down)되고 있다는 가정하에서 소정의 태스크(tasks)를 수행한다. CPU(40)는 마이크로제어기(U2)내의 파워 다운 연장 타이머(power down extend timer)를 주기적으로 재시작함으로써 마이크로제어기(U2)가 시스템을 파워 다운시키기에 앞서 시간 주기를 연장할 수 있다.Before the CPU 40 causes the microcontroller U2 to interrupt the CPU 40 via the SMI of the CPU, the CPU 40 writes to a variable in the CMOS NVRAM indicating the reason for the SMI. This value in the CMOS NVRAM has an OOH value by default, which is interrupted before the microcontroller U2 causes the power supply 17 to stop providing regulated power. Indicates that the CPU 40 is asynchronously interrupting the CPU 40. After each SMI, the CPU 40 sets its variable in the CMOS NVRAM to OOH. In response to this value, the CPU 40 performs certain tasks under the assumption that the system is urgently powered down by the microcontroller U2. The CPU 40 may extend the time period before the microcontroller U2 powers down the system by periodically restarting the power down extend timer in the microcontroller U2.

시스템이 파워 다운되기 전의 이러한 시간 주기동안, CPU(40)는 다수의 태스크를 수행할 수 있다. 예를 들면, 사용자가 기상 알람에 영향을 끼치는 하나 이상의 파라미터를 변경시켰을 수도 있기 때문에, CPU는 기상 대기 분값을 재계산하여 마이크로제어기(U2)에 기록한다. 또한, CPU는 컴퓨터 시스템이 최종적으로 파워온 된 이래로 동작한 시간 주기와 같은, 차수에 하드 드라이브(31)에 기록될 소정의 정보를 CMOS NVRAM에 기록한다.During this time period before the system is powered down, the CPU 40 can perform a number of tasks. For example, since the user may have changed one or more parameters affecting the weather alarm, the CPU recalculates the weather wait minute value and writes it to the microcontroller U2. In addition, the CPU writes predetermined information to be written to the hard drive 31 in the CMOS NVRAM in the order, such as the time period in which the computer system has been operating since it was last powered on.

CPU(40)에 의해 기록되는 다른 값은 CPU(40)가 참조 번호(254)에서 중지 루틴(Suspend Routine)으로 점프될 것이라는 것을 나타내는 O1H, CPU(40)가 참조 번호(454)에서 재개 루틴(Resume Routine)으로 점프될 것이라는 것을 나타내는 O2H 및 CPU(40)가 세그먼트 EOOOH 데이타 구조내 특정 CPU 상태 보관 영역(special CPU state save area)을 셋업시킬 것이라는 것을 표시하는 OFFH를 포함한다.Another value recorded by the CPU 40 is O1H, which indicates that the CPU 40 will jump from the reference number 254 to the Suspend Routine, and the CPU 40 returns the resume routine (at the reference number 454). O2H indicating jump to Resume Routine and OFFH indicating CPU 40 will set up a special CPU state save area in the segment EOOOH data structure.

바람직한 실시예에 있어서, 마이크로제어기는 디스플레이(11)가 블랭크 상태로 되는 것에 관한 제어를 제공한다. DISP_BLANK 신호는 마이크로제어기(U2)의 핀 (1)(P3.4)을 경유해 출력되고, 디스플레이(11)의 블랭킹을 직접적으로 제어한다. 두개의 인버터(U3D 및 U3E)가 DISP_BLANK 신호와 ESYNC# 및 BLANK# 라인을 인터페이스시킨다. ESYNC# 및 BLANK# 라인이 논리 1인 상태에서, 비디오 제어기(56)는 비디오 신호를 발생한다. BLANK# 및 ESYNC#가 논리 0(접지)이면, 비디오 제어기(56)는 비디오 신호 발생을 중지시킨다. DISP_BLANK 라인의 상태는 CPU(40)에 의해 기록되며 마이크로제어기(U2)내에 위치한 기록가능 레지스터 비트에 의해 제어된다. CPU(40)는 시스템이 대기 상태(152)로 진입할 때 마이크로제어기(U2)에 지시하여 디스플레이를 블랭크상태로 되도록 한다. 또한, DISP_BLANK 라인이 순차적으로 SET상태로 되며, 그 후 스위치(21)의 폐쇄 이벤트에 응답하여 클리어된다. 유사하게, 본 경우에 있어서 INT1 및 INT12인 활동 인터럽트중 임의의 한 인터럽트에서의 활동은 마이크로제어기로 하여금 DISP_BLANK 라인을 클리어(CLEAR)하도록 하여, 비디오 제어기(56)가 비디오 신호를 발생하도록 허용한다.In a preferred embodiment, the microcontroller provides control regarding the display 11 being blank. The DISP_BLANK signal is output via pin 1 (P3.4) of microcontroller U2, and directly controls the blanking of display 11. Two inverters (U3D and U3E) interface the DISP_BLANK signal with the ESYNC # and BLANK # lines. With the ESYNC # and BLANK # lines at logic 1, video controller 56 generates a video signal. If BLANK # and ESYNC # are logical 0 (ground), video controller 56 stops generating video signals. The state of the DISP_BLANK line is written by the CPU 40 and controlled by a writeable register bit located in the microcontroller U2. The CPU 40 instructs the microcontroller U2 to enter the display in a blank state when the system enters the standby state 152. In addition, the DISP_BLANK line is sequentially set, and then cleared in response to the closing event of the switch 21. Similarly, activity in any one of the activity interrupts INT1 and INT12 in this case causes the microcontroller to clear (CLEAR) the DISP_BLANK line, allowing the video controller 56 to generate a video signal.

또한, 마이크로제어기(U2)는 클럭 신디싸이저(906)에 의해 발생되는 클럭 신호의 주파수를 제어한다. 세 개의 베르그형 점퍼(Berg-type jumpers)(도시되지 않음)(JP0, JP1 및 JP2)는 다음과 같이 클럭 신디싸이저를 제어한다. 즉, JP0=0, JP1=1 및 JP2=0 이면, 클럭 신디싸이저는 33MHz 클럭 신호를 발생하고, JP0=1, JP1=1 및 JP2=0이면, 클럭 신디싸이저는 25MHz 클럭 신호를 발생하며, JP0=0, JP1=1 및 JP2=1이면, 클럭 신디싸이저는 8MHz 클럭 신호를 발생한다. 클럭 신디싸이저(906)는 JP0, JP1 및 JP2에 대응하는 세 개의 클럭 라인(CLK0, CLK1 및 CLK2)에 의해 또한 제어된다. 제 6A 도에 도시된 바와 같이, 이들 클럭 라인(CLK0, CLK1 및 CLK2)은 마이크로제어기(U2)의 핀(2)(P3.3)에서 출력되는 CLK_SLOW# 신호를 통하여 마이크로제어기(U2)에 의해 제어된다. 도시된 바와 같이, CLK_SLOW# 신호는 오픈 콜렉터 출력단(open co1lector outputs)(U3A, U3B 및 U3C)에 의해 이중 반전(doubly iuvert)된다. 또한, 저항(R15 및 R8)은 U3A의 오픈 콜렉터 출력 및 클럭 신디싸이저(906)로의 CLK0 입력을 각각 논리 1로 이끄는 데 사용되는 풀업 저항(pullup resistors)이다.The microcontroller U2 also controls the frequency of the clock signal generated by the clock synthesizer 906. Three Berg-type jumpers (not shown) (JP0, JP1 and JP2) control the clock synthesizer as follows. That is, if JP0 = 0, JP1 = 1 and JP2 = 0, the clock synthesizer generates a 33 MHz clock signal, and if JP0 = 1, JP1 = 1 and JP2 = 0, the clock synthesizer generates a 25 MHz clock signal, If JP0 = 0, JP1 = 1 and JP2 = 1, the clock synthesizer generates an 8 MHz clock signal. Clock synthesizer 906 is also controlled by three clock lines CLK0, CLK1 and CLK2 corresponding to JP0, JP1 and JP2. As shown in FIG. 6A, these clock lines CLK0, CLK1 and CLK2 are controlled by the microcontroller U2 via the CLK_SLOW # signal output from pin 2 (P3.3) of the microcontroller U2. Controlled. As shown, the CLK_SLOW # signal is doubly iuverted by open collector outputs U3A, U3B and U3C. In addition, resistors R15 and R8 are pullup resistors used to drive the CLK0 input to U3A's open collector output and clock synthesizer 906 to logic 1, respectively.

세 개의 클럭 신호(CLK0, CLK1 및 CLK2) 및 세 개의 점퍼(JPO, JP1 및 JP2)는 다음과 같이 클럭 신디싸이저를 제어한다. 즉, CLK_SLOW#가 논리 1이면, CLK1 및 CLK2 신호 역시 논리 1이며, 결과적으로, 클럭 신디싸이저(906)는 점퍼(JP1, JP2)에 의해 제어되고, 시스템에 의해 사용하기 위한 보다 높은 25MHz 또는 33MHz 클럭 신호를 발생한다. 다른 한편, 클럭 CLK_SLOW# 신호가 논리 0이면, CLK1 및 CLK2 신호 역시 논리 0으로 되고, 결과적으로, 클럭 신디싸이저(906)는 시스템에 의해 사용하기 위한 보다 낮은 8MHz 신호를 발생하여, 시스템이 전력을 적게 소비하도록 한다. 제 6A 도에 도시된 바와 같이, 베르그형 점퍼는 CLK0 라인으로부터 CLK_SLOW# 라인을 분리시킨다. 점퍼가 제자리에 위치되면, CLKO 라인은 CLK_SLOW# 신호를 추종한다. 다른 한편, 점퍼도 제위치에 있지 않으면, CLKO 라인은 CLK_SLOW# 신호의 상태에 관계없이 저항(R8)에 의해 논리 1로 이끌려진 채로 남아있는다. CLK_SLOW# 라인의 상태는 CPU(40)에 의해 기록되고 마이크로제어기(U2)내에 위치될 수 있는 기록가능 레지스터 비트에 의해 제어된다. 또한, CLK_SLOW# 라인은 ACTIVITY# 라인에서의 활동에 응답하여 마이크로제어기(U2)에 의해 클리어될수 있다. 당업자에게 자명한 바와 같이, 다른 클럭 신디싸이저가 본 발명에 사용될 수 있으며, 사용된 특정 신디싸이저의 특정 사양을 일치시키기 위해 마이크로제어기(U2)과 클럭 신디싸이저간의 상호접속이 변경될 필요가 있을 수도 있다.Three clock signals CLK0, CLK1 and CLK2 and three jumpers JPO, JP1 and JP2 control the clock synthesizer as follows. That is, if CLK_SLOW # is logic 1, the CLK1 and CLK2 signals are also logic 1, and consequently, clock synthesizer 906 is controlled by jumpers JP1 and JP2 and is higher 25 MHz or 33 MHz for use by the system. Generates a clock signal. On the other hand, if the clock CLK_SLOW # signal is logical 0, the CLK1 and CLK2 signals are also logical 0, and as a result, the clock synthesizer 906 generates a lower 8 MHz signal for use by the system, causing the system to lose power. Try to consume less. As shown in FIG. 6A, the berg jumper separates the CLK_SLOW # line from the CLK0 line. When the jumper is in place, the CLKO line follows the CLK_SLOW # signal. On the other hand, if the jumper is not in place, the CLKO line remains drawn to logic 1 by resistor R8 regardless of the state of the CLK_SLOW # signal. The state of the CLK_SLOW # line is controlled by a writeable register bit that can be written by the CPU 40 and located in the microcontroller U2. In addition, the CLK_SLOW # line may be cleared by the microcontroller U2 in response to activity on the ACTIVITY # line. As will be apparent to those skilled in the art, other clock synthesizers may be used in the present invention, and the interconnection between the microcontroller U2 and the clock synthesizer may need to be changed to match the specific specifications of the particular synthesizer used. have.

또한, 마이크로제어기(U2)는 전력/피드백 LED(23)의 조명(illumination)을 직접적으로 제어 한다. LED_CNTRL 신호는 핀(22)(P3.6)에서 출력되고, 마이크로제어기(U2)에 의한 전력/피드백 LED(23)의 직접적인 제어를 허용한다. 저항 (R2 및 R3)및 다이오드(CR4 및 CR5)는 전력/피드백 LED(23)가 논리 0인 LED_CNTRL 라인에 응답하여 AUX5 전력 라인이나 VCC 전력 라인에 의해 구동되는 것을 허용한다. LED_CNTRL 라인이 논리 1이면, 전력/피드백 LED(23)는 조명되지 않는다. 이하 보다 상세히 기술되는 바와 같이, LED-CNTRL 라인의 상태는 스위치(21)의 폐쇄 이벤트에 응답하여, 혹은 기상 알람에 응답하여, 혹은 링 검출 입력에서의 하나 이상의 링에 응답하여 혹은 시스템이 대기 모드로 배치되는 것에 응답하여 마이크로제어기(U2)에 의해 제어된다.In addition, the microcontroller U2 directly controls the illumination of the power / feedback LED 23. The LED CNTRL signal is output at pin 22 (P3.6), allowing direct control of power / feedback LED 23 by microcontroller U2. Resistors R2 and R3 and diodes CR4 and CR5 allow power / feedback LEDs 23 to be driven by AUX5 power lines or VCC power lines in response to LED_CNTRL lines of logic zero. If the LED_CNTRL line is logic 1, the power / feedback LED 23 is not illuminated. As will be described in more detail below, the state of the LED-CNTRL line is in response to the closing event of the switch 21, in response to a weather alarm, or in response to one or more rings at the ring detection input, or the system is in standby mode. Is controlled by the microcontroller U2 in response to being placed into the.

마이크로제어기(U2)는 LED(23)를 단순 전력 LED로서 제어할 수 있다. 이와같이 하여, LED(23)는 시스템을 오프 상태(156)나 중지 상태(154)에서 정상 동작상태(150)로 변경하는 스위치(21)의 폐쇄 이벤트 이후에 조명된다. 마찬가지로, 마이크로제어기(U2)는 시스템을 정상 동작 상태(150)에서 중지 상태(154)나 오프 상태(156)로 변경시키는 스위치(21)의 해제후에 LED(23)를 소등한다.The microcontroller U2 can control the LED 23 as a simple power LED. In this way, the LED 23 illuminates after the closing event of the switch 21 changing the system from the off state 156 or the stop state 154 to the normal operating state 150. Similarly, the microcontroller U2 turns off the LED 23 after the release of the switch 21 which changes the system from the normal operating state 150 to the suspended state 154 or the off state 156.

또한, LED(23)는 마이크로제어기(U2)에 의해 특정 속도, 예를 들어 매초마다 선택적으로 플래쉬되어, 시스템이 대기 상태(152)라는 것을 표시할 수 있다. 또한, LED(23)는 마이크로제어기(U2)에 의해 상이한 속도, 예를 들어 1/2초마다 선택적으로 플래쉬되어, 시스템이 링 또는 알람에 의해 시작되었고, 시스템이 오프 상태나 중지 상태라는 것을 표시할 수 있다. 이와 달리, 중지 상태동안, LED(23)가 마이크로제어기(U2)에 의해 그룹을 지어 선택적으로 플래쉬되어, 시스템이 링, 알람등의 외부 이벤트에 의해 파워업된 횟수 및 비활동 중지 타이머의 종료에 의해 다시 파워 다운된 횟수를 표시할 수도 있다. 이 경우에 있어서, BIOS에는 하나 이상의 기능이 제공되어 OS 및 응용 프로그램이 마이크로제어기(U2)가 LED(23)를 플래쉬할 횟수를 수정할 수 있도록 허용한다. 예를 들면, 시스템이 링에 의해 기상되고, 인입 팩시밀리 전송이 수신되면, 통신 응용 프로그램은 특정 BIOS 기능을 호출하여 플래쉬 휫수에 하나의 플래쉬를 더할 수 있다. 그 후, BIOS는 CPU(40)로 하여금 새로운 플래쉬값을 마이크로제어기(U2)에 기록하도록 한 다음, LED(23)가 지시된 횟수만큼 플래쉬하도록 한다.In addition, the LED 23 may be selectively flashed by the microcontroller U2 at a specific speed, eg every second, to indicate that the system is in standby state 152. In addition, the LED 23 is selectively flashed by the microcontroller U2 at different speeds, eg every 1/2 second, to indicate that the system has been started by a ring or an alarm and the system is in the off or stopped state. can do. Alternatively, during the paused state, the LEDs 23 are selectively flashed in groups by the microcontroller U2 to indicate the number of times the system has been powered up by external events such as rings, alarms, and the end of the inactivity stop timer. It can also display the number of times the power down again. In this case, one or more functions are provided in the BIOS to allow the OS and applications to modify the number of times microcontroller U2 will flash the LEDs 23. For example, if the system wakes up by the ring and an incoming fax transmission is received, the communication application can invoke a specific BIOS function to add one flash to the flash count. Thereafter, the BIOS causes the CPU 40 to write the new flash value to the microcontroller U2, and then the LED 23 to flash the indicated number of times.

POWERGOOD 신호는 마이크로제어기(U2)의 핀(4)(P3.1)에서 입력되고, 마이크로제어기(U2) 및 CPU(40)가 이 신호를 사용하는 것을 허용한다. 특히, 마이크로제어기는 POWERGOOD 신호를 사용하여 피드백을 기초로 한 고장 검출 및 정정 회로 (feedback-based fault detection and correction circuit)를 구현함으로써 전원(17)에 고장이 있는지를 판정하여 고장을 일으킨 상태를 클리어시킨다. 본 명세서의 다른 곳에서 설명된 바와 같이, ON 신호가 어느 시간 주기(예를 들면,3초)동안 인가되었고, POWERGOOD 신호가 전원(17)이 적절한 레벨의 조절 전압을 제공하지 않고 있다는 것을 표시하는 논리 0이라면, 마이크로제어기(U2)는 전원(17)이 예를 들어 과전류 상태로 인해 고장을 일으킨 것으로 상정한다. 결과적으로, 고장을 일으킨 상태를 가능한 클리어시키기 위해, 마이크로제어기(U2)는 어느 시간 주기(예를들면,5초)동안 ON 신호를 인가하는 것을 중단하여 고장이 클리어될 수 있도록 한다. 그 후, 마이크로제어기(U2)는 ON 신호를 재인가하고, POWERGOOD 신호가 전원(17)이 이제 시스템에 조절 전력을 제공하고 있다는 것을 표시하는 논리 1이 될 때까지 기다린다. 이러한 피드백에 기초한 고장 검출 및 정정 회로가 없다면, 전원(17)은 고장을 일으킨 채 남아있을 것이고, 마이크로제어기(U2)는 전원(17)이 조절 전력을 발생하기 시작하도록 계속적으로 ON 신호를 인가할 것이다. 유일한 해결법은 고장을 클리어시키기 위해 전원으로부터 AC 전력을 제거하는 것 외에는 없을 것이다.The POWERGOOD signal is input at pin 4 (P3.1) of microcontroller U2, and allows microcontroller U2 and CPU 40 to use this signal. In particular, the microcontroller uses the POWERGOOD signal to implement a feedback-based fault detection and correction circuit to determine whether there is a fault in the power supply 17 and to clear the faulty state. Let's do it. As described elsewhere herein, the ON signal has been applied for a certain period of time (eg, 3 seconds), and the POWERGOOD signal indicates that the power source 17 is not providing an appropriate level of regulated voltage. If the logic is 0, the microcontroller U2 assumes that the power supply 17 has failed, for example, due to an overcurrent condition. As a result, in order to as far as possible clear the state that caused the failure, the microcontroller U2 stops applying the ON signal for a certain period of time (eg 5 seconds) so that the failure can be cleared. The microcontroller U2 then reapplies the ON signal and waits until the POWERGOOD signal is a logic 1 indicating that the power source 17 is now providing regulating power to the system. Without a fault detection and correction circuit based on this feedback, the power supply 17 will remain faulted and the microcontroller U2 will continue to apply an ON signal to allow the power supply 17 to begin generating regulated power. will be. The only solution would be to remove AC power from the power source to clear the fault.

제 6D 도에는 전원 고장 검출 및 정정 회로의 대안적인 실시예가 도시되어있다. 이 실시예는 네 개의 FET(Q10-Q13), 저항(R20-R23), 커패시터(C20) 및 74HC132를 사용하여 전원(17)이 고장을 일으켰을 때를 검출하고 고장을 클리어한다. Q12는 R22 및 C20에 의해 결정되는 시간 주기동안 ON 신호를 LOW로 이끌며, ON신호가 HIGH일 때, AUX5에는 전력이 공급되고, VCC는 Q11을 트리거하기 위한 임계치 미만이며, 이에 의해 전원내 고장 상태를 클리어한다.6D, an alternative embodiment of a power failure detection and correction circuit is shown. This embodiment uses four FETs Q10-Q13, resistors R20-R23, capacitors C20, and 74HC132 to detect when the power supply 17 has failed and clear the failure. Q12 leads the ON signal to LOW during the time period determined by R22 and C20. When the ON signal is HIGH, power is supplied to AUX5, and VCC is below the threshold to trigger Q11, thereby causing an in-power fault condition. Clear

ACTIVITY# 신호는 마이크로제어기(U2)의 핀(19)(INT1)에서 입력되고, 마이크로제어기(U2)에 의해 사용되어 키보드(12) 및 마우스(13)에서의 활동에 응답한다.The ACTIVITY # signal is input at pin 19 (INT1) of microcontroller U2 and used by microcontroller U2 to respond to activity in keyboard 12 and mouse 13.

IRQ1은 키보드 하드웨어 인터럽트 신호로서, 제 1 PAL(U1)의 핀(8)(17)에서 입력되고, 키보드(12)상의 키를 누르면 IRQ1 신호가 펄스된다. IRQ12는 마우스 하드웨어인터럽트 신호로서, 제 1 PAL(U1)의 핀(11)(19)에서 입력되고, 마우스(13)의 버튼을 누르면 IRQ12 신호가 펄스된다. IRQ1 및 IRQ12 신호는 제 1 PAL(U1)내에서 논리적으로 OR제1고, ACTIVITY# 신호로서 출력된다. ACTIVITY# 신호를 사용해 마이크로제어기(U2)가 키보드(12)나 마우스(13)의 활동을 결코 놓치지 않도록 한다.IRQ1 is a keyboard hardware interrupt signal, which is input at pins 8 and 17 of the first PAL U1, and when the key on the keyboard 12 is pressed, the IRQ1 signal is pulsed. IRQ12 is a mouse hardware interrupt signal, which is input from pins 11 and 19 of the first PAL U1, and when the button of the mouse 13 is pressed, the IRQ12 signal is pulsed. The IRQ1 and IRQ12 signals are logically ORed in the first PAL U1 and are output as ACTIVITY # signals. The ACTIVITY # signal is used to ensure that the microcontroller U2 never misses keyboard 12 or mouse 13 activity.

대기 상태동안, 키보드 혹은 마우스 인터럽트상의 활동은 마이크로제어기로 하여금 비디오 디스플레이를 즉시 회복하도록 한다. 이러한 방식으로 인터럽트(IRQ1 및 IRQ12)를 사용하여 사용자에게 대기 상태(152)에서 정상 동작 상태(154)로 복귀할 때 회복된 비디오 디스플레이 형태로 즉각적인 피드백을 제공한다. 이러한 방식을 사용하지 않는다면, 제 9 도를 참조하여 설명하는 바와 같이, 사용자는 수초가 경과하면 APM이 사용자 활동을 체크할 때까지 피드백을 수신할 수 없을 것이다.During the standby state, activity on the keyboard or mouse interrupts causes the microcontroller to immediately restore the video display. In this way, interrupts IRQ1 and IRQ12 are used to provide the user with immediate feedback in the form of a recovered video display upon return from standby state 152 to normal operation state 154. If not using this approach, as described with reference to FIG. 9, the user will not receive feedback until several minutes have elapsed until the APM checks for user activity.

CPU(40)과 마이크로제어기(U2)간의 통신은, 제 1 PAL(U1)의 핀(18)(I/06)에서 입력되어(제 1 PAL(U1)의 핀(13)(I/03)에서 출력되고 마이크로제어기(U2)의 핀(13)(P1.0)에서 입력되는) RWD(0) 라인을 경유해 마이크로제어기(U2)에 입력되는 SD(0)와, 마이크로제어기(U2)의 핀(14)(P1.1)에서 입력되는 SD(1)와, 마이크로제어기(U2)의 핀(15)(P1.2)에서 입력되는 SD(2)와, 마이크로제어기(U2)의 핀(16)(P1.3)에서 입력되는 SD(3)와, 제 1 PAL(U1)의 핀(6)(15)에서 출력되는 SD(4)와, 마이크로제어기(U2)의 핀(18)(INTO)에서 입력되는 IO_STROBE# 및 마이크로제어기(U2)의 핀(20)(P1.7)에서 출력되는 PROC-RDY를 사용해 수행된다. 제 1 PAL(U1) 및 마이크로제어기(U2)는 (i)RDWO을 경유한 SD(0), SD(1), SD(2) 및 SD(3)를 따라 CPU(40)로부터 마이크로제어기(U2)로 기록되는 4비트 병렬 기록(하나의 어드레스는 마이크로제어기(U2)를 리세트시키기 위한 본질적으로 1비트 기록이며 다른 어드레스는 데이타 비트SD(4)가 HIGH일 때만 유효한 마이크로제어기(U2)에 기록되는 니블(nibble)과, (ii)RDW(0)를 경유한 SD(0)를 따라 CPU(40)에 의해 마이크로제어기(U2)로부터판독되는 직렬(1비트) 판독(하나의 어드레스는 상태 비트에 대응하고 다른 어드레스는 마이크로제어기(U2)로부터의 데이타 비트에 대응)을 제공하도록 구성 및 프로그램된다.Communication between the CPU 40 and the microcontroller U2 is input from pin 18 (I / 06) of the first PAL U1 (pin 13 (I / 03) of the first PAL U1). Of the microcontroller U2 and the SD (0) inputted to the microcontroller U2 via the RWD (0) line outputted from the microcontroller U2 and input from pin 13 (P1.0) of the microcontroller U2. SD (1) input from pin 14 (P1.1), SD (2) input from pin 15 (P1.2) of microcontroller U2, and pin of microcontroller U2 ( 16 (SD) input at (P1.3), SD (4) output at pins 6 (15) of the first PAL (U1), and pin 18 (of microcontroller U2) ( This is done using IO_STROBE # input from INTO) and PROC-RDY output from pin 20 (P1.7) of microcontroller U2. The first PAL (U1) and microcontroller U2 are (i) microcontroller U2 from CPU 40 along SD (0), SD (1), SD (2) and SD (3) via RDWO. 4-bit parallel write (one address is essentially a 1-bit write to reset microcontroller U2) and the other address is written to microcontroller U2, which is only valid when data bit SD (4) is HIGH. Serial (1 bit) read from the microcontroller U2 by the CPU 40 along the nibble to be read and (ii) SD (0) via RDW (0) (one address is a status bit And other addresses are configured and programmed to provide data bits from microcontroller U2).

제 19 도를 참조하면, 참조 번호(1160)로부터 시작하여 마이크로제어기(U2)상에서 실행되는 여러 루틴이 도시되어 있다. 마이크로제어기(U2)는 통상 두 개의 메인 루틴(maiu routine), 즉 태스크(1168 에서 1216까지)의 파워온 루틴 또는 태스크(1260에서 1308까지)의 파워오프 루틴중 하나의 루틴을 실행한다. 파워온 루틴은 전원(17)이 ±5 및 ±12 라인에서 조절 전력을 제공하거나 또는 전원(17)이 ±5 및 ±12 라인에서 조절 전력을 제공하지 않으나 시스템은 파워온 프로세스에 있을 때, 마이크로제어기(U2)에 의해 실행된다. 파워오프 루틴은 전원(17)이 ±5 및 ±12 라인에서 조절 전력을 제공하지 않거나 또는 전원(17)이 ±5 및 ±12 타인에서 조절 전력을 제공하나 시스템은 파워오프 프로세스중에 있을 때, 마이크로제어기(U2)에 의해 실행된다. 또한, 세 개의 인터럽트 구동 루틴(interrupt-driven routine), 즉 CPU(40)와 통신하는 루틴(1220에서 1232까지), 마우스(13) 또는 키보드(12)의 활동을 검출하는 루틴(1236에서 1244까지) 및 25밀리초,1/2초,1초 및 1분의 분해등으로 시간축(time-base)을 제공하는 루틴(1248에서 1256까지)이 존재한다.Referring to FIG. 19, various routines are shown executed on microcontroller U2 starting from reference numeral 1160. Microcontroller U2 typically executes one of two main routines, one of the power-on routine of tasks 1168 through 1216 or the power-off routine of tasks 1260 through 1308. The power-on routine provides a microcontroller when the power supply 17 provides regulated power at ± 5 and ± 12 lines or the power supply 17 does not provide regulated power at ± 5 and ± 12 lines but the system is in a power-on process. It is executed by the controller U2. The power-off routine is not used when the power supply 17 provides regulated power at ± 5 and ± 12 lines or when the power supply 17 provides regulated power at ± 5 and ± 12 tines but the system is in the power off process. It is executed by the controller U2. In addition, three interrupt-driven routines, i.e., routines 1220 through 1232 in communication with the CPU 40, routines 1236 through 1244 that detect activity of the mouse 13 or keyboard 12; ) And routines (1248 to 1256) that provide a time-base with resolutions of 25 milliseconds, 1/2 second, 1 second, and 1 minute.

먼저, 마이크로제어기(U2)는 태스크(1164)에서 초기화되는데, 이 시간동안 모든 변수가 초기화되고, 카운터 변수가 초기화되고, 타이머 인터럽트는 초기화 및 인에이블되며, 통신 루틴 및 활동 루틴을 제어하는 외부 인터럽트가 초기화된다.First, microcontroller U2 is initialized in task 1164, during which all variables are initialized, counter variables are initialized, timer interrupts are initialized and enabled, and external interrupts that control communication routines and activity routines. Is initialized.

통신 루틴은 태스크(1220)에서 시작되는 인터럽트 구동 루틴으로서, IO_STRORE 라인이 제 1 PAL(U1)에 의해 논리 0으로 되는 것에 응답하여 실행되고,이것은 CPU(40)가 커맨드 또는 질의(command or query)를 시작한다는 것을 나타낸다.The communication routine is an interrupt drive routine initiated at task 1220, which is executed in response to the IO_STRORE line becoming logical 0 by the first PAL U1, which is executed by the CPU 40 by a command or query. Indicates that it starts.

요약하면, 이 루틴은 태스크(1224)에서 CPU(40)로부터 하나 이상의 니블 커맨드 또는 질의(one or more nibble commmand or query)를 수신하고, 태스크(1228)에서 그 커맨드를 구현 및/또는 질의에 응답하는 데이타를 복귀하고, 태스크(1232)에서 인터럽트되었던 코드로 프로그램 실행 제어를 복귀시킨다.In summary, this routine receives one or more nibble commmand or query from CPU 40 at task 1224 and implements and / or responds to the command at task 1228. The program execution control is returned to the code that was interrupted at task 1232.

마이크로제어기는 CPU로부터 커맨드 또는 질의를 형성하는 니블을 순차적으로 수신한다. 하나의 니블을 수신한 후, 마이크로제어기는 PROC-RDY를 LOW로 만든다. 마이크로제어기는 다음 니블을 수신할 준비가 되었을 때 PROC_RDY를 다시 HIGH로 만든다. CPU(40)는 PROC_RDY가 LOW에서 HIGH로 전이되는 것을 검출할시 다음 커맨드 니블을 기록할 수 있다.The microcontroller sequentially receives nibbles that form a command or query from the CPU. After receiving one nibble, the microcontroller sets the PROC-RDY to LOW. The microcontroller sets PROC_RDY high again when it is ready to receive the next nibble. The CPU 40 may record the next command nibble upon detecting that the PROC_RDY transitions from LOW to HIGH.

마이크로제어기(U2)가 CPU(40)로부터 커맨드 또는 질의를 구현하는 동안, 마이크로제어기(U2)는 다른 커맨드를 수신할 수 없으며, 따라서 마이크로제어기(U2)는 ROC_RDY 라인을 논리 0으로 제어하여 마이크로제어기가 다음 커맨드/질의를 아직 수용할 수 없다는 것을(상태 포트의 판독을 통해) CPU(40)에 나타낸다. 구현이 완료되었을 때, PROC_RDY 라인은 마이크로제어기(U2)가 다음 커맨드/질의를 수용할 준비가 되었음을(상태 포트의 판독을 통해) CPU(40)에 표시하는 논리 1로 인가된다.While the microcontroller U2 implements a command or query from the CPU 40, the microcontroller U2 cannot receive other commands, so the microcontroller U2 controls the ROC_RDY line to logic 0 to control the microcontroller. Indicates to CPU 40 that the next command / query is not yet acceptable (via reading of the status port). When the implementation is complete, the PROC_RDY line is applied to logic 1 indicating to the CPU 40 that the microcontroller U2 is ready to accept the next command / query (by reading the status port).

활동 루틴은 태스크(1236)에서 시작되는 인터럽트 구동 루틴으로서,ACTIVITY# 라인이 제 1 PAL(U1)에 의해 논리 0으로 되는 것에 응답하여 실행되며, 이것은 사용자가 마우스(13)나 키보드(12)를 사용하였다는 것을 나타낸다. 요약하면, 인터럽트 수신에 응답하여, 이 루틴은 (i) 마우스(13)나 키보드(12)활동이 존재함을 나타내는 비트를 세트시키고, (ii) 클럭 감속이 인에이블 상태이면 클럭 속도를 회복시키고, (iii) 블랭크 상태가 인에이블된 상태이면 스크린(11)을 블랭크상태로부터 회복시키고, (iv) 고장 안전 타이머를 재시작하며, (v) 태스크(1240)에서 인에이블되면 CPU(40)에 SMI를 발생시킨다. 그 후, 이 루틴은(1244)에서 프로그램 실행 제어를 인터럽트되었던 코드로 복귀시킨다. 그런 다음, 이러한 루틴에 의해 세트된 비트는, 본 명세서의 다른 곳에서 상세히 설명된 바와 같이, 매 APM 획득 이벤트(get event)마다 감독 루틴에 의해 질의된다.The activity routine is an interrupt-driven routine initiated at task 1236, which is executed in response to the ACTIVITY # line becoming logical 0 by the first PAL U1, which causes the user to move the mouse 13 or keyboard 12. It was used. In summary, in response to receiving an interrupt, the routine may (i) set a bit indicating that mouse 13 or keyboard 12 activity is present, and (ii) recover clock speed if clock deceleration is enabled. (iii) recover the screen 11 from the blank state if the blank state is enabled, (iv) restart the fail-safe timer, and (v) SMI to the CPU 40 if enabled in task 1240. Generates. The routine then returns to 1244 the program execution control to the code that was interrupted. The bits set by this routine are then queried by the supervisor routine at every APM get event, as described in detail elsewhere herein.

타이머 루틴은 태스크(1248)에서 시작되는 인터럽트 구동 루틴으로서, 마이크로제어기(U2)에 시간축을 제공하기 위해 매 25밀리초마다 인터럽트를 발생하도록구성된 16 비트 프리러닝 카운터(16-bit free-running counter)에 기초한 내부 타이머 인터럽트에 응답하여 실행된다. 타이머 루틴은 25밀리초,1/2초,1초 및 1분과 같은 시간축을 제공한다. 요약하면, 이러한 루틴은 인터럽트를 수신하고, 각종시간이 발생할 때를 결정하여, 태스크(1252)에서 적절한 활동을 수행하고, 태스크(1256)에서 프로그램 실행 제어를 인터럽트되었던 코드로 복귀시킨다.The timer routine is an interrupt drive routine that starts at task 1248 and is a 16-bit free-running counter configured to generate an interrupt every 25 milliseconds to provide a time base for microcontroller U2. Is executed in response to an internal timer interrupt based on the < RTI ID = 0.0 > The timer routine provides time bases such as 25 milliseconds, 1/2 second, 1 second and 1 minute. In summary, these routines receive interrupts, determine when various times occur, perform appropriate actions in task 1252, and return program execution control to interrupted code in task 1256.

매 순간(매 25밀리초), 전원이 조절 전력을 제공하지 않고, 마이크로제어기가 링에 응답하도록 구성되어 있으면, 타이머 루틴은 EXT_RING 라인상의 RS-232 링에 대한 체크를 하여 링이 발생한 경우 비트를 세트시킨다.Every minute (every 25 milliseconds), if the power supply does not provide regulated power and the microcontroller is configured to respond to the ring, the timer routine checks the RS-232 ring on the EXT_RING line to clear the bit if a ring occurs. Set it.

오프 상태나 중지 상태인 매 1/2초동안, 타이머 루틴은 본 명세서의 다른 곳에서 상세히 설명된 외부 링 표시기 플래싱 발생시 기상 시퀀스(awake an external ring indicator flashing sequence)를 구현하기 위해 LED(23)를 토글해야 하는지를 판정한다.For every 1/2 second, either in the off state or in the stopped state, the timer routine turns on the LEDs 23 to implement an awake an external ring indicator flashing sequence, which is described in detail elsewhere herein. Determine if you need to toggle.

매초의 대기 상태동안, 타이머 루틴은 본 명세서에 상세히 설명된 중지 표시기 플래싱 시퀀스(suspend indicator flashing sequence)를 구현하기 위해 LED(23)를 토글해야 하는지를 판정한다.During every second standby state, the timer routine determines whether to toggle the LED 23 to implement the suspend indicator flashing sequence described in detail herein.

또한, 매 초마다, 타이머 루틴은, 적절하다면, 고장 안전 타이머, APM 고장 중지 타이머 및 전원 고장 타이머를 감소시키고, 임의의 타이머가 종료되었으면 대응하는 비트를 세트시킨다. 고장 안전 타이머는 마이크로제어기로,하여금 고장 안전 타이머가 턴오프될 때 시스템을 턴오프하도록 하는 20초 타이머이다. 고장 안전타이머는 흔히 APM 획득 이벤트에 응답하여 감독 루틴에 의해 재시작(리세트)되며,따라서 CPU(40)상에서 실행중인 코드가 적절히 실행되는 한, 고장 안전 타이머는 결코 종료되지 않는다. 그러나, 코드가 적절히 실행되지 않게 되면, 고장 안전 타이머는 종료되고, 전력 버튼(21)의 누름 및 해제에 응답하여 마이크로제어기(U2)는 BIOS 및 기타 루틴이 실패하였다는 가정하에서 전원(17)으로 하여금 ±5 및 ±12 라인에서 조절 전력을 제공하는 것을 중단하도록 시킨다.In addition, every second, the timer routine, if appropriate, decreases the failsafe timer, the APM failure stop timer, and the power failure timer, and sets the corresponding bit if any timer has expired. The failsafe timer is a 20-second timer that allows the microcontroller to turn off the system when the failsafe timer is turned off. The failsafe timer is often restarted (reset) by the supervisor routine in response to an APM acquisition event, so that the failsafe timer never expires as long as the code running on the CPU 40 is properly executed. However, if the code does not run properly, the fail-safe timer ends, and in response to pressing and releasing the power button 21, the microcontroller U2 returns to the power source 17 under the assumption that the BIOS and other routines have failed. To stop providing regulating power at the ± 5 and ± 12 lines.

APM 고장 중지 타이머(APM fail-suspend timer)는 스위치(21)가(사용자가 시스템을 턴오프하러 한다는 것을 나타내는) 오프/해제 상태인 경우 인에이블되고,시스템으로 하여금 이 타이머 종료시(원컨대 고장 안전 타이머가 종료되기전에) 중지를 시도하도록 하여, 마이크로제어기가 시스템을 턴오프시키도록 하는 18초 타이머이다. 고장 안전 타이머와 마찬가지로, APM 고장 중지 타이머는 CPU(40)상에서 실행되는 코드, 예를 들면 APM 획득 이벤트에 의해 흔히 재시작되므로, CPU(40)상에서 실행중인 코드가 적절히 실행되는 한, APM 고장 중지 타이머는 결코 종료되지 않는다. 그러나, 코드가 적절히 실행되지 않게 되면, APM 고장 중지 타이머는 종료된다.The APM fail-suspend timer is enabled when switch 21 is in the off / disable state (indicating that the user is about to turn off the system) and causes the system to terminate this timer (eg, a fail-safe timer). Is an 18-second timer that causes the microcontroller to turn off the system, by attempting to abort (before is terminated). As with the failsafe timer, the APM failure stop timer is often restarted by code running on the CPU 40, e.g., an APM acquisition event, so as long as the code running on the CPU 40 is properly executed, the APM failure stop timer. Never ends. However, if the code does not run properly, the APM failure stop timer expires.

APM 고장 중지 타이머가 종료되는 경우, 마이크로제어기(U2)는 하나의 비트를 세트한다. 이 비트는 각각의 타이머 레넬 0 인터럽트동안 체크되고, 이러한 인터럽트는 당업자에게 잘 알려진 바와 같이 대략 55밀리초 마다 발생한다. 또한, 타이머 레벨 0 인터럽트 서비스 루틴은 고장 안전 타이머를 재시작시킨다. 타이머 레멜 0 인터럽트 서비스 루틴이 APM 고장 중지 타이머가 종료되었다는 것을 검출하면, 제 10 도를 참조하여 설명되는 바와 같이 중지 루틴으로 점프하여 시스템을 중단시키려 할 것이다.When the APM failure stop timer expires, the microcontroller U2 sets one bit. This bit is checked during each timer rennell 0 interrupt, which occurs approximately every 55 milliseconds as is well known to those skilled in the art. The timer level 0 interrupt service routine also restarts the failsafe timer. If the timer remel 0 interrupt service routine detects that the APM failure stop timer has expired, it will attempt to stop the system by jumping to the stop routine as described with reference to FIG.

타이머 레벨 0 인터럽트 서비스 루틴에 의해 시작된 중지는 바람직한 중지방법이 아니다. 다수의 응용 프로그램 및 어댑터는 APM을 인식하고 있고 시스템이 중지되는 것에 응답하여 태스크를 수행한다. 타이머 레벨 0 인터럽트 서비스 루틴에 의해 시작된 중지는 이들 APM 인식 엔티티에 중지가 임박했음을 나타내기 위해APM을 사용할 수 없다. 결과적으로, 시스템은 이들 개체가 적절히 준비되지 못한채 중지될 수 있다. 이처럼 하여, 시스템 상태는 타이머 레벨 0 인터럽트 서비스루틴에 의해 시작되는 중지에 의해 보관될 것이며 메모리내의 데이타는 손실되지않겠지만, 사용자는 원하는 데이타가 보관된 후 시스템을 적절한 상태로 배치시킬필요가 있을 수 있다.Suspension initiated by a timer level 0 interrupt service routine is not a preferred suspend method. Many applications and adapters are aware of APM and perform tasks in response to system hangs. Suspensions initiated by the timer level 0 interrupt service routine cannot use APM to indicate that a suspend is imminent for these APM aware entities. As a result, the system may be stopped without these individuals being properly prepared. In this way, the system state will be preserved by a stop initiated by a timer level 0 interrupt service routine and no data in memory will be lost, but the user may need to place the system in the proper state after the desired data has been stored. have.

특히, APM 고장 중지 타이머는 OS의 APM 드라이버내의 홀(hole)을 패치(patch)하는데 유용하다. 예를 들면, 마이크로소프트 윈도우 3.1 모드 대화형 박스(Microsoft Windows 3.l modal dialog box)가 디스플레이되는 경우 윈도우 APM 드라이버는 APM 획득 이벤트를 발생하는 것을 중단한다. 결과적으로, 사용자가 시스템을 중지시키기 위해 전력 버튼(21)을 누를 때 모드 대화형 박스가 디스플레이되는 경우, 시스템은 중지되지 않을 것이다. 마이크로제어기(U2)는 스위치가 오프/해제 상태라는 것을 통지할 것이지만, 감독 루틴은 호출되지 않을 것인데, 그 이유는 모든 APM 획득 이벤트가 중단되었기 때문이다. 스위치 누름은 모드 대화형 박스가 사용자에 의해 클리어될 때까지 작용하지 않을 것이다. 그러나, 일단 APM 고장 중지 타이머가 종료되고, 타이머의 종료가 타이머 레벨 0 인터럽트 서비스 루틴에 의해 검출되면, 시스템 상태는 시스템이 중지되고 있다는 것을 APM 인식 개체에 나타내지 않고서 가능한 정도까지 보관될 것이다.In particular, the APM failure stop timer is useful for patching holes in the APM driver of the OS. For example, when a Microsoft Windows 3.1 modal dialog box is displayed, the Windows APM driver stops generating APM acquisition events. As a result, if the mode interactive box is displayed when the user presses the power button 21 to stop the system, the system will not be stopped. The microcontroller U2 will notify that the switch is in the off / off state, but the supervisor routine will not be called because all APM acquisition events have been aborted. The switch press will not work until the mode interactive box is cleared by the user. However, once the APM failure stop timer expires and the end of the timer is detected by the timer level 0 interrupt service routine, the system state will be kept to the extent possible without indicating to the APM aware entity that the system is being stopped.

매분 마다, 타이머 루틴은 기상 대기 분 알람 타이머 및 활동 타이머를 감소시킨다. 기상 대기 분 타이머가 인에이블되었으면, 이 기상 대기분 타이머가 종료될 때, 마이크로제어기는 전원(17)으로 하여금 ±5 및 ±12 라인에서 조절 전력을 제공하기 시작하도록 시킨다.Every minute, the timer routine decrements the wake wait minute alarm timer and the activity timer. If the wake up timer is enabled, when this wake up timer expires, the microcontroller causes the power supply 17 to begin providing regulating power at the ± 5 and ± 12 lines.

마이크로제어기(U2)가 초기화된 후, 태스크(1168)에서 전원이 테스트되어 전력이 오프 상태인지를 판정한다. 전력이 아직은 상태이면, 마이크로제어기(U2)는 태스크(1172)에서 전원(17)이 고장을 일으켰는지를 체크한다. 전원(17)은 셧다운 또는 고장(shut down or fault)을 유발하는 여러 내부 보호장치를 포함한다. 마이크로제어기(U2)는 다음과 같이 전원(17)이 고장을 일으켰는지를 판정한다. 즉, 마이크로제어기가 동작중(AUX5에 전력이 공급되는 중, 즉 AC 전력이 전원(17)에 공급되는 중)이고, 마이크로제어기(U2)는 ON 신호를 인가하여 전원(17)으로 하여금±5 및 ±12 라인에서 조절 전력을 제공하도록 시키고, POWERGOOD 라인은 인가되지 않는다면(전원(17)이 ±5 및 ±12 라인에서 조절 전력을 제공하지 않는다면), 전원(17)은 고장을 일으킬 것이고 리세트되어야 한다.After microcontroller U2 is initialized, power is tested at task 1168 to determine if the power is off. If the power is still present, microcontroller U2 checks at task 1172 whether power supply 17 has failed. The power source 17 includes several internal protection devices that cause a shutdown or fault. The microcontroller U2 determines whether the power supply 17 has failed as follows. That is, the microcontroller is in operation (while power is being supplied to AUX5, that is, AC power is being supplied to the power supply 17), and the microcontroller U2 applies the ON signal to cause the power supply 17 to have ± 5. And provide regulated power at ± 12 lines, and if the POWERGOOD line is not applied (unless power source 17 provides regulated power at ± 5 and ± 12 lines), power source 17 will fail and reset Should be.

태스크(1172)에서, 전원(17)은 실제로 2회 테스트된다. 마이크로제어기(U2)는 ON 신호를 인가한 다음에 내부 시간축에 의해 측정된 바와 같이 3초동안 대기한다. ON이 3초동안 인가된 후 POWERGOOD 신호가 인가되지 않으면, 마이크로제어기(U2)는 ON 신호를 클리어하고, 다시 5초동안 대기한다. 그런 다음, 마이크로제어기(U2)는 ON 신호를 다시 인가하고 다른 3초동안 대기한다. ON이 3초동안 인가된 후 POWERGOOD 신호가 인가되지 않으면, 마이크로제어기(U2)는 ON 신호를 클리어하고, 전원(17)이 고장을 일으킨 것으로 판정한다.In task 1172, power source 17 is actually tested twice. The microcontroller U2 waits for 3 seconds after applying the ON signal as measured by the internal time base. If the POWERGOOD signal is not applied after ON is applied for 3 seconds, the microcontroller U2 clears the ON signal and waits for another 5 seconds. Microcontroller U2 then applies the ON signal again and waits for another 3 seconds. If the POWERGOOD signal is not applied after ON is applied for 3 seconds, the microcontroller U2 clears the ON signal and determines that the power supply 17 has failed.

전원이 고장을 일으키면, 태스크(1174)에서 표시된 바와 같이 마이크로프로세서(U2)는 파워오프 루틴으로 점프한다. 다른 한편, 전원이 고장을 일으키지 않거나 또는 오프이면, 마이크로제어기는 전원(17)으로 하여금 태스크(1175)에서 ±5 및 ±12에서 조절 전력을 제공하기 시작하도록 시키고, 태스크(1176)에서 입/출력포트를 초기화시키고, LED(23)를 턴온시키며 외부 인터럽트를 인에이블시킨다.If the power source fails, microprocessor U2 jumps to a power off routine as indicated at task 1174. On the other hand, if the power supply does not fail or is off, the microcontroller causes the power supply 17 to begin providing regulating power at ± 5 and ± 12 at task 1175 and input / output at task 1176. Initializes the port, turns on LED 23 and enables external interrupts.

제 7 도는 마이크로제어기(U2)내에 유지되는 스위치 상태 머신(switch state machine)을 도시한다. 도면에 도시된 바와 같이, 상태는 스위치(21)의 폐쇄 이벤트 및 컴퓨터 시스템(10)의 리세팅과 같은 다른 이벤트에 응답하여 변화되고, CPU(40)에 의해 기록된다. AUX5가 전원(17)에 의해 전력을 공급받지 못하고 있으면, 마이크로제어기(U2)에는 전력이 공급되고 있지 않으며, 따라서 스위치 상태(174)는 의미가 없다. 스위치(21)의 누름, 어느 한 쪽 소스로부터의 전화링, 기상 대기 분 알람 타이머의 종료 및 CPU(40)로부터의 커맨드를 검출했을 때 마이크로제어기는 제 6 도를 참조하여 설명된 바와 같이 전원(17)으로 하여금 시스템 전력을 제공하기 시작하도록 시킨다.7 shows a switch state machine held in microcontroller U2. As shown in the figure, the state changes in response to other events such as the closing event of the switch 21 and the resetting of the computer system 10 and is recorded by the CPU 40. If AUX5 is not powered by the power source 17, the microcontroller U2 is not powered, so the switch state 174 is meaningless. When the switch 21 is pressed, the telephone ring from either source, the wake up of the minute alarm timer, and the command from the CPU 40 are detected, the microcontroller is configured as described with reference to FIG. 17) to start providing system power.

제 7 도에 도시된 바와 같이, 스위치(21)는 마이크로제어기(U2)에 의해 모니터되는 네 개의 상태, 즉(i)온/누름 상태(176)(사용자가 버튼을 누르고 있으며 머신을 턴온시키려하고 있는 상태),(ii)온/해제 상태(178)(사용자가 버튼을 해제하였으며 머신을 턴온시키려하고 있는 상태),(iii)오프/누름 상태(180)(사용자가 버튼을 누르고 있으며 머신을 턴오프시키려하고 있는 상태) 및(iv)오프/해제 상태(182)(사용자가 버튼을 해제하였으며 머신을 턴오프시키려하고 있는 상태)를 포함한다. 다음 태스크(1180)에서, 마이크로제어기(U2)는 스위치가 오프/해제 상태인지를 태스트하며, 이러한 상태는 사용자가 버튼을 해제하였으며 머신을 턴오프시키려하고 있다는 것을 나타낸다.As shown in FIG. 7, the switch 21 has four states that are monitored by the microcontroller U2, i.e. on / push state 176 (the user is pressing the button and is about to turn on the machine and ), (Ii) on / off state (178) (user releases button and is about to turn on machine), (iii) off / press state (180) (user presses button and turns machine on) State to be turned off) and (iv) off / release state 182 (the user has released the button and is about to turn off the machine). In the next task 1180, microcontroller U2 tasks whether the switch is in the off / off state, which indicates that the user has released the button and is about to turn off the machine.

상태(174)이고 스위치(21)가 눌러질 때, 마이크로제어기(U2)는 온/누름 스위치 상태(176)로 진입한다. 스위치(21) 해제는 마이크로제어기(U2)를 온/해제 스위치 상태(178)로 진입시킨다. 유사하게, 마이크로제어기(U2)가 리세트되는 경우, 마이크로제어기(U2)는 온/해제 상태(178)로 진입한다. 스위치(21)를 다시 누르는 것은 마이크로제어기(U2)가 오프/누름 스위치 상태(180)로 진입하도록 한다. 스위치(21)를 다시 해제하는 것은 마이크로제어기(U2)가 오프/해제 스위치 상태(182)로 진입하도록 한다. 후속적인 스위치(21)의 폐쇄는 마이크로제어기(U2)가 제 7 도에 도시된 바와 같이 네개의 상태를 통해 사이클하도록 한다. 컴퓨터 시스템(10)이 정상 동작 상태(150)일 때, 마이크로제어기(U2)는 온/해제 스위치 상태(178)이다.When state 174 and switch 21 are pressed, microcontroller U2 enters on / push switch state 176. Release of switch 21 causes microcontroller U2 to enter on / off switch state 178. Similarly, when microcontroller U2 is reset, microcontroller U2 enters on / off state 178. Pressing the switch 21 again causes the microcontroller U2 to enter the off / push switch state 180. Releasing switch 21 again causes microcontroller U2 to enter off / release switch state 182. Subsequent closing of switch 21 causes microcontroller U2 to cycle through four states as shown in FIG. When computer system 10 is in a normal operating state 150, microcontroller U2 is in an on / off switch state 178.

응용 프로그램은 이러한 상태동안 실행될 것이다. 시스템(10)은 이러한 상태에서 대기 상태(152)로 진입하고 대기 상태(152)로부터 벗어날 수 있다. 이 상태는 또한 사용자발생 중지 포기 요구(user-generated suspend about request)에 대응한다.The application will run during this state. System 10 may enter standby state 152 and exit standby state 152 in this state. This state also corresponds to a user-generated suspend about request.

오프/해제 스위치 상태는 사용자에 의한 중지 요구에 대응하는 스위치 상태이다.The off / release switch state is a switch state corresponding to a stop request by a user.

즉, 오프 상태(156)의 시스템에서 시작하여, 스위치(21)를 일회 누르고 해제시키면 컴퓨터 시스템은 정상 동작 상태(150)로 배치된다. 다시 스위치(21)를 누르고 해제하는 것은 중지 요구를 발생하며, 이 중지 요구는 제 9 도를 참조하여 상세히 논의 되는 감독 루틴에 의해 판독된다. 시스템(10)이 중지 상태(154)로 존재하기에 앞서, 스위치(21)를 3번째 누르고 해제하는 것은 중지 루틴에 의해 판독되는 중지 포기 요구(suspend about request)를 발생한다.That is, starting with the system in the off state 156, pressing and releasing the switch 21 once puts the computer system into a normal operating state 150. Pressing and releasing the switch 21 again generates a stop request, which is read by the supervision routine discussed in detail with reference to FIG. Prior to system 10 being in suspend state 154, pressing and releasing switch 21 a third time results in a suspend about request that is read by the suspend routine.

제 19 도를 다시 참조하면, 사용자가 버튼을 해제하였고 머신을 턴오프시키려 하고 있다면, 마이크로제어기(U2)는 태스크(1184)에 표시된 바와 같이 파워오프루틴으로 점프한다.Referring back to FIG. 19, if the user releases the button and is about to turn off the machine, microcontroller U2 jumps to the power off routine as indicated in task 1184.

다른 한편, 사용자가 버튼을 누르고 있으며 머신을 턴오프시키려 하고 있다는 것을 표시하는 오프/누름 상태라면, 마이크로제어기는 태스크(1192)에서 스위치가 BIOS에 의해 마스크되었는지 여부를 테스트한다. BIOS는 대기 상태로 진입시 스위치(21)를 일단 마스크하여 스위치 누름이 시스템을 강제로 대기 상태에서 중지상태로 되도록 하는 것을 방지함으로써, 본 명세서의 다른 곳에서 설명된 바과 같이 사용자의 혼란을 방지한다.On the other hand, if the user is pressing the button and indicating an off / push indicating that he is about to turn off the machine, the microcontroller tests at task 1192 whether the switch has been masked by the BIOS. The BIOS once masks the switch 21 upon entering the standby state, thereby preventing the switch press from forcing the system from the standby state to the suspended state, thereby preventing user confusion as described elsewhere herein.

스위치(21)가 BIOS에 의해 마스크되었다면, 마이크로제어기 코드는 태스크(1176)로 다시 점프하여 마스크 비트(mask bit)를 클리어함으로써 다음의 스위치누름이 시스템으로 하여금 오프 상태나 중지 상태로 진입하도록 하는 것을 허용한다. 다른 한편, 스위치(21)가 마스크되지 않았거나, 스위치(21)가 오프/누름 상태로 존재하지 않는다면, 마이크로제어기는 태스크(1196)에서 하드비트 루틴(heartbeat routine)을 시작한다.If the switch 21 is masked by the BIOS, the microcontroller code jumps back to task 1176 to clear the mask bit so that the next switch press causes the system to enter the off or stop state. Allow. On the other hand, if the switch 21 is not masked or if the switch 21 does not exist in the off / push state, the microcontroller starts a heartbeat routine at task 1196.

하드비트 루틴은 마이크로제어기(U2)가 적절히 기능하고 있다는 것을 CPU(40)에 표시하는 데 사용된다. 마이크로제어기의 CMD-STATE# 라인 출력(pin 17, p1.4)은 통상 논리 1이다. 마이크로제어기(U2)는 매 50-60마이크로초마다 이 라인을 대략 1.5초동안 논리 0으로 이끈 후 다시 논리 1로 상승시킨다. CPU(40)에 의해 판독되는 전력 관리 상태 포트는 CMD_STATE# 라인과 PROC_RDY 라인의 논리 AND이므로, 이러한 하이에서 로우로의 전이는 예를 들면 시스템이 부트할 때 CPU(40)에 의해 매우 자주 감시되어 마이크로제어기(U2)가 적절히 기능하고 있음을 보장할 수 있다.The hard bit routine is used to indicate to the CPU 40 that the microcontroller U2 is functioning properly. The CMD-STATE # line output (pin 17, p1.4) of the microcontroller is typically logic one. Microcontroller U2 drives this line to logic 0 for approximately 1.5 seconds and then back to logic 1 every 50-60 microseconds. Since the power management status port read by the CPU 40 is the logical AND of the CMD_STATE # line and the PROC_RDY line, this high to low transition is monitored very often by the CPU 40, for example when the system boots. It is possible to ensure that the microcontroller U2 is functioning properly.

다음으로, 마이크로제어기(U2)는 태스크(1200)에서 BIOS가 파워오프를 명령하였는지 여부를 테스트한다. CPU(40)는 마이크로제어기(U2)내의 사실상 모든 변수를 액세스 및 변경할 수 있다. BIOS가 시스템이 파워오프되어야 한다는 것을 나타내는 변수를 세트하였다면, 예를 들어 시스템의 상태가 중지동안 하드 드라이브(31)에 기록된 후, 마이크로제어기(U2)는 태스크(1204)에 표시된 바와 같이 파워오프 루틴으로 점프할 것이다.Next, the microcontroller U2 tests whether the BIOS commanded a power-off at task 1200. The CPU 40 can access and change virtually all variables in the microcontroller U2. If the BIOS has set a variable indicating that the system should be powered off, for example after the state of the system has been written to the hard drive 31 during the shutdown, the microcontroller U2 will power off as indicated in task 1204. You will jump to the routine.

다른 한편, BIOS가 파워오프를 명령하지 않았다면, 마이크로제어기는 태스크(1208)에서 고장 안전 루틴을 실행한다. 고장 안전 타이머는 전원(17)이 ±5 및 ±12 라인에서 조절 전력을 공급하고 있을 때 인에이블되는 20초 타이머이다. 이 루틴은 고장 안전 타이머가 종료되었는지의 여부를 체크하여, 종료된 경우 하나의 비트를 세트한다. 이 루틴은 또한 BIOS에 의해 재시작하도록 명령되는 경우 고장 안전 타이머를 재시작한다.On the other hand, if the BIOS did not command a power off, the microcontroller executes a failsafe routine at task 1208. The failsafe timer is a 20 second timer that is enabled when the power supply 17 is supplying regulating power on the ± 5 and ± 12 lines. This routine checks whether the failsafe timer has expired and sets one bit when it has finished. This routine also restarts the failsafe timer when instructed to restart by the BIOS.

다음, 태스크(1212)에서, 안전 수단으로서 또한 마이크로제어기와 전원(17)을 동기화시키기 위해, 마이크로제어기는 POWER_GOOD 라인을 체크하여, 전원(17)이 ±5 및 ±12 라인에서 조절 전력을 계속해서 공급하는지 여부를 검출한다.Next, at task 1212, in order to synchronize the microcontroller and the power supply 17 as a safety measure, the microcontroller checks the POWER_GOOD line so that the power supply 17 continues to regulate power at ± 5 and ± 12 lines. Detect whether or not to supply.

전원(17)이 ±5 및 ±12 라인에서 조절 전력을 공급하고 있지 않다면, 마이크로제어기(U2)는 태스크(1216)에서 표시된 바와 같이 파워오프 루틴으로 점프한다. 다른 한편, 전원(17)이 ±5 및 ±12 라인에서 조절 전력을 공급하고 있다면, 마이크로제어기 코드는 태스크(1180)로 다시 점프하여 실행을 계속한다.If the power supply 17 is not supplying regulating power at the ± 5 and ± 12 lines, the microcontroller U2 jumps to the poweroff routine as indicated in task 1216. On the other hand, if the power supply 17 is supplying regulating power on the ± 5 and ± 12 lines, the microcontroller code jumps back to task 1180 to continue execution.

파워오프 루틴은 태스크(1260)에서 시작된다. 우선, 마이크로제어기(U2)는 태스크(1264)에서 활동 인터럽트를 디스에이블시켜 디스플레이가 블랭크 상태로 되도록 한다.The power off routine begins at task 1260. First, microcontroller U2 disables the activity interrupt at task 1264 to cause the display to be blank.

다음, 태스크(1286)에서, 마이크로제어기는 POWER_GOOD 라인을 체크하여 전원(17)이 ±5 및 ±12 라인에서 조절 전력을 계속해서 제공하고 있는지 여부를 검출한다. 전원(17)이 ±5 및 ±12 라인에서 조절 전력을 제공하고 있다면, 마이크로제어기(U2)는 태스크(1272)에서 디스플레이가 블랭크 상태로 되어야 하는지 및/또는 LED(23)가 턴오프되어야 하는지 여부를 테스트한다. 디스플레이가 블랭크 상태되고/되거나 턴오프되어야 한다. 마이크로제어기(U2)는 비디오 제어기(56)로 하여금 비디오 신호의 발생을 중지 및/또는 LED(23)를 턴오프시킨다.Next, at task 1286, the microcontroller checks the POWER_GOOD line to detect whether the power supply 17 continues to provide regulating power at the ± 5 and ± 12 lines. If the power source 17 is providing regulating power at the ± 5 and ± 12 lines, then the microcontroller U2 may determine whether the display should be blanked at task 1272 and / or whether the LED 23 should be turned off. Test The display must be blanked and / or turned off. Microcontroller U2 causes video controller 56 to stop generating video signals and / or turn off LED 23.

그 후, 혹은 LED 및 디스플레이가 블랭크 상태로 되지 않아야 한다면, 마이크로제어기는 다음에(i)BIOS가 하나의 비트를 세팅함으로써 시스템이 다시 턴온되어야 함을 명령하였는지 여부와,(ii)사용자가 전력 버튼(21)을 누름으로써 시스템이 다시 턴온되어야 함을 명령하였는지 여부를 테스트한다. 이들중 어느 하나가 발생하였다면, 시스템은 다시 파워업되어야 하고 마이크로제어기(U2)는 태스크(1284)에 표시된 바와 같이 파워온 루틴으로 점프한다.Then, or if the LED and display should not be blanked, the microcontroller next (i) whether the BIOS commanded the system to be turned back on by setting one bit, and (ii) the user pressed the power button. Test whether the system is commanded to be turned on again by pressing (21). If either of these has occurred, the system must be powered up again and microcontroller U2 jumps to a power-on routine as indicated by task 1284.

다음, 마이크로제어기는 광절연체(OPTO1)로부터 EXT_WAKEUP# 라인에서 링이울렸는지 여부를 판정한다. RS-232 라인의 경우, 이는 단지 EXT_RING 라인이 하이 인지만을 체크한다. 광절연체(OPTO1)로부터의 신호의 경우, 이는 마이크로제어기(U2)에 의해 더 체크된다. EXT_WAKEUP# 라인은 통상적으로 저항(R5)에 의해 하이로 이끌려진다. 광절연체(OPT01)는 팁과 링(Tip and Ring) 양단간의 전압이 임계 및 보호부(905)에 의해 세트되는 임계 전압값 예를 들어 전화선이 울릴 때의 60V보다높을 때 이 라인을 로우로 만든다. 그러나, 이러한 조건은 또한 전화선이 테스트될때나 라인상의 잡음로부터도 충족될 수 있다. 따라서, 단지 EXT_WAKEUP# 라인이 로우가 되길 대기하는 것은 잘못된 링이 시스템을 깨우도록 할 수도 있다.Next, the microcontroller determines whether the ring is ringed on the EXT_WAKEUP # line from the optical insulator OPTO1. For the RS-232 line, this only checks if the EXT_RING line is high. In the case of the signal from the optical insulator OPTO1, it is further checked by the microcontroller U2. The EXT_WAKEUP # line is typically drawn high by resistor R5. The opto-isolator OPT01 pulls this line low when the voltage across the tip and ring is higher than the threshold voltage set by the threshold and protector 905, for example 60 V when the telephone line rings. . However, this condition can also be met when the telephone line is tested or from noise on the line. Thus, just waiting for the EXT_WAKEUP # line to go low may cause the wrong ring to wake up the system.

결과적으로, 마이크로제어기는 링의 주파수를 측정하여 신호가 링인지 여부를 판정한다. 표준내 링은 16Hz 내지 58Hz 사이의 신호이다. 마이크로제어기(U2)는 EXT_WAKEUP# 신호의 네 개의 상승 에지 사이의 세 개의 시간 주기를 측정하여, 세 개의 시간 주기 모두가 15.1Hz와 69.1Hz 사이의 주파수에 대응한다면, 적절한 링이 EXT_WAKEUP# 라인에서 발생하였다고 생각하여 대응하는 비트를 세트한다.As a result, the microcontroller measures the frequency of the ring to determine whether the signal is a ring. In-standard rings are signals between 16 Hz and 58 Hz. Microcontroller U2 measures three time periods between the four rising edges of the EXT_WAKEUP # signal and if all three time periods correspond to frequencies between 15.1 Hz and 69.1 Hz, an appropriate ring occurs on the EXT_WAKEUP # line. The corresponding bit is set by thinking that it is done.

체크 루틴은 EXT_WAKEUP# 라인에서 로우가 검출되면 시작된다. EXT_WAKEUP# 라인이 세 개의 연속적인 판독동안 로우라면, 마이크로제어기(U2)는 세 개의 연속적인 판독동안 라인이 하이로 복귀하기를 기다린다. 그 직후, 타이머 인터럽트에 대한 베이스를 형성하는 16비트 카운터가 판독되고, 그 값이 저장되며, 마이크로제어기(U2)는 세 개의 연속적인 판독동안 이 라인이 로우로 전이하기를 기다린다. 다음에, 마이크로제어기는 첫 번째 두 개의 상승 에지 사이의 시간이(신호가 15.1Hz와 69.1Hz 사이에 존재한다는 것을 나타내는) 15밀리초와 66밀리초 사이에 존재하는지 여부를 테스트한다. 시간이 15밀리초와 66밀리초 사이에 존재한다면, 고분해능 카운터가 다시 샘플링되고, 마이크로제어기는 다음의 로우에서 하이로의 전이를 기다릴 때 이 두 개의 카운터 샘플간의 차를 계산한다. 이러한 프로세스는 EXT_WAKEUP# 라인상에서의 다음 두 개의 로우에서 하이로의 전이동안 반복된다. 세개의 시간주기 모두가 범위내에 존재한다면, 마이크로제어기(U2)는 적절한 링이 EXT_WAKEUP# 라인에서 발생하였다고 판단하여 대응하는 비트를 세트한다. EXT_WAKEUP# 라인에 로우가 존재하지 않거나 또는 시간 주기중 어느 것이든 범위를 벗어나면, 마이크로제어기 코드는 비트를 세팅시키지 않고 계속된다.The check routine starts when a low is detected on the EXT_WAKEUP # line. If the EXT_WAKEUP # line is low for three consecutive reads, the microcontroller U2 waits for the line to return high for three consecutive reads. Immediately thereafter, a 16-bit counter that forms the base for the timer interrupt is read and its value stored, and microcontroller U2 waits for this line to transition low for three consecutive reads. Next, the microcontroller tests whether the time between the first two rising edges is between 15 milliseconds and 66 milliseconds (indicating that the signal is between 15.1 Hz and 69.1 Hz). If the time is between 15 milliseconds and 66 milliseconds, the high resolution counter is resampled and the microcontroller calculates the difference between these two counter samples as it waits for the next low to high transition. This process is repeated during the transition from the next two rows to high on the EXT_WAKEUP # line. If all three time periods are within range, the microcontroller U2 determines that the appropriate ring has occurred on the EXT_WAKEUP # line and sets the corresponding bit. If no row exists on the EXT_WAKEUP # line, or if any of the time periods are out of range, the microcontroller code continues without setting the bit.

다음, 태스크(1286)에서, 마이크로제어기는 링이 존재하는지 또는 기상 대기분 알람 타이머가 종료되었는지를 테스트한다. RS-232 링, 광절연체 링, 또는 기상 대기 분 알람의 경우,이러한 테스트는 마이크로제어기(U2)가 연합된 비트의 세트 여부를 테스트하는 것을 포함한다.Next, at task 1286, the microcontroller tests whether the ring is present or whether the wake up alarm timer has expired. In the case of an RS-232 ring, optoisolator ring, or meteorological atmospheric alarm, this test includes testing whether the microcontroller U2 sets the associated bits.

링이 존재하거나 기상 대기 분 알람 타이머가 종료되었다면, 시스템은 다시 파워온되어야 하고 마이크로제어기(U2)는 태스크(1287)에 표시된 바와 같이 파워온 루틴으로 점프한다.If a ring is present or the wake up alarm timer has expired, the system must be powered on again and microcontroller U2 jumps to a power-on routine as indicated in task 1287.

그 후, 태스크(1288)에서, 마이크로제어기는 전원(17)이 ±5 및 ±12 라인에서 조절 전력을 제공하고 있는지 여부를 판단한다. 전력을 제공하고 있지 않다면, 코드는 태스크(1280)로 다시 점프하여 루프를 다시 시작한다. 다른 한편, 전원(17)이 ±5 및 ±12 라인에서 조절 전력을 제공하고 있다면, 마이크로제어기(U2)는 태스크(1292)에서 하드비트 루틴을 실행하고, 태스크(1296)에서 고장 안전 루틴을 실행한다. 이들 두 개의 루틴은 태스크(1196 및 1208)를 참조하여 논의된 바 있다.Then, at task 1288, the microcontroller determines whether the power source 17 is providing regulating power at the ± 5 and ± 12 lines. If no power is being provided, the code jumps back to task 1280 to resume the loop. On the other hand, if the power supply 17 is providing regulating power at the ± 5 and ± 12 lines, the microcontroller U2 executes the hardbit routine in task 1292 and the failsafe routine in task 1296. do. These two routines have been discussed with reference to tasks 1196 and 1208.

마이크로제어기(U2)는 단지 (i)BIOS가 통신 루틴에서 구현되는 즉각적인 파워오프를 명령하거나, (ii)고장 안전 타이머가 종료되거나, (iii)사용자가 전력 버튼을 누르고, 마이크로제어기(U2)내의 중지 인에이블 플래그가 세트되어 있지 않은 (이 상황은 마이크로제어기(U2)가 SWITCH 입력이 판독되었을 때마다 테스트하는 조건이다) 세 가지 조건하에서만 ±5 및 ±12 라인에서 조절 전력을 제공하는 것을 중단시킨다. 따라서, 마이크로제어기는 태스크(1300)에서 고장 안전 타이머가 종료 되었는지 여부를 테스트한다. 고장 안전 타이머가 종료되지 않았으면, 코드는 태스크(1280)로 점프하여 루프를 다시 시작한다.The microcontroller U2 may only (i) command an immediate power off, in which the BIOS is implemented in the communication routine, (ii) the fail-safe timer expires, or (iii) the user presses the power button, and the microcontroller U2 Stops providing regulated power on ± 5 and ± 12 lines only under three conditions where the stop enable flag is not set (this is the condition that the microcontroller U2 tests each time the SWITCH input is read). Let's do it. Therefore, the microcontroller tests whether the failsafe timer has expired in the task 1300. If the failsafe timer has not expired, the code jumps to task 1280 to resume the loop.

다른 한편, 고장 안전 타이머가 종료되어 시스템이 파워다운되어야 함을 나타내면, 마이크로제어기(U2)는 태스크(1304)에서 (인에이블되어 있다면) SMI를 CPU(40)로 발생한다. 이것은 시스템이 바로 파워오프될 것이라는 가정하에서 CPU가소정의 태스크를 수행하는 것을 허용한다. 예를 들면, CPU(40)는 갱신된 기상 대기분 알람값을 마이크로제어기(U2)에 기록한다.On the other hand, if the failsafe timer expires to indicate that the system should be powered down, microcontroller U2 generates SMI (if enabled) to CPU 40 at task 1304. This allows the CPU to perform certain tasks under the assumption that the system will power off immediately. For example, the CPU 40 records the updated wake wait value alarm value in the microcontroller U2.

CPU(40)에 의해 더이상의 조치가 취해지지 않으면, 마이크로제어기는 프로그램가능 SMI 타이머가 종료된 후 시스템을 파워오프시킨다. CPU(40)는 마이크로제어기(U2)에 적절한 값을 기록함으로써 SMI 타이머를 재시작하는 것에 의해 이러한 시간 주기를 연장할 수 있다.If no further action is taken by the CPU 40, the microcontroller powers off the system after the programmable SMI timer expires. The CPU 40 can extend this time period by restarting the SMI timer by writing an appropriate value to the microcontroller U2.

그 후, 또한 태스크(1268)에서의 테스트가 전원이 양호한 전력을 공급하고있지 않음을 나타내면, 마이크로제어기(U2)는 태스크(1308)에서 시스템을 파워다운시킨다. 이것은(i)전원(17)으로 하여금 ±5 및 ±12 라인에서 조절 전력을 공급하는 것을 중단시키는 것, (ii)CPU(40)가 전력을 상실할 것이므로 통신 인터럽트를 디스에이블링하는 것, (iii)출력 포트(ON을 제외)를 하이로 세트하여 이들의 전력소비를 최소화하는 것(SWITCH, EXT_RING, EXT_WAKEUP 등은 이 모드에서 마이크로제어기(U2)에 의해 여전히 판독될 수 있다), (iv)나머지 루틴이 시스템으로의 전력이오프라는 것을 인식하도록 파워오프 변수를 세트하는 것과 (v)다음 스위치 누름이 시스템을 다시 턴온시키도록 스위치 상태를 오프/해제 상태로 변경하는 것을 포함한다.The microcontroller U2 then powers down the system at task 1308, if the test at task 1268 also indicates that the power source is not supplying good power. This includes (i) stopping the power supply 17 from supplying regulated power on the ± 5 and ± 12 lines, (ii) disabling the communication interrupt since the CPU 40 will lose power, ( iii) setting the output ports (except ON) high to minimize their power consumption (SWITCH, EXT_RING, EXT_WAKEUP, etc. can still be read by microcontroller U2 in this mode), (iv) The rest of the routine includes setting the power off variable to recognize that power to the system is off and (v) changing the switch state to off / off so that the next switch press turns the system back on.

그 후, 코드는 태스크(1280)로 다시 점프하여 루프를 다시 시작하는 동시에,링 또는 스위치 누름, 또는 BIOS가 시스템을 깨우도록 명령하는 것, 또는 기상 대기 분 알람 타이머가 종료하는 것을 기다린다.The code then jumps back to task 1280 to resume the loop while simultaneously waiting for a ring or switch press, or for instructing the BIOS to wake up the system, or for the wake up alarm timer to expire.

시스템 소프트웨어 본 발명의 컴퓨터 시스템(10)의 하드웨어 측면을 기술하였으며, 이하 코드측면이 기술될 것이다.System Software A hardware aspect of the computer system 10 of the present invention has been described and the code aspect will now be described.

이제 제 8 도를 참조하면, 파워업 루틴의 개략도가 도시되어 있다. 이 루틴은 CPU가 리세트 벡터(Reset Vector)가 가리키는 코드로 점프하여 이 코드를 실행하는 경우 태스크(200)에서 시작된다. 이러한 경우는 CPU가 파워업되거나, CPU가 리세트 하드웨어 신호(Reset hardware signal)에 의해 리세트되거나, 혹은 리세트 (RESET) 인스트럭션이 리세트 벡터가 가리키는 코드로 점프함으로써 실행될 때마다 발생한다. 이러한 리세트 절차는 본 기술 분야에서 잘 알려져 있다.Referring now to FIG. 8, a schematic of the power up routine is shown. This routine is initiated in task 200 when the CPU jumps to the code indicated by the Reset Vector and executes this code. This case occurs whenever the CPU is powered up, the CPU is reset by a reset hardware signal, or the reset instruction is executed by jumping to the code indicated by the reset vector. Such reset procedures are well known in the art.

우선, 파워업 루틴의 흐름은 머신이 파워업된 이유에 좌우된다. 제 11 도를 참조하여 보다 상세히 설명되는 바와 같이, 시스템(10)은 브라운 아웃 또는 블랙아웃에 의해 파워업되었을 수도 있다. 이 경우, 시스템이 온 상태로 유지되도록 허용하는 것은 부적절할 것이다. 따라서, 파워업 루틴은 태스크(940)에서 시스템이 온상태를 유지하여야 하는지를 먼저 판단한다. 시스템이 부적절하게 파워업되었다면, CPU(40)는 태스크(942)에서 마이크로제어기(U2)에 지시하여 전원이 시스템에 조절전력을 공급하는 것을 중단시키도록 한다.First of all, the flow of the power-up routine depends on why the machine is powered up. As described in more detail with reference to FIG. 11, the system 10 may have been powered up by brown out or black out. In this case, it would be inappropriate to allow the system to stay on. Thus, the power-up routine first determines at task 940 whether the system should remain on. If the system has been improperly powered up, CPU 40 instructs microcontroller U2 at task 942 to stop the power supply from supplying regulated power to the system.

시스템이 전력을 유지할 것인지 여부를 판단하기 위해 수행되는 하나의 테스트는 마이크로제어기가 링이라고 판단한 것에 시스템이 파워업되었다면, 전화선이 울리고 있다는 것을 확인하는 것이다. 특히, 시스템이 파워업된 후, 시스템이 링에 응답하여 깨워졌다면, 시스템이 하드 드라이브(31)내의 하드 디스크가 회전하기를 기다리는 동안, CPU(40)는(이제 완전히 전력이 공급되는) 모뎀900 또는 902)에 질의하여 마찬가지로 링 신호를 검출하는지 여부를 판단한다. 그렇지 않은 경우, 시스템은 파워다운된다. 모뎀(900 또는 902) 역시 링 신호를 검출한다면, 시스템은 전력을 유지해야 하며 부팅 프로세스(booting process)는 계속될 것이다.One test performed to determine whether the system will maintain power is to verify that the telephone line is ringing if the system is powered up when the microcontroller determines that it is a ring. In particular, if the system wakes up in response to the ring after the system is powered up, the CPU 40 (now fully powered on) may wait while the system waits for the hard disk in the hard drive 31 to spin. Or 902 to determine whether to detect a ring signal as well. Otherwise, the system is powered down. If the modem 900 or 902 also detects a ring signal, the system must maintain power and the booting process will continue.

시스템이 전력을 유지하여야 한다고 가정하면, 통상적으로 파워업 루틴의 흐름은 시스템이 오프 상태(156)인지 또는 중지 상태(154)인지에 좌우된다. 즉, 중지 플래그가 CMOS NVRAM(96)에서 클리어되어 있는지 또는 세트되어 있는지 여부에 좌우된다. 태스크(202)에 도시된 바와 같이, 시스템(10)은 비휘발성 CMOS 메모리(96)로부터 중지 플래그를 판독함으로써 시스템이 오프 상태(156)인지 또는 중지 상태(154)인지를 판단한다. 시스템이 정상 동작 상태(150)에서 벗어나 오프 상태(156)나 중지 상태(154)로 진입할 때, 각각의 루틴은 NVRAM(96)에서 중지 플래그를 세트 또는 클리어한다. 중지 플래그가 NVRAM(96)에서 세트되어 있다면, 컴퓨터 시스템(10)은 중지 상태(154)이고, 컴퓨터 시스템(10)의 상태는 고정 디스크 저장 장치(31)내에 저장되어 있다. 다른 한편, 중지 플래그가 NVRAM(96)에서 클리어되어 있으면, 컴퓨터 시스템(10)은 오프 상태(156)이고, 컴퓨터 시스템(10)의 상태는 고정 디스크 저장 장치(31)내에 저장되어 있지 않다. 따라서, 중지 플래그가 NVRAM(96)에서 세트되어 있다면, 컴퓨터는 태스크(204-214)에 도시된 정상 부트 루틴을 실행한다. 첫 번째 태스크는 참조 번호(204)에 도시된 바와 같이 파워온 셀프테스트 (power-on self-test : POST)이고, 제 11 도를 참조하여 보다 상세히 설명될 것이며, POST로부터의 복귀후, CPU(40)는 PBOOT 루틴을 호출하여 참조 번호(206)에 도시된 바와 같이 운영 체제를 로드한다.Assuming the system should maintain power, the flow of the power-up routine typically depends on whether the system is in an off state 156 or a suspended state 154. That is, it depends on whether the stop flag is cleared or set in the CMOS NVRAM 96. As shown in task 202, system 10 determines whether the system is in an off state 156 or a suspended state 154 by reading the suspend flag from nonvolatile CMOS memory 96. As the system exits the normal operating state 150 and enters the off state 156 or suspend state 154, each routine sets or clears a suspend flag in the NVRAM 96. If the suspend flag is set in NVRAM 96, computer system 10 is in suspend state 154, and the state of computer system 10 is stored in fixed disk storage 31. On the other hand, if the stop flag is cleared in the NVRAM 96, the computer system 10 is in an off state 156, and the state of the computer system 10 is not stored in the fixed disk storage device 31. Thus, if the suspend flag is set in NVRAM 96, the computer executes the normal boot routine shown in tasks 204-214. The first task is a power-on self-test (POST) as shown at 204 and will be described in more detail with reference to FIG. 11 and after returning from the POST, the CPU ( 40 calls a PBOOT routine to load the operating system as shown at 206.

PBOOT 루틴은 IBM PS/2 컴퓨터상에서 실행되는 전형적인 루틴을 약간 변형한 것인데, 이는 차후에 설명될 것이다. PBOOT는(하드드라이브(31)로 부터인지 혹은 플로피 드라이브(27)내 디스크로부터인지의) 부팅 장소를 판정하고, 운영 체제(OS)를 로딩하고, CONFIG.SYS 화일이 지시하는 대로 시스템 변화(system changes)를 분석하고 구현한 후, 궁극적으로, 제어를 운영체체로 복귀하기 전에 AUTOEXEC.BAT배치 화일을 실행한다. PBOOT 루틴은 본 기술 분야에서 잘 알려져 있다. OS는 APM 장치 드라이버를 로딩하며, 이 APM 드라이버는 BIOS에게 이 BIOS가 APM을 인식하고 있는지를 질의한다. 인식하고 있다면, 이 BIOS APM 루틴 및 OS APM 루틴은 핸드 셰이킹을 수행한 후 본 명세서에 기술된 각종 특징을 제공하기 위해 협력한다. 운영 체제는 태스크(210)에 도시된 바와 같이 사용자에 의해 지시된 코드를 무한정 실행한다. 그러나, 태스크(212)에서 도시된 것처럼, API를 감독 루틴에 통보하면, APM BIOS 및 APM OS는 감독 루틴이 실행 프로그램과 함께 병렬(parallel)로 실행되도록 한다. 즉, 컴퓨터 시스템(10)은 시분할 멀티태스킹 시스템(time-multiplexed multitasking system)이고, APM 획득-이벤트와 감독 루틴은 주기적으로(periodically) 실행된다. 최종 결과는, 감독 루틴이 대략 매 초마다 실행된다는 것이다. 감독 루틴은 제 9 도를 참조하여 보다 상세히 기술될 것이다. 제 4 도를 참조하여 설명된 바와 같이, 정상 부트 루틴(204-210)이 끝난후, 컴퓨터 시스템(10)은 정상 동작 상태(150)에 존재하게 된다.The PBOOT routines are a slight variation of the typical routines that run on IBM PS / 2 computers, which will be explained later. The PBOOT determines the boot location (either from the hard drive 31 or from a disk in the floppy drive 27), loads the operating system (OS), and changes the system as indicated by the CONFIG.SYS file. After analyzing and implementing the changes, ultimately run the AUTOEXEC.BAT batch file before returning control to the operating system. PBOOT routines are well known in the art. The OS loads the APM device driver, which asks the BIOS if the BIOS recognizes APM. If aware, these BIOS APM routines and OS APM routines cooperate to provide the various features described herein after performing handshaking. The operating system executes the code directed by the user indefinitely as shown in task 210. However, as shown in task 212, when notifying the supervisor routine of the API, the APM BIOS and APM OS cause the supervisor routine to be executed in parallel with the executing program. That is, computer system 10 is a time-multiplexed multitasking system, and APM get-events and supervision routines are executed periodically. The end result is that the supervision routine is executed approximately every second. The supervision routine will be described in more detail with reference to FIG. As described with reference to FIG. 4, after the normal boot routines 204-210 have ended, the computer system 10 is in the normal operating state 150.

태스크(202)를 다시 참조하면, 중지 플래그가 NVRAM(96)에서 세트되어 있으면, 시스템 상태는 하드 드라이브(31)에 저장되었으며, 시스템(10)은 태스크(214-220)에 도시된 바와 같은 부트 루틴을 재개(resume)한다. 우선, 태스크(214)에 도시된 바와 같이, 시스템은 단축 POST(abbreviated POST)를 실행한다. 단축POST에 대해서는 제 11 도를 참조하여 보다 상세히 기술될 것이다. 단축 POST 후에, 태스크(216)에 도시된 바와 같이, 시스템은 재개 루틴을 호출한다, 재개 루틴은 제 12 도를 참조하여 보다 상세히 기술될 것이다. 현 시점에서는, 재개 루틴은 컴퓨터 시스템(10)의 상태를 이 시스템(10)이 중지되기 전의 구성으로 다시 회복한다는 사실만으로 족하다. APM 루틴이 이 시스템을 중지시키기 위해 실행되고 있었음에 틀림없고, 시스템 상태가 회복될 때 APM은 메모리로 다시 로딩되므로, 태스크(204-210)에서 도시된 정상 부트 루틴과는 달리, 재개 부트 루틴은 감독 루틴의 존재를 APM API 루틴에 통보할 필요가 없다. 따라서, 재개 루틴이 시스템(10) 상태의 회복을 완료하였을 때, 태스크(212 및 220)에 도시된 바와 같이, APM은 이미 메모리내에 위치하여 회복된 코드와 함께 병렬로 실행된다. 재개 부트 루틴(214-220)의 완료 후, 제 4 도를 참조하여 설명된 바와 같이, 컴퓨터 시스템(10)은 정상 동작 상태(150)에 존재한다. 따라서, 정상 부트 루틴(204-210) 혹은 재개 부트 루틴(214-220)이 실행된 후, 컴퓨터 시스템(10)은 정상 동작 상태(15)에 있게된다.Referring back to task 202, if the stop flag is set in NVRAM 96, the system state is stored on hard drive 31, and system 10 boots as shown in tasks 214-220. Resume the routine. First, as shown in task 214, the system executes an abbreviated POST (POST). The shorter POST will be described in more detail with reference to FIG. After a short POST, the system calls the resume routine, as shown in task 216, which will be described in more detail with reference to FIG. At this point, the resume routine is sufficient only to restore the state of the computer system 10 back to the configuration it had before the system 10 was stopped. Unlike the normal boot routine shown in tasks 204-210, the resume boot routine must be running because the APM routine must have been running to halt this system and APM is loaded back into memory when the system state is restored. There is no need to inform the APM API routines of the existence of the supervision routine. Thus, when the resume routine has completed recovery of the system 10 state, as shown in tasks 212 and 220, the APM is executed in parallel with the code already located in memory and recovered. After completion of the resume boot routines 214-220, as described with reference to FIG. 4, the computer system 10 is in a normal operating state 150. Thus, after the normal boot routines 204-210 or resume boot routines 214-220 are executed, the computer system 10 is in the normal operating state 15.

제 9 도에는 획득-이벤트동안 대략 매초마다 APM에 의해 호출되는 감독 루틴의 상세한 흐름도가 도시되어 있다. 상이한 운영 체제는 상이한 주기로(at different frequencies)획득-이벤트를 실행할것이다.9 shows a detailed flowchart of the supervision routine called by the APM approximately every second during an acquisition-event. Different operating systems will execute acquisition-events at different frequencies.

제 9 도에서, 감독 루틴은 태스크(222)에서 시작한다. 이하의 설명은 컴퓨터 시스템(10)이 정상 동작 상태(150)에서 시작한다고 가정한다. 제 1 태스크는 태스크(224)에서 사용자가 스위치(21)를 눌렀는지를 테스트하는 것이다. 제 6A 도 및 제 7 도를 참조하여 상세히 설명된 바와 같이, 스위치(21)는 CPU(40)가 마이크로제어기(U2)를 조회함으로써 테스트된다.In FIG. 9, the supervision routine starts at task 222. The description below assumes that computer system 10 starts in a normal operating state 150. The first task is to test whether the user pressed the switch 21 in task 224. As described in detail with reference to FIGS. 6A and 7, the switch 21 is tested by the CPU 40 querying the microcontroller U2.

태스크(224)에서의 테스트 결과, 사용자가 스위치(21)를 눌렀다고 판단되면,감독 루틴은 태스크(350)에서 중지 요구(Suspend Request)가 이 이전에 OS내의 APM장치 드라이버로 발생되었는지 여부를 판단한다.If the test at task 224 determines that the user has pressed the switch 21, the supervision routine determines at task 350 whether a suspend request was previously issued to the APM device driver in the OS. do.

태스크(950)에서의 테스트 결과 중지 APM 드라이버로 이미 전송되지 않았다고 판단되면, 감독 루틴은 태스크(226)에서 중지 요구를 OS APM 드라이버로 발생하고, 태스크(228)에서 APM으로 복귀한다. 세트 중지 요구 APM 복귀 코드(SET Suspend Request APM Return Code)에 응답하여, APM은 중지가 임박했음을 방송(broadcast)하여 APM 인식 장치가 (하드 디스크의 동기화와 같은) 임의의 필요한시스템 태스크를 수행할 수 있도록 하고 중지 커맨드를 발생하여 APM BIOS 경로 배정 루틴으로 하여금 중지 루틴을 호출하도록 한다. 중지 루틴은 제 10 도를 참조하여 보다 상세히 기술될 것이다. 중지 루틴은 본질적으로 시스템(10)이 정상동작 상태(150)에서 벗어나 중지 상태(154)로 진입토록 하며,(시스템이 중지될 준비가 되지 않았으면) 다수의 인스트럭션 후에, 혹은(시스템이 중지되고 재개된다면) 수분, 수시간, 수일, 수주 혹은 수년후에 감독 루틴으로 제어를 복귀할 수도 있다. 중지 루틴은, 중지없이 복귀하거나 혹은 완전한 중지 및 재개후에 복귀하거나에 상관없이, 항상 정상 중지(Normal Suspend) APM 복귀 코드를 세트한다.If the test at task 950 determines that it has not already been sent to the stop APM driver, the supervisor routine issues a stop request to the OS APM driver at task 226 and returns to APM at task 228. In response to the SET Suspend Request APM Return Code, APM broadcasts that the suspension is imminent so that the APM-aware device can perform any necessary system tasks (such as synchronization of hard disks). And issue a stop command to cause the APM BIOS routing routine to call the stop routine. The stop routine will be described in more detail with reference to FIG. The stop routine essentially causes the system 10 to exit from the normal operating state 150 and enter the stop state 154 (if the system is not ready to stop), or after a number of instructions, or (the system stops) If resumed, control may return to the supervision routine in minutes, hours, days, weeks or years. The suspend routine always sets the Normal Suspend APM return code, whether returning without suspending or returning after full suspend and resume.

태스크(224)에서, 대개의 경우 스위치(21)는 눌러지지 않았으며, 감독 루틴은 태스크(952)로 이동하여 임계 중지 플래그(Critical Suspend Flag)가 세트되어 있는지를 판단한다. 마찬가지로, 중단 요구가 이전에 OS내의 APM 드라이버로 전송되었다면, 감독 루틴은 태스크(952)로 이동하여 임계 중지 플래그가 세트되어 있는 지를 판단한다. 임계 중지 플래그가 세트되어 있다면, 태스크(954)에서 감독 루틴은 임계 중단 요구가 APM 드라이버로 이전에 발생되었는지의 여부를 테스트한다.In task 224, in most cases the switch 21 has not been pressed and the supervisory routine moves to task 952 to determine if a Critical Suspend Flag is set. Similarly, if an abort request was previously sent to an APM driver in the OS, the supervisor routine moves to task 952 to determine if the threshold abort flag is set. If the threshold abort flag is set, then at task 954 the supervisor routine tests whether a critical abort request has previously occurred with the APM driver.

임계 중지 요구가 APM 드라이버에 발생되지 않았다면, 감독 루틴은 태스크(954)에서 임계 중지 요구 APM 복귀 코드를 발생한 후, 태스크(958)에서 APM 드라이버로 복귀한다. 임계 중지 요구에 응답하여, APM 드라이버는 중지가 임박했음을 방송하지 않고 즉시 시스템을 중지시키며, 따라서 APM 인식 장치는 그들 제각기의 사전 중지 태스크(pre-suspend taks)를 수행할 수 없다.If a critical stop request has not been issued to the APM driver, the supervisor routine generates a threshold stop request APM return code at task 954 and then returns to the APM driver at task 958. In response to the critical suspend request, the APM driver stops the system immediately without broadcasting that the suspend is imminent, and thus the APM-aware device is unable to perform their respective pre-suspend taks.

태스크(952)에서 임계 중지 플래그가 세트되어 있지 않거나, 태스크(954)에서 임계 중지 요구가 이미 OS내의 APM 드라이버로에 발생되었다면, 감독자 루틴은 태스크(954)에서 15초이상동안 중지가 보류중(pending)이었는지 여부를 판단한다.If the threshold stop flag is not set in task 952, or if a threshold stop request has already been made to the APM driver in the OS in task 954, the supervisor routine is suspended for more than 15 seconds in task 954 ( whether or not pending).

중지가 15초이상동안 보류중이었으면 감독 루틴은 태스크(958)에서 임계 중지 플래그를 세트함으로써, 태스크(954)에서의 테스트가 다음 APM 획득 이벤트동안 테스트되도록 한다.If the pause has been pending for more than 15 seconds, the supervisor routine sets a threshold pause flag at task 958, causing the test at task 954 to be tested during the next APM acquisition event.

그 후, 또는 중지가 15초이상동안 보류중이 아니었다면, 감독자 루틴은 태스크(959)에서 중지가 보류중인지 여부를 체크한다. 중지가 보류중이면, 태스크(960)에서 CPU(40)는 마이크로제어기(U2)로 하여금 고장 안전 타이머 및 APM 고장-중지타이머를 재시작(리세트)시키도록 한다.Thereafter, or if the suspension has not been pending for more than 15 seconds, the supervisor routine checks in task 959 whether the suspension is pending. If pause is pending, at task 960, CPU 40 causes microcontroller U2 to restart (reset) the failsafe timer and the APM fail-stop timer.

그 후, 또는 중지가 보류중이 아니라면, 감독 루틴은 태스크(230)로 이동하여 시스템이 방금 재개하였는지 여부를 체크한다. 중지 루틴이 호출된다면, 중지루틴이 중지없이 복귀하던지 또는 완전한 중지 및 재개 후에 복귀하던지간에, 시스템은 자신이 이제 막 재개되었던 것으로 생각한다. 재개는 태스크(230)에서 테스트되고, 시스템이 방금 재개되었다면(또는 DMA 또는 화일 활동으로 인해 중지가 수행되지 않았다면), 정상 재개 APM 복귀 코드가 태스크(232)에서 발생되고, 태스크(234)에서 APM으로 복귀된다. 이에 응답하여, APM OS 드라이버는 시스템 클럭 및 그 사이에 오염되었을 수도 있는 다른 값을 갱신한다.Then, or if the suspension is not pending, the supervisor routine moves to task 230 to check whether the system has just resumed. If the stop routine is called, whether the stop routine returns without stopping or after a complete stop and resume, the system assumes that it has just resumed. Resume is tested at task 230, and if the system has just been resumed (or if no stop was performed due to DMA or file activity), then a normal resume APM return code is generated at task 232 and at APM at task 234 Return to. In response, the APM OS driver updates the system clock and other values that may have been contaminated between them.

대개의 경우, 시스템(10)은 이제 막 재개된 것은 아니며, 감독 루틴은 태스크(236)로 이동하여, 임의의 사용자 활동을 테스트한다. 태스크(236)에서, 세 가지 유형의 사용자 활동, 즉 하드화일(31) 활동, 키보드(12) 활동 및 마우스(13) 활동이 테스트된다. 모든 APM 획득 이벤트마다, 감독 루틴은 하드 드라이브(31)로부터 하드화일 헤드, 실린더 및 섹터값을 판독하고, 마우스 인터럽트 라인상에 혹은 키보드 인터럽트 라인상에 활동(둘다 사용자 활동을 나타냄)이 존재하는지를 마이크로제어기(U2)에 질의하며, 실시간 클럭(98)으로부터 분값(이 분값은 0분에서 59분의 범위이고 각 시간의 시작시 0분으로 다시 되돌아감)을 판독한다. 세 개의 하드드라이브 활동 변수(헤드, 실린더 및 섹터) 및 분값은 임시 저장된다. 그런 다음,이 세 개의 하드 드라이브 활동 변수는 이전의 획득 이벤트로부터 보관된 하드 드라이브 활동 변수와 비교된다. 세개의 현재 하드 드라이브 값이 이전의 획득 이벤트로부터의 값과 동일하고, 마우스 인터럽트 라인이나 키보드 인터럽트 라인상에 활동이 존재하지 않는다면, 사용자 활동이 존재하지 않았던 것이다. 하드 드라이브값이 다르거나, 혹은 마우스 인터럽트 라인이나 키보드 인터럽트 라이상에 활동이 존재한다면, 사용자 활동이 존재한 것이고, 현재의 디스크 드라이브 활동 변수값은 다음의 확득 이벤트동안 판독된 값과의 비교를 위해 보관된다.In most cases, system 10 is not just resumed, and the supervision routine moves to task 236 to test any user activity. In task 236, three types of user activity are tested: hard file 31 activity, keyboard 12 activity, and mouse 13 activity. For every APM acquisition event, the supervisor routine reads the hard file head, cylinder, and sector values from the hard drive 31 and checks whether there is activity (both indicating user activity) on the mouse interrupt line or on the keyboard interrupt line. The controller U2 is queried and reads the minute value (the minute value ranges from 0 minutes to 59 minutes and returns back to 0 minutes at the beginning of each hour) from the real time clock 98. Three hard drive activity variables (head, cylinder and sector) and minute values are stored temporarily. Then, these three hard drive activity variables are compared with the hard drive activity variables archived from previous acquisition events. If the three current hard drive values are the same as the values from the previous acquisition event and there is no activity on the mouse interrupt line or the keyboard interrupt line, then there was no user activity. If the hard drive values are different, or if there is activity on the mouse interrupt line or keyboard interrupt line, then there is user activity, and the current disk drive activity variable values are compared for readings during the next acquisition event Are kept.

전술한 활동-검출 방안은 하나의 루틴이 CPU 상에서 실행되어 하드 드라이브활동을 판정하고 단지 두 개의 하드웨어 인터럽트 활동이 감시되는 방안이다.The activity-detection approach described above is one where a routine is run on the CPU to determine hard drive activity and only two hardware interrupt activities are monitored.

이와 달리, 활동이 하드웨어 방식으로도 감시될 수 있다. 예를 들면, 16개의 하드웨어 인터럽트선 모두의 활동이 감시될 수 있다.Alternatively, activity can also be monitored in a hardware manner. For example, activity of all sixteen hardware interrupt lines can be monitored.

활동이 있었으면, 태스크(238)에서 감독 루틴은 대기 플래그를 테스트하여,컴퓨터 시스템(10)이 대기 상태(152)에 있는지를 판단한다. 대기 플래그가 세트되어 시스템(10)이 대기 상태(152)에 있음을 나타내면, 태스크(240)에서 감독 루틴은 대기 상태(152)를 벗어나 정상 동작 상태(150)로 진입한다. 감독 루틴은, 제18 도에 도시된 바와 같이 대기 상태(152)에 진입시 파워다운되었던 장치를 다시파워업함으로써 대기 상태(152)를 벗어난다. 요약하면, 시스템이 대기 상태를 벗어날 때, 감독 루틴은 비디오 신호를 회복하고, 하드 드라이브내의 하드 디스크를 회전시키고, 시스템을 회복시키고, APM CPU 유휴 호출(APM CPU Idle calls)을 디스에이블시켜 APM 드라이버로부터의 CPU 유휴 호출이 CPU(40)를 더 이상 정지시키지 못하도록 하며, 시스템(50)이 대기 상태에 있다는 것을 표시하는 플래그를 클리어시킨다.If there was activity, at task 238 the supervisor routine tests the wait flag to determine if computer system 10 is in standby state 152. If the wait flag is set to indicate that system 10 is in standby state 152, at task 240 the supervisor routine leaves standby state 152 and enters normal operating state 150. The supervisor routine exits the standby state 152 by repowering the device that was powered down upon entering the standby state 152 as shown in FIG. In summary, when the system goes out of standby, the supervisor routine recovers the video signal, spins the hard disk in the hard drive, recovers the system, and disables the APM CPU Idle calls. The CPU idle call from prevents further stopping the CPU 40, and clears a flag indicating that the system 50 is in a waiting state.

또한, 활동이 있었으면, 실시간 클럭(98)의 분값을 보관하여, 후속 획득-이벤트동안 판독된 분값과 비교한다. 태스크(241)에서 현재의 분값을 보관하여 비활동 대기 타이머와 비활동 중지 타이머를 효과적으로 리세트시킨다. 정상 사용동안에는, 사용자 활동이 있을 것이며, 태스크(242)에서 감독 루틴은 무 이벤트(No Event) APM 복귀 코드를 세트하고, 태스크(243)에서 APM 호출 코드로 복귀할 것이다. APM은 무 이벤트 복귀 코드에 응답하여 더 이상의 루틴을 호출하지 않는다.In addition, if there is activity, the minute value of the real time clock 98 is stored and compared with the minute value read during subsequent acquisition-events. Task 241 stores the current minute value to effectively reset the inactivity wait timer and inactivity stop timer. During normal use, there will be user activity and at task 242 the supervisor routine will set a No Event APM return code and return to APM call code at task 243. APM does not call any more routines in response to an event-free return code.

태스크(236)에서의 테스트에서 사용자의 활동이 없었다고 판단되면, 태스크(245 및 247)에서 감독 루틴은 비활동 대기 타이머 및 비활동 중지 타이머가 종료되었는지를 각각 테스트한다. 시스템(10)이 대기 상태(152)에 있다면, 비활동 대기 타이머의 종료에 관해 조사하지 않는다. 대신에, 테스트는 태스크(244)에서 건너뛴다.If the test at task 236 determines that there is no user activity, then at tasks 245 and 247 the supervisor routine tests whether the inactivity wait timer and the inactivity stop timer have expired, respectively. If system 10 is in standby state 152, no investigation is made regarding the end of the inactivity wait timer. Instead, the test skips in task 244.

저장된 분값에서 현재의 분값을 감산하여 사용자 활동이 있은 이래 경과된 분수(the number of minutes)와 대응하는 값을 얻음으로써, 두 타이머의 종료 여부가 체크된다. 태스크(245)에서는 이 값을 비활동 대기 타임아웃(timeout)값과 비교하고, 태스크(247)에서는 이 값을 비활동 중지 타임아웃값과 비교한다. 두개의 타임아웃값은 사용자에 의해 선택될 수 있으며, 두 타이머중 하나의 종료로 인해 시스템이 대기 상태(152), 중지 상태(154), 대기 상태(152) 혹은 중지 상태(154)중 어느 하나로도 진입할 수 없도록 세트할 수 있다. 타임아웃값을 0으로 세트하면, 그 타이머가 절대로 종료하지 말아야 한다는 것을 나타낸다.By subtracting the current minute value from the stored minute value to obtain a value corresponding to the number of minutes that have elapsed since the user activity, whether the two timers are checked for termination. Task 245 compares this value to the inactivity wait timeout value, and task 247 compares this value to the inactivity stop timeout value. Two timeout values can be selected by the user, and the end of one of the two timers causes the system to enter either standby state 152, suspended state 154, standby state 152 or suspended state 154. It can also be set to prevent entry. Setting the timeout value to zero indicates that the timer should never end.

마지막 사용자의 활동 이래 경과된 분수가 비활동 대기 타임아웃값과 동일하거나 혹은 크다면, 태스크(246)에서, 감독 루틴은 시스템(10)을 대기 상태(152)로 진입하도록 한다. 비활동 대기 타이머가 종료되지 않았으면, 태스크(247)에서, 감독 루틴은 비활동 중지 타이머의 종료를 테스트한다. 반면에, 비활동 대기 타이머가 종료되었으면, 감독 루틴은 제 18 도에 도시된 바과 같이 소정 구성 요소를 제각기의 저-전력 모드로 배치하여, 시스템(10)을 대기 상태(152)로 진입토록 한다.If the fraction that has elapsed since the last user's activity is equal to or greater than the inactivity wait timeout value, then at task 246, the supervisor routine causes system 10 to enter standby state 152. If the inactivity wait timer has not expired, at task 247, the supervisor routine tests the end of the inactivity stop timer. On the other hand, if the inactivity wait timer has expired, the supervisor routine places certain components into their respective low-power modes as shown in FIG. 18, causing the system 10 to enter standby state 152. FIG. .

요약하면, 바람직한 실시예에서, 감독 루틴은 비디오 신호를 블랭크 상태로 하고,하드 드라이브내의 하드 디스크를 스핀 다운(spin down)시키고, 시스템 클럭을 감속시키고, APM CPU 유휴 호출을 인에이블시켜 APM 드라이버로부터의 CPU 유휴 호출 이 CPU(40)를 정지시키도록 하며, 시스템(10)이 대기 상태(152)에 있음을 나타내는 플래그를 세팅한다. 시스템(10)을 대기 상태(152)로 진입토록 한 후에, 작업(247)에서, 감독 루틴은 비활동 중지 타이머의 종료를 테스트한다.In summary, in the preferred embodiment, the supervision routine blanks the video signal, spins down the hard disk in the hard drive, slows down the system clock, and enables the APM CPU idle call from the APM driver. CPU idle call causes CPU 40 to halt, and sets a flag indicating that system 10 is in standby state 152. After causing system 10 to enter standby state 152, at task 247, the supervisor routine tests the end of the inactivity stop timer.

태스크(247)에서, 감독 루틴은 비활동 중지 타이머가 종료되었는지를 판단한다. 마지막 사용자 활동 이래 경과된 분수가 비활동 중지 타임아웃 값과 동일하거나 혹은 크다면, 태스크(248)에서 감독 루틴은 중지 요구 APM 복귀 코드를 세팅하고, 태스크(243)에서 APM으로 복귀한다. 태스크(226)를 참조하여 설명한 바와같이, 세트 중지 요구 APM 복귀 코드에 응답하여, APM은 임의의 필요한 시스템 작입을 수행하고 중지 루틴을 호출한다. 중지 루틴은 제 10 도를 참조하여 보다 상세히 설명되며, 요약하자면, 시스템(10)이 정상 동작 상태(150)를 벗어나 중지상태(154)에 들어가도록 유발한다. 태스크(226)를 참조하여 설명한 바와 같이, 시스템을 중지하거나 혹은 중지하지 않고서, 제어를 중지 루틴에서 감독 루틴으로 복귀시킬 수 있다. 반면에, 비활동 중지 타이머가 종료되지 않았으면, 태스크(242)에서 감독 루틴은 무 이벤트 APM 복귀 코드를 세팅하고, 태스크(243)에서 APM 호출 코드로 복귀한다.At task 247, the supervisor routine determines if the inactivity stop timer has expired. If the fraction that has elapsed since the last user activity is equal to or greater than the inactivity suspend timeout value, the supervisor routine at task 248 sets a suspend request APM return code and returns to APM at task 243. As described with reference to task 226, in response to the set abort request APM return code, the APM performs any necessary system operation and invokes the abort routine. The stop routine is described in more detail with reference to FIG. 10 and, in summary, causes the system 10 to exit the normal operating state 150 and enter the suspended state 154. As described with reference to task 226, control may be returned to the supervisory routine from the stop routine, with or without stopping the system. On the other hand, if the inactivity stop timer has not expired, the supervisor routine at task 242 sets an eventless APM return code and returns to APM call code at task 243.

비록 대부분의 경우에 무 이벤트 APM 복귀 코드가 APM으로 복귀되지만, 다른 각종 이벤트들이 APM으로 복귀될 수 있다. 그러나, 각 APM 획득-이벤트에 대해 단지 하나의 APM 복귀 코드가 특정될 수 있다. 예를 들면, 대기 상태(152)에 진입한 후, 무 이벤트가 APM에 복귀된다. 중지 상태(154)를 벗어난 후에, 정상 중지(Normal Suspend) APM 복귀 코드가 APM에 복귀된다. APM에 대해 큐잉된(queuend) 특정 메시지는 컴퓨터 시스템의 정확한 특성(nature)에 의존한다. 또한,감독 루틴은 정상 재개(Normal Resume) 복귀 코드 혹은 중지 재개 APM 복귀 코드를 복귀한다.Although in most cases an eventless APM return code is returned to the APM, other various events may be returned to the APM. However, only one APM return code can be specified for each APM get-event. For example, after entering the standby state 152, no events are returned to the APM. After leaving the suspend state 154, the Normal Suspend APM return code is returned to APM. The particular message queued for APM depends on the exact nature of the computer system. Also, the supervision routine returns a normal resume return code or a pause resume APM return code.

제 9B 도를 참조하면, APM 최종 요구 루틴(APM Working on Last Request routine)은 태스크(961)에서 시작되는 것으로 도시되어 있다. APM 작업 최종 요구(APM Working on Last Request)가 발생된 것에 응답하여, BIOS APM 루틴은 태스크(962)에서 마이크로제어기(U2)내 고장 안전 타이머와 APM 고장-중지 타이머를 시작시키고, 태스크(963)에서 15초 중지 보류 타이머를 재시작시켜 시스템이 지속에 대해 적절히 준비를 하길 OS APM이 기다리는 동안 임계 중지 요구가 발생하는 것을 방지하며, 태스크(964)에서 복귀한다.Referring to FIG. 9B, an APM Working on Last Request routine is shown as starting at task 961. In response to the APM Working on Last Request, the BIOS APM routine initiates a fail safety timer and an APM fail-stop timer in the microcontroller U2 at task 962 and generates a task 963. Restarts the 15 second suspend hold timer to prevent a critical suspend request from occurring while the OS APM is waiting for the system to properly prepare for persistence, and returns from task 964.

제 9C 도를 참조하면, APM 거절 최종 요구 루틴(APM Reject Last Request Routine)은 태스크(965)에서 시작되는 것으로 도시되어 있다. APM 거절 최종 요구가 발생된 것에 응답하여, BIOS APM 루틴은 태스크(966)에서 마이크로제어기(U2)의 고장 안전 타이머와 APM 고장 중지 타이머를 재시작시키고, 태스크(967)에서 임계중지 플래그를 세트하여 즉시 중지 루틴을 강제하고, 태스크(968)에서 복귀한다.Referring to FIG. 9C, the APM Reject Last Request Routine is shown as starting at task 965. In FIG. In response to the APM rejection final request being generated, the BIOS APM routine restarts the microcontroller U2's failsafe timer and APM fail stop timer at task 966, and immediately sets a stop flag at task 967. Force a stop routine and return from task 968.

파워-업 및 재개 루틴은 중지 루틴을 이해함으로써 잘 이해될 것이다. 따라서, APM BIOS 루틴의 설명은 다음의 순서에 입각할 때 가장 명확하게 이해된다.Power-up and resume routines will be well understood by understanding the stop routine. Therefore, the description of the APM BIOS routine is most clearly understood based on the following sequence.

본 발명의 파워-업 루틴의 일반적인 개요(제 8 도), 감독 루틴의 세부 사항(제 9도), 본 발명의 중지 루틴(제 10 도), 본 발명의 파워-업 프로세스의 세부사항(제 11 도), 본 발명의 재개 루틴의 세부 사항(제 12 도), 보관 CPU 상태 루틴의 세부사항(제 13 도), CPU 상태 회복 루틴의 세부 사항(제 14 도), 그리고, 보관 8259상태 루틴의 세부 사항(제 15 도).General overview of the power-up routine of the present invention (FIG. 8), details of the supervision routine (FIG. 9), suspending routine of the present invention (FIG. 10), details of the power-up process of the present invention (FIG. 11), details of the resume routine of the present invention (FIG. 12), details of the stored CPU state routine (FIG. 13), details of the CPU state recovery routine (FIG. 14), and the storage 8259 state routine. Details of (figure 15).

대부분의 루틴이 다른 루틴과 상호 작용하고 중지/재개 프로세스는 이어지는 사이클이므로, 본 발명의 컴퓨터 시스템(10)설명이 다소 순환적(circular)이지만,부트 루틴(제 11 도) 혹은 재개 루틴(제 12 도)전에 중지 루틴(제 10 도)을 설명하는 것이 가장 도움이 될 것이다. 이제 제 10 도를 참조하면, 중지 루틴의 흐름도가 도시되어 있다. 정상 부트 루틴(204-210) 혹은 재개 부트 루틴(214-220)이 실행된 후, 컴퓨터 시스템(10)은 정상 동작 상태에 있게 됨을 상기하라. 더우기, 제8 도를 참조하여 설명한 바와 같이, 컴퓨터 시스템이 정상적으로 부팅(204-210)되든지 혹은 재개-부팅(214-220)되든지 간에 이러한 부트 루틴이 끝나면, APM OS드라이버는 제 8 도에 도시된 감독 루틴과 같은 APM BIOS 루틴을 인식한다. 그 결과, APM은 대략 매초마다 감독 루틴을 폴링(Polling)한다.Since most routines interact with other routines and the suspend / resume process is a cycle that follows, although the description of the computer system 10 of the present invention is somewhat circular, a boot routine (FIG. 11) or a resume routine (Twelfth) It would be most helpful to describe the stop routine (FIG. 10) before FIG. Referring now to FIG. 10, a flow diagram of a stop routine is shown. Recall that after normal boot routine 204-210 or resume boot routine 214-220 is executed, computer system 10 is in a normal operating state. Moreover, as described with reference to FIG. 8, once this boot routine is over, whether the computer system is normally booted (204-210) or resume-boot (214-220), the APM OS driver is shown in FIG. Recognizes APM BIOS routines such as supervision routines. As a result, the APM polls the supervision routine approximately every second.

제 10 도에는 태스크(250)에서 시작하는 중지 루틴이 도시되어 있다. 중지루틴은, 감독 루틴이 중지 요구 APM 복귀 코드를 APM에 복귀하는 것에 응답하여, APM에 의해 호출된다. 또한, 중지 루틴은 제 17 도 및 제 18 도를 참조하여 보다 상세히 기술되는 바와 같이 시스템이 체크 포인트(Checkpoint)를 수행할 때 호출되어 특정하게 실행된다. 먼저, 중지 루틴의 흐름은 태스크(970)에서 CPU(40)가 SMI를 갖는 S 부분(S part)인지의 여부에 좌우된다. 그렇다면, CPU(40)는 태스크(972)에서 마이크로제어기(U2)로 하여금 SMI를 CPU(40)로 되발생시키도록 한다. SMI에 응답하여, CPU(40)내의 마이크로 코드는 태스크(974)에서 당업자에게 잘 알려진 바와 같이 CPU(40)의 상태를 세그먼트 E000H 데이타 구조에 보관한다.10 illustrates a stop routine starting at task 250. The abort routine is called by the APM in response to the supervisor routine returning the abort request APM return code to the APM. The stop routine is also called and specifically executed when the system performs a checkpoint as described in more detail with reference to FIGS. 17 and 18. First, the flow of the pause routine depends on whether the CPU 40 in task 970 is an S part with SMI. If so, the CPU 40 causes the microcontroller U2 to regenerate the SMI to the CPU 40 at task 972. In response to the SMI, the microcode within the CPU 40 stores the state of the CPU 40 in the segment E000H data structure, as is well known to those skilled in the art at task 974.

다른 한편, CPU(40)가 SMI를 갖는 S 부분이 아니라면, 태스크(252)에서 도시된 바와 같이 보관 CPU 상태 루틴이 호출된다. 보관 CPU 상태 루틴은 제 13 도를 참조하여 보다 상세히 기술될 것이다. 이 시점에서 다음과 같은 사항을 주지하면 족하다. 즉, 중지 루틴이 최초로 호출될 때 CPU(40)가 어느 모드에 있었는 가에 상관없이, 중지 루틴의 나머지(remainder)는 CPU(40)에서 실모드(Real Mode)로 실행될 것이므로, 허용된 어드레스 공간의 범위를 넘어선 인스트럭션의 실행을 시도하거나 혹은 특권 인스트럭션(priviledged instruction) 실행을 시도함으로써 발생할 수 있는 에러 발생의 염려없이 실행될 수 있다.On the other hand, if the CPU 40 is not the S portion with SMI, the archive CPU state routine is called as shown in task 252. The storage CPU state routine will be described in more detail with reference to FIG. At this point, note the following: That is, regardless of which mode the CPU 40 was in when the stop routine was first called, the remainder of the stop routine will run in real mode on the CPU 40, thus allowing for an allowed address space. It can be executed without fear of an error that may occur by attempting to execute an instruction beyond the scope of, or by attempting to execute a privileged instruction.

태스크(253)에서, 보관 CPU 상태 루틴은 독특한 방식으로 프로그램 제어를 중지 루틴으로 복귀한다. 보관 CPU 상태 루틴으로부터 중지 루틴으로의 복귀는 CPU를 리세트시키는 것을 포함하며, 제 13 도의 태스크(630 및 632)을 참조하여 보다 상세히 기술될 것이다. 중지 루틴에 관한 중요한 사항은 CPU 레지스터가 세그먼트 E000H 데이타 구조에 기록되고 CPU(40)는 이제 실모드라는 것이다.At task 253, the storage CPU state routine returns the program control to the stop routine in a unique manner. Returning from the save CPU state routine to the stop routine includes resetting the CPU, which will be described in more detail with reference to tasks 630 and 632 of FIG. The important thing about the pause routine is that the CPU registers are written to the segment E000H data structure and the CPU 40 is now in real mode.

보관 CPU 상태 루틴이 복귀한 후 혹은 CPU가 SMI에 응답하여 자신의 상태를 보관한 후, 태스크(254)에서 중지 루틴은 스위치(21)가 눌러졌는지를 확인한다.After the save CPU state routine returns or after the CPU saves its state in response to SMI, at task 254 the stop routine checks whether the switch 21 has been pressed.

스위치(21)의 패쇄는 제 6 내지 7 도를 참조하여 설명한 바와 같이 테스트된다.The closure of the switch 21 is tested as described with reference to FIGS.

요는, 스위치(21)가 눌러졌으면, 전력 관리 포트는, 판독되는 경우, FEH를 복귀한다는 것이다. 스위치가 눌러지지 않은 경우, 진행중인 중지는 소프트웨어-중지이며, 소프트웨어-중지 플래그가 CMOS NVRAM(96)내에 세트된다. 이는 소프트웨어 중지과 스위치 패쇄로 개시되는 하드웨어 중지를 혼동치 않게 해준다. 모든 소프트웨어-중지는 마이크로제어기(U2)내의 하나의 비트를 세트하여 변환된다. 소프트웨어 중지를 하드웨어 중지로 변환한 후에 스위치를 패쇄하면 중지의 포기를 초래한다.The key is that if the switch 21 is pressed, the power management port will return the FEH when it is read. If the switch is not pressed, the ongoing stop is software-stop and a software-stop flag is set in the CMOS NVRAM 96. This avoids confusing the software stop with the hardware stop initiated by the switch closure. All software-stops are converted by setting one bit in the microcontroller U2. Closing the switch after converting a software halt to a hardware halt causes abandonment of the halt.

다음 태스크(262)에 도시되었듯이 스택을 설정하는 것이다.The next step is to set up the stack, as shown in task 262.

중지 루틴에 스택을 설정한 후, 태스크(264)에서 DMA 제어기(72), 디스켓 어댑터(84) 및 IDE 디스크 제어기(86)를 조사하여, DMA 전송, 플로피 드라이브 전송,혹은 하드화일 전송이 현재 진행중인지를 판단한다. 만약 진행중이면, 이들 세 가지 유형의 전송의 독특한 특성으로 인해 만족스런 중지가 수행될 수 없다. 예를들면, 하드 드라이브로부터 하드파일 전송이 진행중이라면, 이 데이타는 IDE 제어기에 의해 벌써 판독되었으나 아직 시스템 메모리(53)로 전송되지는 않았다. 이데이타는 CPU에 의해 적절히 액세스될 수 없으므로, 시스템이 하드파일 판독 중간에 중지될 때 이 데이타는 상실될 가능성이 있다. 따라서, 이들 세 가지 유형의 전송중의 어느 하나가 진행중이면, 중지는 다음 APM 획득-이벤트 때까지 연기되는 데, 이때는 DMA 제어기와 디스켓 제어기의 활동이 한 번 더 테스트된다.After setting up the stack in the suspend routine, task 264 examines the DMA controller 72, diskette adapter 84, and IDE disk controller 86, where DMA transfers, floppy drive transfers, or hard file transfers are currently in progress. Judge. If in progress, satisfactory suspension cannot be performed due to the unique nature of these three types of transmissions. For example, if a hard file transfer from a hard drive is in progress, this data has already been read by the IDE controller but has not yet been transferred to system memory 53. Since this data cannot be properly accessed by the CPU, it is likely that this data will be lost when the system is stopped in the middle of a hard file read. Thus, if any of these three types of transmissions are in progress, the suspension is postponed until the next APM acquisition-event, in which the activity of the DMA controller and diskette controller is tested once more.

결과적으로, 제어가 다시 APM으로 돌아갈 수 있도록 태스크(252,260 및 262)에서 수행된 태스크는 역으로 되돌려져야 한다. 먼저 태스크(265)에서, BIOS는 판독/기록에서 판독-전용으로 변경된다. 이는 여전히 섀도우된 데이타를 포함하는 세그먼트 E000H를 패쇄함으로써 성취된다. 태스크(262)에서 생성된 스택(stack)이 팝(pop)되어 회복된다. 마지막으로, 태스크(266)에서는 CPU 상태 회복루틴에서 CPU 상태를 회복한 후, 작업(267)에서 제어를 APM으로 복귀한다. 중지루틴은 다음 획득-이벤트동안 대략 일초(another second)후에 APM에 의해 다시 폴링(Polling)될 것이다. 그 시점에서, 중지 처리를 불가능하게 했던 전송(들)은 아마도 완료되었을 것이며, 따라서 중지가 계속될 수 있을 것이다.As a result, the task performed in tasks 252, 260 and 262 must be reversed so that control can be returned to APM again. First at task 265, the BIOS is changed from read / write to read-only. This is accomplished by closing the segment E000H which still contains the shadowed data. The stack created in task 262 is popped and recovered. Finally, at task 266, the CPU state recovery routine recovers the CPU state, and then at operation 267, control returns to APM. The abort routine will be polled again by the APM after approximately another second during the next acquisition-event. At that point, the transfer (s) that made the suspend process impossible may have been completed, and so the suspend may continue.

이제 태스크(264)를 다시 참조하면, 현재 진행중인 DMA 전송, 플로피 드라이브전송, 혹은 하드파일 전송이 없다면, 중지가 수행될 수 있다. 중지 루틴은 태스크(268)에서 계속된다. 고장 안전 타이머는 계속하여 감소되며 스위치(21)가 오프/해제 상태일 때 만료되면 시스템이 스스로 턴오프되도록 야기함을 상기하라.Referring now to task 264 again, if there is no DMA transfer, floppy drive transfer, or hard file transfer currently in progress, the abort may be performed. The pause routine continues at task 268. Recall that the fail-safe timer continues to decrease and causes the system to turn off on its own when it expires when the switch 21 is in the off / off state.

따라서, 제 6 도를 참조하여 설명한 바와 같이, 태스크(268)에서, 첫 작업은 고장안전 타이머를 리세트하는 것이다.Thus, as described with reference to FIG. 6, in task 268, the first task is to reset the failsafe timer.

다음, 태스크(270)에서 8042 코프로세서(104)의 상태가 보관된다. 8042 코프로세서(104)의 레지스터들은 본 기술 분야에서 잘 알려져 있다. 이 레지스터들은 CPU(40)에 의해 직접 액세스될 수 있으며, 이들 값은 E000H 내의 데이터 구조에 직접 기록된다.Next, the state of the 8042 coprocessor 104 is stored in task 270. Registers of the 8042 coprocessor 104 are well known in the art. These registers can be accessed directly by the CPU 40, and these values are written directly to the data structure in E000H.

다음, 태스크(272)에서는 8259 인터럽트 제어기(92)의 상태를 보관한다. 중지 루틴은 8259 보관 상태 루틴을 호출하는데, 이는 제 15 도를 참조하여 상세히기술될 것이다. 이 시점에서는 8259 보관 상태 루틴은 두개의 8259 인터럽트 제어기(92)의(비록 몇몇 레지스터들은 기록-전용일 수 있으나) 미지의 레지스터들의 내용을 확인한다는 것을 인식하는 것으로 충분하다. 이들 레지스터의 값은 E000H의 데이타 구조내로 직접 기록된다.Next, task 272 holds the state of 8259 interrupt controller 92. The abort routine calls the 8259 stored state routine, which will be described in detail with reference to FIG. At this point, it is sufficient to recognize that the 8259 archive state routine verifies the contents of the unknown registers of the two 8259 interrupt controllers 92 (although some registers may be write-only). The values of these registers are written directly into the data structure of E000H.

인터럽트 제어기(92)의 상태가 보관된 후, 인터럽트 제어기(92)의 구성은 기지의 상태(known state)로 변하여, 중지 루틴이 실행하는 각종 인터럽트-구동 태스크(interrupt-driven tasks)이 적절하게 동작하도록 하여야 한다. 따라서, 태스크(274)에서 BIOS 데이타 영역 및 벡터 테이블이 교환(swap)된다. 중지 루틴은 세그먼트 0000H내의 현재-상태(present-state) BIOS 데이타 영역 및 벡터 테이블의 내용을 세그먼트 E000H내의 하나의 위치로 복사한다. 다음, 세그먼트 E000H내의 데이타 구조로부터의 기지-상태 BIOS 데이타 영역 및 벡터 테이블의 내용은 세그먼트0000H내의 위치에 복사한다. 기지-상태 BIOS 데이타 영역 및 벡터 테이블은 후술하는 제 11 도 부트-업 루틴의 태스크(414)에서 세그먼트 E000H내에 복사된다.After the state of the interrupt controller 92 is stored, the configuration of the interrupt controller 92 changes to a known state so that various interrupt-driven tasks executed by the interrupt routine operate properly. It should be done. Thus, at task 274 the BIOS data area and the vector table are swapped. The suspend routine copies the contents of the present-state BIOS data area and vector table in segment 0000H to one location in segment E000H. Next, the contents of the known-state BIOS data area and the vector table from the data structure in segment E000H are copied to the position in segment 0000H. The known-state BIOS data area and vector table are copied into segment E000H in task 414 of the FIG. 11 boot-up routine described below.

마지막으로, 현재-상태 BIOS 데이타 영역 및 벡터 테이블은 세그먼트 0000H로부터 세그먼트 E000H내의 데이타 구조로 복사된다. 태스크(274)에서의 루틴이 끝나면,인터럽트 13H(디스크 판독/기록)과 인터럽트 10H(비디오 액세스)와 같은 모든 인터럽트는 예상내로 기능할 것이다.Finally, the current-state BIOS data area and vector table are copied from segment 0000H into the data structure in segment E000H. At the end of the routine at task 274, all interrupts such as interrupt 13H (disk read / write) and interrupt 10H (video access) will function as expected.

다음, 태스크(276)에서 타이머(102)의 상태가 저장된다. 타이머의 레지스터는 본 기술 분야에서 잘 알려져 있다. CPU(40)는 모든 레지스터를 직접 판독할 수 있으며, 판독된 레지스터값을 직접 E000H내의 데이타 구조로 기록한다. 태스크(276)에서, 또한, IDE 디스크 제어기(86)의 상태가 저장된다. IDE 디스크 제어기(86) 레지스터는 본 기술 분야에서 잘 알려져 있다. CPU(40)는 모든 레지스터를 직접판독할 수 있으며, 이 판독된 값들을 E000H내의 데이타 구조에 직접 기록한다.Next, at task 276 the state of timer 102 is stored. Registers of timers are well known in the art. The CPU 40 can read all the registers directly, and writes the read register values directly into the data structure in E000H. At task 276, the state of IDE disk controller 86 is also stored. IDE disk controller 86 registers are well known in the art. The CPU 40 can read all the registers directly, and write these read values directly into the data structure in E000H.

다음 단계는 시스템 메모리를 하드 드라이브(31)상의 중지 화일에 기록하기 위해 준비하는 것이다. 시스템 메모리는(주 메모리와 확장 메모리를 포함하는)시스템 RAM(53) 및 비디오 메모리(58)를 구비하고 있다. 이때, RAM(53)의 일부는 외부 캐시(external cache)(60)에 있을 수 있다. 태스크(628)에서 CPU 캐시는 플러시(flush)되었는데, 이는 제 13 도를 참조하여 기술될 것이다. 다음, 태스크(286)에서 외부 캐시가 플러시되고, 하드 드라이브(31)로의 기록을 신속하게 하기 위해 인에이블된다.The next step is to prepare the system memory for writing to a pause file on the hard drive 31. The system memory has a system RAM 53 (including main memory and extended memory) and a video memory 58. At this time, part of the RAM 53 may be in an external cache 60. In task 628 the CPU cache was flushed, which will be described with reference to FIG. Next, at task 286 the external cache is flushed and enabled to expedite writing to hard drive 31.

시스템(10)상에서 실행되는 코드는 IDE 제어기(86)를 미지의 상태로 둘 수가 있다. 따라서, 다음 단계는 태스크(292)에서 IDE 제어기(86)를 기지의 상태로 초기화한다. 이는 IDE 제어기(86)내의 레지스터들에 값들을 직접 기록함으로씨 성취된다.Code running on system 10 may leave IDE controller 86 unknown. Thus, the next step is to initialize IDE controller 86 to a known state in task 292. This is accomplished by writing the values directly into the registers in the IDE controller 86.

다음, 임의의 모뎀의 상태를 판독하여 E000H 데이타 구조로 보관하기 위해 인터럽트 구동 병렬 스레드(interrupt-driven parallel thread)가 태스크(976)에서 시작된다. 이 루틴은 특정 모뎀과 연관된 COMM 포트에 대응하는 인터럽트를 검출하고, 모뎀에 커맨드를 송신하여 모뎀이 자신의 레지스터의 내용을 다시 순차적으로 송신하도록 시키고, 모뎀으로부터 레지스터 내용 송신을 수신하며, 레지스터 값을 E000H 데이타 구조에 보관한다. 이 루틴은 모뎀으로 제 1 커맨드를 송신한 후, 인터럽트 구동 방식으로 응답하여 모뎀의 레지스터가 모두 보관될 때까지, 각각의 COMM 포트 인터럽트에 응답하여 모뎀의 응답을 수신하고, 다음 커맨드를 모뎀으로 송신한다. 병렬 스레트로서 실행되지 않으면, 이러한 루틴은 시스템을 중지시키는 데 걸리는 시간에 수초(특정 모뎀 및 현 보드 속도(current baud rate)에 따라 모뎀당 3-5초)를 더할 수 있다. 인터럽트 구동 병렬 스레드는, 시스템 상태가 하드드라이브(31)에 기록되기 전에 실행을 완료하면, 시스템 중지에 소요되는 시간에 거의 또는 전혀 시간을 더하지 않는다.Next, an interrupt-driven parallel thread is started at task 976 to read the state of any modem and store it in the E000H data structure. This routine detects the interrupt corresponding to the COMM port associated with a particular modem, sends a command to the modem to cause the modem to resequentially send the contents of its register, receives a register contents transmission from the modem, and registers the register value. Store in E000H data structure. This routine sends the first command to the modem, responds in an interrupt-driven manner, receives the modem's response in response to each COMM port interrupt until all of its modem registers are stored, and sends the next command to the modem. do. If not run as a parallel thread, this routine can add several seconds (3-5 seconds per modem, depending on the specific modem and current baud rate) to the time it takes to shut down the system. The interrupt driven parallel thread adds little or no time to the time it takes to halt the system if it completes execution before the system state is written to the hard drive 31.

인터럽트 구동 병렬 스레드 모뎀 보관 루틴이 개시된 후, 태스크(294)에서 중지 화일은 하드 드라이브(31)내의 고정 디스크상에서 위치되어야 한다. 중지 화일의 헤드, 섹터, 및 실린더는 CMOS 메모리(96)에 저장된다. 일단 중지 화일의 위치가 정해지면, 화일 크기, 서명(signature)이 판독된다. 바람직한 실시예에서, 서명은 임의 길이의 ASCII 코드로 중지 화일의 존재를 나타낸다. 서명 구현을 위한 다른 대안으로서 하드 화일 시스템상에서 임의로 발견될 확률이 매우 낮은 이진스트링(binary string)을 사용하는 것 등이 가능하다.After the interrupt driven parallel thread modem storage routine is initiated, at task 294 the pause file must be located on a fixed disk in hard drive 31. The heads, sectors, and cylinders of the pause file are stored in the CMOS memory 96. Once the pause file is located, the file size, signature is read. In a preferred embodiment, the signature indicates the presence of a pause file in any length ASCII code. Another alternative for implementing a signature is to use a binary string that is very unlikely to be randomly found on a hard file system.

중지 화일의 화일크기 및 서명을 판독한 후, 다음 단계는 태스크(296)에서 서명 및 파일 크기가 올바른지를 확인하는 것이다. 서명이 달라서 다른 프로그램이 중지 화일을 수정하였음을 나타내거나 혹은 화일 크기가 달라서 중지 화일 크기가 수정되었다는 것을 나타낸다면, 태스크(298)에서, 중지 루틴은 제 13 도의 작업(652)에서 개시되는 치명적 중지 에러 루틴(Fatal Suspend Error Routine)을 호출한다. 치명적 중지 에러 루틴을 벗어나기 위해 사용자가 스위치(17)를 누르던, 프로그램은 태스크(299)에서 태스크(506)로 점프한다.After reading the file size and signature of the pause file, the next step is to verify in task 296 that the signature and file size are correct. If the signature is different to indicate that another program has modified the pause file, or if the file size is different to indicate that the pause file size has been modified, then at task 298, the pause routine initiates a fatal stop initiated at task 652 of FIG. Call the Fatal Suspend Error Routine. The program jumps from task 299 to task 506, where the user presses switch 17 to exit the fatal stop error routine.

반면에, 서명이 올바르고 중지 화일이 충분히 크다면, 중지 루틴은 컴퓨터시스템의 상태를 메모리에 기록하는 것을 속행할 수 있다.On the other hand, if the signature is correct and the suspend file is large enough, the suspend routine may continue to write the state of the computer system to memory.

컴퓨터 시스템(10)의 상태를 하드 드라이브(긴)에 기록하기 전에, CPU(40)는 태스크(296)에서 마이크로제어기(U2)에 지시하여 고장 안전 타이머(C2)를 재시작(리세트)시키도록 하고, 마이크로제어기(U2)에 질의하여 스위치(21)가 다시 눌러졌는지 판정한다. 스위치(21)가 다시 눌러지지 않았으면, 중지는 속행되어야 한다.Before recording the state of the computer system 10 to the hard drive (long), the CPU 40 instructs the microcontroller U2 at task 296 to restart (reset) the failsafe timer C2. Then, the microcontroller U2 is queried to determine whether the switch 21 is pressed again. If the switch 21 is not pressed again, the stop must be continued.

반면에, 스위치(21)는 다시 눌러졌으면, 중지는 포기된다. 중지 루틴내 다수의 지점(points)에서 스위치(21)의 패쇄에 대한 테스트가 행해진다. 태스크(297)는 단지 예시적인 것이다. 적용가능한 기술 분야의 통상의 회로 설계자라면, 고장 안전타이머의 재시작 사이의 횟수 및 허용가능한 시간을 결정할 수 있을 것이다. 중지루틴은 고장 안전 타이머가 만료하여 마이크로제어기(U2)에 의해 전원(17)이 턴-오프 되기 전에, 고장 안전 타이머를 리세트하여야 한다. 마찬가지로, 스위치(21)는 때때로 체크되어야 한다. 스위치(21)가 다시 눌려지는 경우, 사용자가 중지를 포기하기를 원한다는 것을 나타내는 것이므로, 코드는 재개 루틴내 적절한 지점으로 점프하여 중지 루틴에 의해 이미 중지된 것을 중지 해제(un-suspend)시키고, 이러한 부분적인 중지로부터 회복한다.On the other hand, if the switch 21 is pressed again, the pause is abandoned. A test is made for the closure of the switch 21 at a number of points in the pause routine. Task 297 is merely illustrative. One of ordinary skill in the art of applicable art will be able to determine the number of times and the allowable time between restarts of the failsafe timer. The stop routine must reset the fail safe timer before the fail safe timer expires and the power supply 17 is turned off by the microcontroller U2. Likewise, switch 21 should be checked from time to time. When the switch 21 is pressed again, it indicates that the user wants to give up the stop, so the code jumps to the appropriate point in the resume routine to un-suspend what has already been stopped by the stop routine. Recover from partial suspension

유사하게, 태스크(350)에서 Ctrl-Alt-Del의 키 동작은 중지를 포기(abort)한다. Ctr1-Alt-Del키를 누르는 것은(즉, Ctrl 키, Alt 키 및 Delete 키를 동시에 누르는 것은), IBM BIOS 및 인텔 80X86 CPU 계열에 기초한 전형적인 컴퓨터 시스템을 리세트시키는 잘 알려진 방법이다. 본 기술 분야에서 잘 알려져 있는 바와 같이, 컴퓨터 시스템(10)은 BIOS 인터럽트 1 처리기(BIOS interrupt 1 handler)로 Ctr1-Alt-De1을 관리한다. 컴퓨터 시스템(10)은 태스크(350)에서 다소 변형된 인터럽트 1 처리기를 구비하여, 태스크(352)에서 CMOS 메모리(96)내의 중지 플래그를 클리어한 다음, 태스크(354)에서 리세트된 부트-업 루틴으로 점프한다.Similarly, the key operation of Ctrl-Alt-Del at task 350 aborts abort. Pressing the Ctr1-Alt-Del keys (ie, pressing the Ctrl, Alt and Delete keys simultaneously) is a well-known way to reset a typical computer system based on the IBM BIOS and the Intel 80X86 CPU family. As is well known in the art, the computer system 10 manages Ctr1-Alt-De1 with a BIOS interrupt 1 handler. Computer system 10 includes a slightly modified interrupt 1 processor at task 350 to clear the suspend flag in CMOS memory 96 at task 352 and then to reset the boot-up at task 354. Jump to the routine

본 발명의 컴퓨터 시스템(10)에서, 중지 루틴이 실행되는 동안 Ctrl-Alt-Del을 누르면 컴퓨터 시스템(10)이 오프 상태(156)로 진입토록 한다. 이는, 스위치(21)가 폐쇄된 후 Ctrl-Alt-Del을 누르면 부트-업 루틴이 호출되고, 부트-업 루틴은 마이크로제어기(U2)를 고장 안전 타이머가 만료되었고 스위치는 아직 오프/해제상태에 있는 상태로 초기화하기 때문에, 발생한다. 따라서, 중지 루틴에 있는 동안 Ctrl-Alt-Del을 누르면, 컴퓨터 시스템(10)은 오프 상태(156)로 진입하게 된다. 이제 태스크(300)를 참조하면, 중지 화일은 하드 드라이브(31)상에서 다시위치된다. 태스크(300)에서 서명구(signature phrase)는 중지 화일의 제 1 바이트에 기록된다. 다음, 태스크(302)에서 세그먼트 E000H내의 전체 64 킬로바이트 데이타가 중지 화일에 기록된다. E000H의 이러한 64K 복사는 실질적으로 장소 유지기(place holder)로서 기능하며, 중지 루틴 종료시 동일한 장소로 재기록될 것이다.In the computer system 10 of the present invention, pressing Ctrl-Alt-Del while the pause routine is executing causes the computer system 10 to enter the off state 156. This means that pressing Ctrl-Alt-Del after the switch 21 is closed will invoke the boot-up routine, which will cause the microcontroller U2 to fail and the fail-safe timer has expired and the switch is still off / off. Occurs because it is initialized to Thus, pressing Ctrl-Alt-Del while in the pause routine causes the computer system 10 to enter the off state 156. Referring now to task 300, the pause file is repositioned on hard drive 31. In task 300, the signature phrase is written to the first byte of the pause file. Next, at task 302, the entire 64 kilobytes of data in segment E000H are written to the pause file. This 64K copy of the E000H will substantially function as a place holder and will be rewritten to the same place at the end of the pause routine.

그 다음, 태스크(303)에서 비디오 제어기(56)의 상태가 보관된다. 비디오제어기(56) 레지스터는 본 기술 분야에서 잘 알려져 있다. 모든 레지스터는 CPU(40)에 의해 직접 판독가능하며, 이들의 값은 E000H내의 데이타 구조로 직접 기록된다.The state of video controller 56 is then stored at task 303. Video controller 56 registers are well known in the art. All registers are directly readable by the CPU 40, and their values are written directly to the data structure in E000H.

그 다음, 시스템 메모리가 중지 화일에 기록된다. 이것은 트윈-버퍼 시스템(twin-buffer system)이 시스템 메모리로부터 데이타를 판독하고, 이 데이타를 압축(compress)하고 세그먼트 E000H에기록한후, 마지막으로, 세그먼트E000H로부터압축된 데이타를 중지 화일에 기록함으로써 성취된다. 두 개의 루틴들이 시분할 장치(time-multiplexed arrangement)내에서 동작한다. 하나는 데이타를 압축하여 세그먼트 C000H에 기록하며, 나머지 하나는 중지 화일에 기록한다. 전자는 포어그라운드(foreground)에서 실행되고, 후자는 백그라운트(background)에서 실행되는 인터럽트-구동 루틴이다. 분명히, 단지 하나의 CPU(40)만 있으므로 단지 하나의 루틴만이 주어진 시간내에 실행가능하다. 그러나, 후자의 루틴은 인터럽트-구동 방식이므로 중지 화일의 데이타 전송 속도를 최적화하기 위한 필요에 따라 전자의 루틴의 실행을 인터럽트할 수 있다. 두 개의 버퍼는 각각 8 킬로바이트 길이로, 이길이는 하드 드라이브(31)로의 전송 시간을 최적화한다고 생각된다.Then, the system memory is written to the pause file. This is accomplished by a twin-buffer system reading data from system memory, compressing the data and writing it to segment E000H, and finally writing the data compressed from segment E000H to the pause file. do. Two routines operate in a time-multiplexed arrangement. One compresses the data and writes it to segment C000H. The other writes to the pause file. The former is an interrupt-driven routine that runs in the foreground and the latter runs in the background. Obviously, there is only one CPU 40 so only one routine is executable within a given time. However, since the latter routine is an interrupt-driven scheme, it is possible to interrupt the execution of the former routine as needed to optimize the data transfer speed of the pause file. The two buffers are each 8 kilobytes long, and the length is thought to optimize the transfer time to the hard drive 31.

이 프로세스는 태스크(304)에서 개시되며, 데이타를 판독 및 압축후, 8K 버퍼의 시작부를 채우기에 충분한 데이타를 세그먼트 E000H에 기록한다. 데이타는 연속 길이 인코딩 방법(run length encoding method)을 사용하여 압축된다. 그러나, 다른 적절한 압축 방법이 사용될 수도 있다. 이때, 태스크(307)에 도시된 버퍼로부터의 기록 루틴(Write from Buffer Routine)이 개시된다. 버퍼로부터의 기록 루틴(307)은 인터럽트-구동 루틴으로서, 백그타운드에서 실행되며 태스크(308-310)로 구성된다. 태스크(311)로 표시된 압축 루틴(Compression Routine)은 태스크(312-318)로 구성되며 포어그라운드 루틴이다. 먼저, 태스크(308)에서 버퍼로부터의 기록 루틴(307)은 태스크(304)에 의해 이제 막워 버퍼 중지 파일에 기록한다. 버퍼로부터의 기록 루틴(307) 버퍼 내용을 중지 파일에 기록This process begins at task 304, after reading and compressing data, writes enough data to segment E000H to fill the beginning of the 8K buffer. The data is compressed using a run length encoding method. However, other suitable compression methods may be used. At this time, the write routine from the buffer shown in task 307 is started. The write routine 307 from the buffer is an interrupt-driven routine that runs in the backtown and consists of tasks 308-310. The compression routine represented by task 311 consists of tasks 312-318 and is a foreground routine. First, the write routine 307 from the buffer at task 308 is now blocked by task 304 to write to the buffer stop file. Write routine from buffer 307 Write buffer contents to stop file

하는 동안, 태스크(312)에서 압축 루틴(311)은 시스템 메모리로부터 다음 바이트를 계속 판독하여 압축한 후, 이 압축된 데이타를 이 두 개의 8K 버퍼중 나머지 한 쪽의 버퍼에 기록한다. 일단 압축 루틴(311)이 버퍼를 압축된 데이타로 채우면, 다음 단계인 태스크(314)에서는 전체 시스템 메모리가 압축되었는지의 여부를 판단한다.In the meantime, at task 312, the compression routine 311 continues to read and compress the next byte from system memory, and then writes this compressed data to the other of these two 8K buffers. Once the compression routine 311 fills the buffer with compressed data, the next step, task 314, determines whether the entire system memory has been compressed.

IDE 제어기(86)는 데이타를 하드 드라이브(31)에 매우 신속하게 기록할 수는없다. 그 결과, 압축 루틴(311)은 버퍼로부터의 기록 루틴(Write from Buffer Routine)(307)이 버퍼를 하드 드라이브(81)에 기록하는 작업을 종료하기 전에, 하드드라이브(31)에 기록되고 있지 않는 8K 버퍼를 채우는 작업을 종료할 것이다.The IDE controller 86 cannot write data to the hard drive 31 very quickly. As a result, the compression routine 311 is not being written to the hard drive 31 before the write from buffer buffer 307 finishes writing the buffer to the hard drive 81. You will finish filling the 8K buffer.

따라서, 압축 루틴(311)은 버퍼로부터의 기록 루틴이 버퍼를 하드 드라이브(31)에 기록하는 것을 끝마치기를 기다려야만 한다. 압축 루틴(311)이 모든 시스템 메모리의 압축 및 기록을 종료하지 못한 경우, 압축 루틴(311)은 태스크(316)에서 버퍼로부터의 기록 루틴(307)을 대기한다. 압축 루틴(311) 및 버퍼로부터의 기록 루틴(307)은 플래그 세트(a set of flags)를 통해 통신한다. 버퍼로부터의 기록 루틴(307)이 현재의 버퍼를 중지 화일에 기록하는 것을 끝마치면, 이 루틴은 버퍼 플래그를 스위칭하여, 압축 루틴(307)이 중지 화일에 기록된 버퍼를 압축된 데이타로 채우기 시작할 수 있다는 것을 나타낸다. 다음, 태스크(297)을 참조하여 설명한바와 같이, 고장 안전 타이머 C2가 리세트되고 스위치(21)는 패쇄 이벤트(closure event)에 대하여 체크된다.Thus, the compression routine 311 must wait for the write routine from the buffer to finish writing the buffer to the hard drive 31. If the compression routine 311 fails to finish compressing and writing all system memory, the compression routine 311 waits for the write routine 307 from the buffer at task 316. The compression routine 311 and the write routine 307 from the buffer communicate via a set of flags. When the write routine 307 from the buffer finishes writing the current buffer to the pause file, the routine switches the buffer flag so that the compression routine 307 can begin filling the buffer written to the pause file with compressed data. Indicates that it can. Next, as described with reference to task 297, the failsafe timer C2 is reset and the switch 21 is checked for a closure event.

태스크(310)에서, 버퍼로의 기록 루틴(307)은 이제 막 중지 화일에 기록된 버퍼가 기록되어야 할 마지막 버퍼인지를 판단한다. 마지막 버퍼가 아닌 경우, 버퍼로부터의 기록 루틴은 압축 루틴(311)에 의해 채워진 버퍼를 중지 화일에 기록한다. 그 동안에, 압축 루틴(311)은 버퍼 플래그를 조사하여 버퍼가 압축된 시스템 메모리를 더 수신할 준비가 되었는지를 판단한다. 즉, 태스크(316)에서, 압축 루틴은 버퍼로부터의 기록 루틴이 현재의 버퍼를 끝마칠 때까지 기다린후, 태스크(312)에서 압축 루틴을 계속한다.In task 310, the write to buffer routine 307 now determines whether the buffer just written to the pause file is the last buffer to be written. If it is not the last buffer, the write routine from the buffer writes the buffer filled by the compression routine 311 to the pause file. In the meantime, the compression routine 311 examines the buffer flag to determine whether the buffer is ready to receive further compressed system memory. That is, at task 316, the compression routine waits until the write routine from the buffer finishes the current buffer and then continues with the compression routine at task 312.

유의할 것은 비디오 메모리(58)는 선형 프레임 버퍼링(linear frame buffering)이 지원되면 압축되나, VESA 페이지 액세스의 경우에는 압축되지 않는다는점이다. 대신, 앞서 보다 상세히 기술한 바과 같이, VESA 페이지 액세스 비디오 메모리는 VESA 호출을 이용하여 비디오 제어기(56)를 통해 판독되고, 트윈-버퍼시스템을 사용하여 압축없이 기록된다.Note that video memory 58 is compressed if linear frame buffering is supported, but not for VESA page access. Instead, as described in more detail above, the VESA page access video memory is read through video controller 56 using VESA calls and written without compression using a twin-buffer system.

일단 압축 루틴(311)이 모든 시스템 메모리의 압축을 끌마치면, 태스크(318)에서 버퍼로부터의 기록 루틴(307)이 마지막 버퍼를 중지 화일에 기록할 때까지 기다린다. 일단 버퍼로부터의 기록 루틴이 완료되면, 버퍼로부터의 기록 루틴은 태스크(310)에서 태스크(318)로 분기하여 사라진다. 이패, 어떠한 백그라운드 루틴도 실행되지 않고 있으며, 주 프로그램은 태스크(320)에서 계속된다.Once the compression routine 311 finishes compressing all system memory, it waits for the task 318 to write from the buffer to the write routine 307 to write the last buffer to the pause file. Once the write routine from the buffer is complete, the write routine from the buffer branches off from task 310 to task 318 and disappears. This background, no background routine is running, and the main program continues at task 320.

다음, 태스크(320)에서 DMA 장치(71)[DMA 제어기(72) 및 중앙 중재기(Central Arbiter)(82)], 82077 디스켓 제어기(84), RS-232 UART(94)의 상태가 저장된다. 이들 장치는 본 기술 분야에서 잘 알려진 레지스터를 구비한다. 디스켓제어기(84) 및 UART(94)내의 모든 레지스터들은 CPU(40)에 의해 직접 판독가능하고, 이 판독된 값들은 E000H내의 데이타 구조로 직접 기록된다. DMA장치는 판독가능한 레지스터들을 가지고 있지 않다. 대신에, 판독 전용 레지스터는 통상적으로 각 DMA전송동작 전에 셋업(set-up)된다. 이러한 이유 때문에, DMA 전송이 진행중인 경우 중지 루틴은 중지를 그만둔다.Next, at task 320 the states of DMA device 71 (DMA controller 72 and central arbiter 82), 82077 diskette controller 84, and RS-232 UART 94 are stored. . These devices have registers well known in the art. All registers in diskette controller 84 and UART 94 are directly readable by CPU 40, and these read values are written directly to the data structure in E000H. The DMA device does not have readable registers. Instead, read-only registers are typically set up before each DMA transfer operation. For this reason, the stop routine stops stopping when a DMA transfer is in progress.

다음, 태스크(978)에서 중지 루틴은 태스크(976)를 참조하여 설명된 인터럽트 구동 모뎀 상태 루틴이 완료되었는지 여부를 태스크한다. 완료되지 않았다면 완료될 때까지 기다린다.Next, in task 978 the abort routine tasks whether the interrupt driven modem state routine described with reference to task 976 has completed. If it's not done, wait for it to complete.

일단 컴퓨터 시스템(10)이 중지 상태(150)에 진입하면 중지 화일에 대한 임의의 무단조작(tampering)을 탐지해낼 수 있어야 바람직하다. 예를 들면, 어떤 사람이 수정된 중지 화일을 생성하여, 이 중지 화일을 하드 드라이브(31)로 이동시킨후, 전에 저장된 상태와 다른 상태로 컴퓨터 시스템(10)이 회복되도록 시도하는 것이 가능하다. 이를 위하여, 의사-랜덤값(pseudo-random value)이 세그먼트 E000H 데이타 구조내에 배치된다. 태스크(328)에서 도시된 바과 같이, 인터럽트 구동 모뎀 상태 보관 루틴이 완료된 후 고속 타이머(102)중의 하나로부터 16-비트 타임스템프(16-bit time-stamp)가 판독된다. 그 후, 이 타임스탬프는 세그먼트 E000H 데이타 구조로 기록된다.Once computer system 10 enters suspend state 150, it is desirable to be able to detect any tampering on the suspend file. For example, it is possible for a person to create a modified pause file, move it to the hard drive 31, and then attempt to recover the computer system 10 to a state different from the previously stored state. For this purpose, pseudo-random values are placed in the segment E000H data structure. As shown in task 328, a 16-bit time-stamp is read from one of the fast timers 102 after the interrupt drive modem state preservation routine is completed. This timestamp is then recorded in the segment E000H data structure.

다음, 캐리 비트를 고려하지 않고 세그먼트 E000H내의 각 16-비트 워드를 가산(add)함으로써 전체 E000H 세그먼트에 대한 16-비트 체크섬(checksum)이 계산된다. 태스크(330)에서 이 체크섬은 세그먼트 E000H 데이타 구조로 기록되고, 태스크(332)에서 CMOS NVRAM(96)으로 기록된다. 이러한 과정후에, 작업(334)에서, 모든 작업 변수(working variables)는 CPU(40)로부터 세그먼트 E000H 데이타 구조로 기록되고, 작업(336)에서, 중지 화일의 서명구뒤에(서명 바로 다음에) 전체 세그먼트 E000H가 중지 화일로 재기록된다. 다음, 작업(338)에서 컴퓨터 시스템(10)의 상태가 중지 화일로 저장되었음을 시스템(10)에 알려주기 위해 CMOS NVRAM (96)내에서 중지 플래그가 세트된다.Next, a 16-bit checksum for the entire E000H segment is calculated by adding each 16-bit word in segment E000H without considering the carry bit. At check 330 this checksum is written to the segment E000H data structure and at task 332 is written to CMOS NVRAM 96. After this process, at task 334, all working variables are written from the CPU 40 into the segment E000H data structure, and at task 336, the entire segment after the signature phrase of the pause file (just after the signature). E000H is rewritten as a pause file. Next, a stop flag is set in the CMOS NVRAM 96 to inform the system 10 that the state of the computer system 10 has been stored as a stop file at task 338.

다음, 중지 루틴은 태스크(980)에서 체크포인트가 취하여지고 있는지 판단한다. 체크포인트가 취하여지고 있으면, 시스템은 파워다운되어서는 안되며, 그 대신 시스템은 방금 수행된 부분적인 중지로부터 회복하기 위해 필요한 정도까지 재개되어야 한다. 따라서, 체크포인트가 취하여지고 있으면, 중지 루틴은 태스크(982)에서 재개 루틴의 태스크(484)로 점프하여, 부분적인 재개를 시작한다.Next, the abort routine determines if a checkpoint is being taken at task 980. If a checkpoint is being taken, the system should not be powered down; instead, the system should be resumed to the extent necessary to recover from the partial suspension just performed. Thus, if a checkpoint is being taken, the abort routine jumps from task 982 to task 484 of the resume routine and starts partial resume.

채크포인트가 취하여지고 있지 않다면, CPU(40)는 마이크로제어기(U2)에 ON 신호를 논리 0으로 만들도록 명령함으로써 전원을 턴오프시키고, 이에 의해 전원(17)의 주/조절 장치(primary/regulation unit)(172)로 하여금 ±5 및 ±12 라인을 따라 조절 전압을 제공하는 것을 중지시키도록 한다. 전압이 거의 0 까지 램프다운(ramp down)되려면 수초가 소요되므로, CPU(40)는, 수많은 커맨드를 실행할 수 있다. 따라서, CPU(40)는, 전원(17)에 의해 발생된 시스템 전력 전압이 감소되어 CPU(40)가 기능을 멈출때까지 기다릴 때, 태스크(342)에서 무한 루프(endless loop)(스핀 )를 실 행 한다.If no checkpoint is being taken, the CPU 40 turns off the power supply by instructing the microcontroller U2 to make the ON signal a logic 0, thereby causing the primary / regulation of the power supply 17 to be primary / regulation. unit) 172 stops providing regulating voltage along the ± 5 and ± 12 lines. Since it takes several seconds for the voltage to ramp down to almost zero, the CPU 40 can execute a number of commands. Thus, the CPU 40 enters an endless loop (spin) at task 342 when the system power voltage generated by the power supply 17 decreases and waits for the CPU 40 to stop functioning. Execute.

이제 제 11 도를 참조하면, 부트-업 루틴(Boot-Up Routine)이 상세히 도시되어 있다. 부트 프로세스는 제 8 도를 참조하여 간략히 설명한 바 있다. CPU(40)가 리세트 벡터가 가리키는 코드로 점프하여 실행할 때, 부트-업 루틴은 태스크(380)에서 시작한다. 이는 CPU(40)가 파워업될 때마다 또한 CPU(40)가 리세트 벡터가 가리키는 코드로 점핑하여 리세트될 때마다 발생한다. 이 리세트 절차는 본 기술 분야에서 잘 알려져 있다.Referring now to FIG. 11, a boot-up routine is shown in detail. The boot process has been briefly described with reference to FIG. When the CPU 40 jumps to and executes the code indicated by the reset vector, the boot-up routine starts at task 380. This occurs every time the CPU 40 is powered up and every time the CPU 40 is reset by jumping to the code indicated by the reset vector. This reset procedure is well known in the art.

첫 태스크는, 태스크(382)에서, CPU(40)를 테스트하고 메모리 제어기(46)를 초기화하는 것이다. CPU는 POST 루틴에 의해 테스트된다. CPU 테스트의 일부는 CPU(40)가 SMI를 갖는 S 부분인지 여부를 판단하는 것이다. 그렇다면, 플래그가 세트되어 이러한 사실을 나타낸다. 메모리 제어기(46)는 POST 루틴에 의해 초기화된다.The first task, at task 382, is to test the CPU 40 and initialize the memory controller 46. The CPU is tested by the POST routine. Part of the CPU test is to determine whether the CPU 40 is the S portion with SMI. If so, a flag is set to indicate this fact. The memory controller 46 is initialized by the POST routine.

이어, 부트업 루틴은 태스크(986)에서 마이크로제어기(U2)가 기능중인지를 테스트한다. 이렇게 하기 위해, CPU는 전력 관리 회로(106)의 상태 포트를 순차적으로 판독하고, 이 포트에서 하이에서 로우, 그리고 로우에서 하이로의 전이를 기다린다. 이러한 전이는 마이크로제어기(U2)의 하드비트가 기능중이며, 따라서 CPU(40)는 마이크로제어기(U2)가 예상한대로 기능중이라는 가정하에 부팅 프로세스를 계속할 수 있다.The bootup routine then tests whether task 986 has microcontroller U2 functioning. To do this, the CPU sequentially reads the status port of the power management circuit 106 and waits for a transition from high to low and low to high at this port. This transition is such that the hard bit of the microcontroller U2 is functioning, so that the CPU 40 can continue the booting process assuming that the microcontroller U2 is functioning as expected.

CPU가 사전설정된 주기 예를 들어 1초 또는 2초내에 상태 포트에서 전이를 검출하지 않는다면, 마이크로제어기(U2)는 하드비트를 갖고 있지 않으며, CPU(40)는 태스크(988)에서 전술한 바와 같이 제 1 PAL(U1)에게 명령하여 마이크로제어기 (U2)를 리세트시킨다. 태스크(990)에서 CPU(40)는 상태 포트에서 하이에서 로우로의 전이를 다시 기다린다. CPU가 1초 또는 2초내에 상태 포트에서 전이를 다시 검출하지 않는다면, 마이크로제어기(U2)는 하드비트를 갖고있지 않고, CPU(40)는 마이크로제어기(U2)가 리세트될 수 없는 상태라는 가정하에 태스크(992)에서 본 명세서에 설명된 전력 관리 특징(power managemeut features)을 디스에이블시킨다.If the CPU does not detect a transition at the state port within a preset period, for example one or two seconds, the microcontroller U2 does not have a hard bit, and the CPU 40 is as described above in task 988. Command the first PAL U1 to reset the microcontroller U2. At task 990 CPU 40 again waits for a transition from high to low on the status port. If the CPU does not detect a transition on the status port again within one or two seconds, microcontroller U2 does not have a hard bit and CPU 40 assumes that microcontroller U2 cannot be reset. In task 992, the power managemeut features described herein are disabled.

다른 한편, 마이크로제어기(U2)가 기능중이라면, CPU(40)는 태스크(994)에서 마이크로제어기(U2)내의 기상 대기 분 알람 값을 재생(refresh)한다. RTC(98)의 시간축은 마이크로제어기(U2)의 시간축보다 훨씬 정확하다. 따라서, 마이크로제어기(U2)에 보다 정확한 고가의 시간축을 부가하지 않고 이러한 제한을 극복하기 위해, BIOS는 상기 덜 정확한 시간축을 상기 정확한 시간축과 동기화시키고, 시스템이 부트될 때마다, 마이크로제어기(U2)내의 기상 대기 분 알람 값을 RTC(98)로부터 얻어진 보다 정확한 값으로 갱신한다. 이를 성취하기 위해, CPU(40)는 CMOS 메모리(96)로부터 절대 알람 데이트 및 시간(absolute alarm date and time)을 판독하고, 기상 대기 분 알람 값을 계산하여 마이크로제어기(U2)에 기록한다.On the other hand, if the microcontroller U2 is functioning, the CPU 40 refreshes the wake up minute alarm value in the microcontroller U2 at task 994. The time base of the RTC 98 is much more accurate than the time base of the microcontroller U2. Thus, to overcome this limitation without adding a more accurate and expensive time base to the microcontroller U2, the BIOS synchronizes the less accurate time base with the correct time base, and every time the system is booted, the microcontroller U2 The wakeup minute alarm value within is updated to a more accurate value obtained from the RTC 98. To accomplish this, the CPU 40 reads the absolute alarm date and time from the CMOS memory 96, calculates the wake-up minute alarm value and writes it to the microcontroller U2.

그 후, 또한 마이크로제어기(U2)가 기능하지 않아 전력 관리 특징이 디스에이블되어 있다면, 부트 루틴은 태스크(996)에서 전력이 전원(17)에 인가됨으로써 시스템이 부트되었는지를 판단한다. 바람직하게 전원(17)은 항상 AC 전력이 자신의주/조절 장치(17)에 인가되도록 하며, ±5 및 ±12 라인에서의 전력의 조절은 ON# 입력에 의해 제어된다. 이러한 방법에 의해 전원(17)은 전력 관리 회로(106)에 전력을 공급하기 위해 필요한 AUX5를 제공하고, 자신 스스로가 AC 전력을 스위치하지않고 전력 관리 회로(106)에 의해 제어될 수 있다.Thereafter, if the microcontroller U2 is also not functioning and the power management feature is disabled, then the boot routine determines whether the system has booted by applying power to the power source 17 at task 996. Preferably, power source 17 always allows AC power to be applied to its main / regulator 17, and the regulation of power at the ± 5 and ± 12 lines is controlled by the ON # input. In this way, the power source 17 provides the AUX5 necessary to power the power management circuit 106 and can be controlled by the power management circuit 106 without switching AC power by itself.

그러나, 당업자에게 잘 알려진 바와 같이, 몇몇 사용자는 스위치 전력 스트립(switched power strip)(도시되지 않음)을 사용하여 그들의 컴퓨터 시스템에 전력을 공급하며, 단일 스위치에 의해 전체 시스템으로의 AC 전력을 턴오프 및 턴온하는 것을 선호한다. 이것은 전력 관리 회로(106)에 대해 문제점을 제기하는데, 그이유는 마이크로제어기(U2) 및 다른 장치가 AUX5 전력 라인에 의해 계속적으로 전력이 공급되도록 구성되기 때문이다. 따라서, 시스템은 시스템이 AC 전력의 인가에 의해 전력을 공급 받았으며 그에 따라 행동하고 있음을 판단하는 방법을 포함하여야 한다.However, as is well known to those skilled in the art, some users use switched power strips (not shown) to power their computer systems, and turn off AC power to the entire system by a single switch. And to turn on. This poses a problem for the power management circuit 106 because the microcontroller U2 and other devices are configured to be powered continuously by the AUX5 power line. Thus, the system must include a method of determining that the system is powered by and acting upon the application of AC power.

그러나, AUX5 라인 역시 전술한 바와 같이 블랙아웃 및 브라운아웃되기 쉽다. 블랙아웃 또는 브라운아웃 후에, 리세트 서브회로(reset subcircuit)(920)는 마이크로제어기(U2)를 리세트하여 마이크로제어기(U2)가 허용 오차를 벗어난 전압으로 인해 오동작(haning)하는 것을 방지한다. 따라서, 시스템은 마이크로제어기가 블랙아웃 후에 또는 AC 전력의 인가 후에 깨워졌는지를 더 판단할 수 있어야 한다.However, the AUX5 line is also prone to black out and brown out as described above. After blackout or brownout, reset subcircuit 920 resets microcontroller U2 to prevent microcontroller U2 from malfunctioning due to voltages outside the tolerances. Thus, the system should be able to further determine if the microcontroller has been woken up after blackout or after application of AC power.

결과적으로, 태스크(996)에서, CPU는 전원(17)이 턴온되도록 야기한 이벤트에 관해 마이크로제어기(U2)에 질의한다. 마이크로제어기는 네 개의 응답중 임의의 하나, 즉(1)마이크로제어기가 리세트됨으로써, 전원(17)이 ±5 및 ±12 라인에서 조절 전력을 공급하기 시작하였음,(2)기상 대기 분 알람이 만료되었음,(3)링이 RS-232 링 입력이나 광절연체(OPT01)로부터의 링 입력에서 발생되었음, 및/또는(4) 스위치(21)가 눌러졌음중 임의 하나를 리턴할 수 있다. 시스템이 파워온되고 있는 이유는, 시스템이 파워온된 특정 이유에 응답하여 소정 프로그램을 실행할 스케쥴러(scheduler)과 같은 응용 프로그램에 의해 마이크로제어기(U2)에 의해 직접 판독될 수 있다. 대안으로서, 시스템을 파워업하고 있는 이유는 하나 이상의 BI0S 호출을 통해 얻어질 수 있다.As a result, at task 996, the CPU queries microcontroller U2 about the event that caused power source 17 to turn on. The microcontroller has any one of four responses, i.e. (1) the microcontroller has been reset so that the power supply 17 has begun to supply regulating power at ± 5 and ± 12 lines, and (2) May expire, either (3) ring has occurred at the RS-232 ring input or at the ring input from opto-isolator (OPT01), and / or (4) switch 21 has been pressed. The reason the system is powered on can be read directly by the microcontroller U2 by an application program, such as a scheduler, to run a given program in response to the specific reason the system is powered on. Alternatively, the reason for powering up the system can be obtained through one or more BI0S calls.

CPU(40)에 의해 리세트되는 것을 제외하고, 마이크로제어기(U2)는 리세트 서브회로(920)에 의해서만 리세트된다. 이 리세트 서브회로(920)는 AUX5 라인이 인가되거나 글리치(glitch)할 때마다 마이크로제어기를 리세트시킨다. 따라서, 마이크로제어기(U2)가 리세트되거나, 또는 마이크로제어기가 태스크(997)에서 테스트되는무호 기상 코드(invalid wakeup code)를 복귀한다면, CPU(40)는 태스크(998)에서 전원이 ±5 및 ±12 라인에서 전력 조절을 지속해야 하는지 여부를 판단해야 한다. 이러한 목적을 위해, DEFAULT_ON이라 불리는 CMOS NVRAM내의 플래그가 사용된다. 이 플래그가 세트되어 있다면, 전원(17)은 마이크로제어기(U2)가 리세트된 후 조절전력을 계속해서 공급해야 한다. 다른 한편, DEEAULT_ON이 세트되어 있지 않으면, 전원(17)은 마이크로제어기(U2)가 리세트된 후 조절 전력을 공급하는 것을 중지해야 하며, 따라서 CPU(40)는 태스크(1000)에서 마이크로제어기(U2)에게 명령하여 전원(17)이 ±5 및 ±12 라인에서 조절 전력을 공급하는 것을 중지시킨다. 그 후, 전압이 대략 0볼트까지 램프다운하는 데는 수초가 소요되므로, CPU(40)는 그 사이에 수 많은 커맨드를 실행할 수 있다. 그 후, CPU(40)는, 태스크(1004)에서 CPU가 기능을 멈출 때까지 전원(17)에 의해 생성되는 시스템 전원 전압이 감소되길 기다릴때, 태스크(1002)에서 무한 루프(스핀)를 실행한다. 전술한 바와 같이, 마이크로제어기(U2)는 바람직하게 AUX5 라인에 의해 계속적으로 전력이 공급되고, 자신의 프로그램된 루틴을 계속적으로 실행한다.Except for being reset by the CPU 40, the microcontroller U2 is reset only by the reset subcircuit 920. This reset subcircuit 920 resets the microcontroller each time the AUX5 line is applied or glitched. Thus, if the microcontroller U2 is reset or if the microcontroller returns an invalid wakeup code that is tested at task 997, the CPU 40 has a power supply of ± 5 and at task 998. It should be determined whether power regulation should be maintained at the ± 12 line. For this purpose, a flag in CMOS NVRAM called DEFAULT_ON is used. If this flag is set, the power supply 17 must continue to supply regulating power after the microcontroller U2 is reset. On the other hand, if the DEEAULT_ON is not set, the power supply 17 must stop supplying the regulated power after the microcontroller U2 is reset, so that the CPU 40 may perform the microcontroller U2 at the task 1000. ) Stops the power supply 17 supplying regulated power at the ± 5 and ± 12 lines. After that, it takes several seconds for the voltage to ramp down to approximately 0 volts, so that the CPU 40 can execute a number of commands in between. CPU 40 then executes an infinite loop (spin) in task 1002 when waiting for task 1004 to decrease the system power supply voltage generated by power supply 17 until the CPU ceases to function. do. As mentioned above, the microcontroller U2 is preferably continuously powered by the AUX5 line and continuously executes its programmed routine.

그 후, 태스크(997)에서 마이크로제어기가 유효 기상 코드(valid wakeup code)를 복귀하였거나, 또는 태스크(998)에서 마이크로제어기(U2)는 리세트되었으나 시스템에는 계속 전력이 공급되어야 한다면, CPU(40)는 태스크(1004)에서 마이크로제어기(U2)에게 명령하여, 마이크로제어기(U2)가 전력이 턴오포되어야 한다고 판단하여 전원(17)으로 하여금 ±5 및 ±12 라인에서 조절 전력을 공급하는 것을 중단하게 하기에 앞서 CPU(40)로 SMI를 다시 발생시키도록 한다. 또한, 태스크 (1004)에서, CPU는 CMOS NVRAM내의 DEFAULT_ON 비트를 세트함으로써, AC 전력이 상실되면, 시스템은 AC 전력이 재인가된 후 스스로 턴온되도록 한다.Thereafter, if the microcontroller has returned a valid wakeup code at task 997 or if the microcontroller U2 has been reset at task 998 but the system is still powered up, then the CPU 40 ) Commands microcontroller U2 at task 1004 so that microcontroller U2 determines that power should be turned off and stops power supply 17 from supplying regulating power at ± 5 and ± 12 lines. Prior to this, the CPU 40 generates the SMI again. Also, at task 1004, the CPU sets the DEFAULT_ON bit in the CMOS NVRAM so that if AC power is lost, the system will turn itself on after AC power is reapplied.

그런 다음, 부트 루틴은 당업자에게 잘 알려진 바와 같이, 태스크(1006)에서 제 1 플러그 및 플레이 자원 할당 패스(P1ug Play resource allocation pass)를 수행한다.The boot routine then performs a first Plug and play resource allocation pass at task 1006, as is well known to those skilled in the art.

그 다음, 섀도우 메모리(shadow memory)가 테스트되고, BIOS가 ROM(88)에서 RAM(53)의 섀도우 메모리 부분으로 복사된다. 실행 코드(executed code)의 흐름은 CMOS NVRAM(96)내에서 중지 플래그가 세트되어 있는 지의 여부에 좌우된다.The shadow memory is then tested and the BIOS copied from the ROM 88 to the shadow memory portion of the RAM 53. The flow of executed code depends on whether or not the stop flag is set in the CMOS NVRAM 96.

중지플래그가 세트되어 있으면, 컴퓨터 시스템(10)은 중지 상태(150)에 있고, 이 컴퓨터 시스템(10)은 중지되었을 당시의 상태로 회복되어야 한다. 세그먼트 E000H 및 F000H 내의 시스템 RAM53)에는 단축된 테스트가 행해진다. 컴퓨터가 재개하는데 걸리는 시간을 감소시키기 위해, 메모리는 단지 적당 크기에 대하여만 체크되고, 0이 된다(000H가 각 위치에 기록된다).If the stop flag is set, the computer system 10 is in the suspended state 150 and the computer system 10 should be restored to the state it was in when it was stopped. The system RAM53 in the segments E000H and F000H is subjected to a shortened test. To reduce the time it takes for the computer to resume, the memory is only checked for the appropriate size and zeroed (000H is written to each location).

반면에, 중지 플래그가 CMOS NVRAM(96)에서 클리어(clear)된 경우, 세그먼트E000H 및 E000H내의 시스템 RAM(53)에는, (1)스틱키-비트 테스트(sticky-bit test),(2) 이중-비트 메모리 테스트(double-bit memory test), 및 (3) 교차 어드레스선 테스트(crossed address line test)를 포함하는 표준, 심층 메모리 테스트 (standard, in-depth memory test )가 행해진다.On the other hand, when the stop flag is cleared in the CMOS NVRAM 96, the system RAM 53 in the segments E000H and E000H includes (1) sticky-bit test and (2) double. A standard, in-depth memory test is performed, including a double-bit memory test, and (3) a crossed address line test.

세그먼트 E000H 및 E000H가 테스트된 후에, BIOS는, ROM BIOS(88)의 내용을 시스템 RAM(53)으로 복사하고, RAM에서 BIOS를 실행하도록 메모리 제어기를 구성함으로써 섀도우(shadow)될 수 있다. BIOS의 섀도우는 시스템 속도를 증가시킨다. BIOS는 저속의 ROM(88)(전형적인 액세스 속도는 250 nano초)이 아닌 고속의 시스템 RAM(53)(전형적인 액세스 속도는 80 nano초)에서 실행되므로 시스템 성능이 향상된다. BIOS의 섀도우잉은 BIOS 복사기(BIOS copier)를 하위 메모리(1ower memory)내의 어드레스로 로딩하고, ROM(88)으로부터의 BIOS를 시스템 RAM(53)의 세그먼트 E000H 및 F000로 복사하고, 섀도우 RAM을 인에이블하는 것을 포함한다.After the segments E000H and E000H have been tested, the BIOS can be shadowed by copying the contents of the ROM BIOS 88 into the system RAM 53 and configuring the memory controller to run the BIOS in the RAM. BIOS shadows increase system speed. The BIOS runs on fast system RAM 53 (typical access speed of 80 nanoseconds) rather than on slow ROM 88 (typical access speed of 250 nanoseconds), thereby improving system performance. Shadowing of the BIOS loads the BIOS copier into an address in lower memory, copies the BIOS from ROM 88 to segments E000H and F000 of system RAM 53, and shadows RAM It includes enabling.

다음, 태스크(384)에서, 비디오 제어기(56)가 테스트되고 초기화되며, 비디오 메모리(58)가 테스트된다. 이러한 테스트와 초기화는 본 기술 분야에서 잘 알려져 있다.Next, at task 384, video controller 56 is tested and initialized, and video memory 58 is tested. Such testing and initialization is well known in the art.

그 후, 부트 루틴을 태스크(1008)에서 당업자에게 잘 알려진 제 2 플러그 및 플레이 자원 할당 패스를 수행한다. 작업(386)에서, 실행 코드의 흐름은 CMOS NVRAM(96)내에서 중지 플래그가 세트되어 있는지의 여부에 좌우된다. 중지 플래그가 세트되어 있는 경우, 태스크(383)에서처럼 나머지 시스템 RAM(53)은 단지 크기만 체크되고 0이 된다. 그러나, CMOS NVRAM(96)내에서 중지 플래그가 클리어되어있는 경우, 태스크(398)에서, 태스크(383)를 참조하여 설명한 바와 같이,3-단계 심층 테스트를 사용하여 나머지 시스템 RAM(53)이 테스트된다.The boot routine then performs a second plug and play resource allocation pass, which is well known to those skilled in the art, at task 1008. At task 386, the flow of executable code depends on whether the stop flag is set in CMOS NVRAM 96. If the stop flag is set, the remaining system RAM 53 is only checked in size and zeroed, as in task 383. However, if the stop flag is cleared in CMOS NVRAM 96, then at task 398, the remaining system RAM 53 is tested using a three-step in-depth test, as described with reference to task 383. do.

메모리가 테스트된 후, 태스크(400)에서 보조 장치(auxiliary devices)--8259,UART,8042, 및 기타 다른 것들--가 테스트되고 초기화된다. 태스크(408)에서, 고정 디스크 제어기가 초기화된다.After the memory is tested, auxiliary devices--8259, UART, 8042, and others--are tested and initialized in task 400. At task 408, the fixed disk controller is initialized.

태스크(409)에서, 실행 코드의 흐름은 CM0S NVRAM(96)내에서 중지 플래그가 세트되어있는 지의 여부에 좌우된다. 중지 플래그가 세트되어 전원이 마지막으로 제거되었을 때 시스템의 상태가 성공적으로 저장되었음을 나타내는 경우, 부트-업루틴은 하드 드라이브 제어기(86)와 하드 드라이브(31)의 테스트를 건너뛴다(skip). 반면에, CMOS NVRAM내에서 중지 플래그가 클리어되어 전원이 마지막으로 제거되었을 때 시스템의 상태가 저장되지 않았음을 나타내는 경우, 태스크(410)에서 부트-업 루틴은 고정 디스크 제어기(86)와 하드 드라이브(31)의 완전한 테스트(complete test)를 수행하는데, 이는 본 기술 분야에서 잘 알려져 있다.At task 409, the flow of executable code depends on whether or not a stop flag is set in CM0S NVRAM 96. If the stop flag is set to indicate that the state of the system was successfully saved when power was last removed, the boot-up routine skips testing the hard drive controller 86 and the hard drive 31. On the other hand, if the stop flag in the CMOS NVRAM is cleared to indicate that the state of the system was not saved when power was last removed, then the boot-up routine at task 410 may indicate that the fixed disk controller 86 and hard drive A complete test of (31) is performed, which is well known in the art.

다음 태스크(412)에서, 플로피 드라이브 제어기(84)가 테스트되고 초기화된다.In the next task 412, the floppy drive controller 84 is tested and initialized.

이때, 모든 장치들이 초기화되고 벡터는 기지의 위치(known locations)를 가리키게 되며, 모든 인터럽트 루틴은 예상대로 동작할 것이다. 따라서, 태스크(414)에서 부트-업 루틴은 BIOS 데이타 영역 및 벡터 테이블을 스냅샷(snapshot)하여, BIOS 데이타 영역 및 벡터 테이블의 사본을 세그먼트 E000H내의 데이타 구조에 기록한다. 이 BIOS 데이타 영역 및 벡터 테이블의 사본은 태스크(274)에서 중지루틴에 의해 사용되어, 컴퓨터 시스템(10)을 기지의 상태로 배치하며 모든 인터럽트가 예상대로 동작하도록 한다.At this point, all devices are initialized and the vector points to known locations, and all interrupt routines will work as expected. Thus, at task 414, the boot-up routine snapshots the BIOS data area and vector table, writing a copy of the BIOS data area and vector table to the data structure in segment E000H. This copy of the BIOS data area and vector table is used by the stop routine in task 274 to place computer system 10 in a known state and to ensure that all interrupts operate as expected.

다음, 태스크(416)에서 BIOS 확장(BIOS extentions) 본 기술 분야에서 잘 알려져 있는 바와 같이스캔 인(scanned in) 되고 초기화된다. BIOS 확장은 네트워크 어댑터와 같은 주변 어댑터들에 의해 시스템에 부가된 BIOS 코드 블럭들이다. BIOS 확장은 전형적으로 ISA 버스(76)상의 세그먼트 C000H 및 D000H에 위치하고, BIOS 확장을 식별하기 위해 연관된 서명(signature)을 가진다. BIOS 확장이 검출되면, 길이가 체크되고 체크섬이 계산되어 체크된다. 서명, 길이 및 체크섬의 모두가 유효한 BIOS 확장이 존재함을 표시하는 경우, 프로그램 제어는 서명을 3 바이트 지난 곳에 위치한 인스트럭션으로 전달되고, BIOS 확장은 주변 어댑터의 초기화와 같은 임의의 필요한 태스크를 수행할 수 있다. 일단 확장이 실행 완료되면, 제어는 다시 부트-업 루틴으로 전달되고, 이 부트-업 루틴은 BIOS 확장이 더 존재하는 지를 검색한다. 이후의 BIOS 확장들도 전술한 BI0S 확장처럼 처리된다. 더 이상의 BIOS 확장이 검출되지 않으면, 부트-업 루틴은 태스크(417)로 이동한다.Next, BIOS extensions in task 416 are scanned and initialized as is well known in the art. BIOS extensions are blocks of BIOS code added to the system by peripheral adapters, such as network adapters. The BIOS extension is typically located on segments C000H and D000H on the ISA bus 76 and has an associated signature to identify the BIOS extension. If a BIOS extension is detected, the length is checked and the checksum is calculated and checked. If all of the signatures, lengths, and checksums indicate that a valid BIOS extension exists, program control is passed to an instruction located three bytes past the signature, and the BIOS extension can perform any necessary tasks, such as initializing the peripheral adapter. Can be. Once the extension has finished executing, control passes back to the boot-up routine, which searches for more BIOS extensions. Subsequent BIOS extensions are treated like the BI0S extension described above. If no more BIOS extensions are detected, the boot-up routine moves to task 417.

다음에, 태스크(1010)에서, CPU는 시스템 파워온 시간 델타{system power-on hours delta)를 판독하여 하드 드라이브(31)의 특수 파티션선(special partition)상에 저장된 값에 더하고, 새로운 전체 파워온 시간을 하드 드라아브(31)상의 특수 파티션에 재기록한다. 본 명세서의 다른 곳에서 설명되는 바과 같이, 마이크로제어기(U2)가 시스템을 파워다운시키기에 앞서, 마이크로제어기는 SMI 라인을 인가함으로써 CPU(40)를 인터럽트한다. 결과적으로, CPU는 시스템이 곧 파워다운될 것이라는 가정하에 소정의 태스크를 수행한다. 바람직하게, 경과된 파워온 시간 타이머 (elapsed power-on hours timer)에 의해 측정되는 파워온 델타와 같은 소정의 정보를 CMOS NVRAM에 보관하는 것을 포함한다. 그 후, CPU(40)는 마이크로제어기(U2)가 시스템을 전력을 파워다운시키는 것을 허용한다.Next, at task 1010, the CPU reads the system power-on hours delta and adds it to the value stored on the special partition of the hard drive 31, and the new full power. The on time is rewritten to a special partition on the hard drive 31. As shown in FIG. As described elsewhere herein, before the microcontroller U2 powers down the system, the microcontroller interrupts the CPU 40 by applying an SMI line. As a result, the CPU performs certain tasks on the assumption that the system will power down soon. Preferably, the method includes storing predetermined information in the CMOS NVRAM, such as a power-on delta measured by an elapsed power-on hours timer. The CPU 40 then allows the microcontroller U2 to power down the system.

태스크(417)에서 부트-업 루틴은 그 중지 화일에 특별히 할당된 것으로 여겨지는, 하드 드라이브(31)상의 파티션(partition])을 탐색한다. 파티션 테이블에서PS/1 식별자(FE)를 가지는 파티션 또는 식별자(84)를 가지는 동면 파티션 (hibernation partion)가 발견되고, 이 파티션이 이러한 특정 시스템의 중지 화일을 수용하기에 충분히 큰경우, 그 중지 화일에 대한 파티션으로 확정된다. 결과적으로, 중지 화일 서명은 화일의 제 1 바이트에 기록되고, 화일의 시작 헤드, 섹터, 실린더는 CMOS NVRAM(96)에 기록된다.At task 417, the boot-up routine searches for a partition on hard drive 31, which is believed to have been specifically assigned to that pause file. If a partition with PS / 1 identifier (FE) or hibernation partion with identifier 84 is found in the partition table and this partition is large enough to accommodate the suspend file of this particular system, the suspend file Is determined as the partition for. As a result, the pause file signature is written to the first byte of the file, and the start head, sector, and cylinder of the file are written to CMOS NVRAM 96.

그 후, 실행 코드의 흐름은 태스크(418)에서 CMOS NVRAM(96)내에서 중지 플래그가 세트되어 있는지의 여부에 따라 분기한다. 중지 플래그가 클리어되어 있는 경우, 부트-업 루틴은 태스크(420)에서 제어를 PBOOT 루틴으로 넘긴다. PBOOT는 본 기술 분야에 잘 알려져 있으며, 플로피 디스크 혹은 하드 드라이브(31)로부터의 커맨드 인터프리터(command interpreter) 및 운영 체제(OS)를 로딩하는 책임이 있다. 태스크(417)에서 중지 화일에 대한 파티션이 발견되지 않는 경우,OS는(제 16도를 참조하여 설명한) 파티션이 발견되었는지 여부를 체크하는 OS-특정 드라이버를 실행하고, 발견되지 않았다면 FAT내에 연속 섹터 화일(a fi1e of contiguous sectors)을 할당하고 중지 화일의 제 1 바이트에 서명을 기록하며 중지 화일의 시작 헤드, 섹터, 실린더를 CMOS NVRAM(96)에 기록하도록 한다.Thereafter, the flow of executable code branches at task 418 depending on whether or not a stop flag is set in CMOS NVRAM 96. If the suspend flag is cleared, the boot-up routine transfers control to the PBOOT routine at task 420. PBOOT is well known in the art and is responsible for loading command interpreters and operating systems (OS) from floppy disks or hard drives 31. If no partition for the stop file is found in task 417, the OS runs an OS-specific driver that checks whether the partition has been found (described with reference to FIG. 16), and if not found, a contiguous sector in the FAT. It allocates a file of contiguous sectors, writes a signature to the first byte of the pause file, and writes the start head, sector, and cylinder of the pause file to CMOS NVRAM 96.

중지 화일이 할당되는 시점과 무관하게, 그 화일은 연속적인 섹터이어서 중지와 재개동안 디스크로의 신속한 기록과 디스크로부터의 신속한 판독이 가능해야 한다.Regardless of when a pause file is assigned, the file must be a continuous sector, allowing for fast writing to and reading from the disc during pause and resume.

다음, OS는 CONFIG.SYS 화일내에 발견되는 인스트럭션을 기초로 하여 시스템으로 구성한다. 최종적으로, OS는 AUTOEXEC.BAT 화일을 실행하며, AUTOEXEC. BAT 화일은 결국 실행 제어를 운영 체제로 다시 전달한다. 중지 플래그가 CMOS NVRAM 내에서 클리어되어 있어 전원이 마지막으로 제거되었을 때 시스템의 상태가 저장되지 않았음을 나타내는 경우, 태스크(421)를 참조하여 상세히 설명된 RESUME. EXE가 무시된다.The OS then configures the system based on the instructions found in the CONFIG.SYS file. Finally, the OS runs the AUTOEXEC.BAT file, and the AUTOEXEC. The BAT file eventually passes execution control back to the operating system. If the stop flag is cleared in CMOS NVRAM to indicate that the state of the system was not saved when power was last removed, the RESUME. Described in detail with reference to task 421. EXE is ignored.

태스크(418)를 다시 참조하면, 중지 플래그가 CMOS NVRAM(96)내에서 세트되어 있어, 전원이 마지막으로 제거되었을 때 시스템의 상태가 저장되었음을 나타내는 경우, 실행코드의 흐름은, 태스크(419)에서 CMOS NVRAM(96)내에서 재초기화 어댑터 플래그(Reinitialize Adapter Flag)가 세트되어있는지의 여부에 따라 분기한다. 재초기화 어댑터 플래그가 세트되어 있는 경우, 부트-업 루틴은 제어를 작업(421)의 PBOOT 루틴으로 넘긴다. 통상적인 PBOOT 루틴처럼, 본 발명의 PBOOT 루틴은 본 기술 분야에서 잘 알려져 있는 바와 같이, 로드 드라이버(drivers)를 로딩하고 시스템을 구성하는 CONFIG.SYS 및 AUTOEXEC.BAT 화일의 명령에 시스템을 구성한다.Referring back to task 418, if the stop flag is set in CMOS NVRAM 96, indicating that the state of the system was saved when power was last removed, then the flow of executable code is lost at task 419. Branching is made depending on whether or not a Reinitialize Adapter Flag is set in the CMOS NVRAM 96. If the reinitialization adapter flag is set, the boot-up routine transfers control to the PBOOT routine of task 421. Like conventional PBOOT routines, the PBOOT routines of the present invention configure the system in instructions in the CONFIG.SYS and AUTOEXEC.BAT files that load the drivers and configure the system, as is well known in the art.

CONFIG.SYS 및 AUTOEXEC.BAT내의 커맨드는 시스템내의 어댑터 카드를 초기화할 수 있다. 이 응용은 세 가지 유형의 어댑터 카트가 존재한다고 가정한다. 유형 I 어댑터는 초기화를 필요로 하지 않는다. 유형 II 어댑터는 초기화를 필요로 하지만 CONFIG.SYS 혹은 AUTOEXEC.BAT 화일에 따라 로딩된 드라이버 혹은 BIOS 확장에 의해 기지의 작업 상태에 놓이게 된다.Commands in CONFIG.SYS and AUTOEXEC.BAT can initialize the adapter card in the system. This application assumes that there are three types of adapter carts. Type I adapters do not require initialization. Type II adapters require initialization but are placed in a known working state by a driver or BIOS extension loaded in the CONFIG.SYS or AUTOEXEC.BAT file.

유형 III 어댑터는 시스템상에서의 코드 실행에 의해 수정된다. 유형 I 및 유형 II 어댑터를 구비한 시스템은 중지 및 회복될 수 있다. 그러나, 다수의 네트워킹 어댑터(networking adapters)를 포함하는 유형 III 어댑터를 구비한 시스템은, 이 카드들이, 시스템 전력이 제거되고 있는 등의 소정의 조건이 발생한 후에 이 어댑티를 재초기화하는 연관된 APM인식 장치를 갖추고 있지 못한 한 회복될 수 없다. 시스템은 APM 인식 장치 드라이버를 갖춘 유형 III 카드를 중지시킬 수 있다.Type III adapters are modified by code execution on the system. Systems with Type I and Type II adapters can be stopped and recovered. However, a system with a Type III adapter that includes a number of networking adapters may be associated with the associated APM recognition that causes these cards to reinitialize this adapter after certain conditions, such as system power being removed. It cannot be recovered unless it is equipped. The system may suspend a Type III card with an APM-aware device driver.

바람직한 실시예에서 RESUME.EXE 파일은 AUTOEXEC.BAT 화일에 부가되어,PBOOT로부터 재개 루틴으로 프로그램 제어를 전달하는 책임이 있다. 태스크(420)에서,OS는 RESUME.EXE의 존재를 무시한다. 그러나, 태스크(421)의 OS는 RESUME.EXE를 실행하여, 유형II 어댑티가 CONFIG.SYS 및 AUTOEXEC.BAT로부터 OS에 의해 로딩된 장치 드라이버에 의해 초기화된 후에, 제어를 재개 루틴으로 넘긴다.In the preferred embodiment, the RESUME.EXE file is added to the AUTOEXEC.BAT file and is responsible for transferring program control from the PBOOT to the resume routine. At task 420, the OS ignores the presence of RESUME.EXE. However, the OS of task 421 executes RESUME.EXE to transfer control to the resume routine after the Type II adapter is initialized by the device driver loaded by the OS from CONFIG.SYS and AUTOEXEC.BAT.

태스크(419)를 다시 참조하면, 재초기화 어댑터 플래그가 CMOS(96)에서 클리어되어 있는 경우,OS는 실행 제어를 RESUME.EXE를 통해 재개 루틴으로 넘긴다.Referring back to task 419, if the reinitialization adapter flag is cleared in CMOS 96, the OS transfers execution control to the resume routine via RESUME.EXE.

재개 루틴은 하드 드라이브상의 중지 화일로부터 시스템 상태를 회복하며, 이는 제12 도를 참조하여 보다 상세히 기술될 것이다.The resume routine recovers the system state from the pause file on the hard drive, which will be described in more detail with reference to FIG.

이제 제 12 도를 참조하면, 태스크(450 내지 530)로 구성된 재개 루틴(Resume Routine)이 상세히 도시되어 있다. 먼저, 태스크(451)에서 CPU(40)가 SMI를 갖는다면, CPU를 SMM 모드로 배치하는 CPU 재개 SMI가 발생되며, 태스크(454)의 코드로 점프한다. CPU가 SMI를 갖지 않는다면, 재개 셧다운이 발생하고, 이 재개셧다운에서 리세트가 야기되며 리세트 처리기는 태스크(454)의 코트로 점프한다.Referring now to FIG. 12, a resume routine consisting of tasks 450-530 is shown in detail. First, if CPU 40 has SMI in task 451, a CPU resume SMI is generated that places the CPU in SMM mode and jumps to the code of task 454. If the CPU does not have SMI, a resume shutdown occurs, which causes a reset and the reset handler jumps to the coat of task 454.

구성 프로세스동안, BIOS 데이타 영역 및 벡터 테이블은 미지의 상태로 수정될 수 있다. 그러므로, 기본 BIOS 루틴은 예상한대로 동작할 수도 있고 그러하지 않을 수도 있다. 따라서, 태스크(454)에서, 재개 루틴은 세그먼트 E000H를 판독/기록으로 인에이블하며, 태스크(456)에서 교환 BIOS 데이타 영역 및 벡터 테이블 루틴을 호출한다. 이 루틴은, 태스크(414)에서 세그먼트 E000H로 복사되었던 기지의 양호한 BIOS 데이타 영역 및 벡터 테이블을 현재 세그먼트 0000H에시 활동인 수정된 BIOS 데이타 영역 및 벡터 테이블과 교환(swap)한다. 루틴이 완료되었을 때, 알려진 BIOS 데이타 영역 및 벡터 테이블은 세그먼트 E000H에서 활동이 되며, 수정된 BIOS 데이타 영역 및 벡터 테이블은 세그먼트 E000H내에 있고 BIOS 루틴은 예상한 대로 동작할 것이다.During the configuration process, BIOS data areas and vector tables can be modified in an unknown state. Therefore, the default BIOS routines may or may not work as expected. Thus, at task 454, the resume routine enables segment E000H to read / write, and at task 456 calls the swap BIOS data area and vector table routine. This routine swaps the known good BIOS data area and vector table that was copied to segment E000H at task 414 with the modified BIOS data area and vector table currently active at segment 0000H. When the routine is complete, the known BIOS data area and vector table will be active in segment E000H, the modified BIOS data area and vector table will be in segment E000H and the BIOS routine will work as expected.

그 다음, 태스크(458)에서 재개 루틴은 하드 드라이브와 키보드를 지원하는 것들을 제외하고는 모든 인터럽트를 디스에이블한다. 그 후, 태스크(460)에서 재개 루틴은 하드 드라이브상에 중지 화일을 위치시키며, 중지 화일외 화일 크기 및 전술한 바와 같이 멀티-바이트 식별자인 서명을 판독한다. 태스크(462)에서 실행코드의 흐름은 중지 화일이 올바른 크기와 서명을 가졌는지의 여부에 따라 분기한다. 중지 화일이 올바른 크기와 서명을 가지지 않은 경우, 태스크(464)로 분기하여 CMOS 메로리(96)내에서 중지 플래그를 클리어한 후, 태스크(466)에서 프로그램제어는 리세트 벡터가 가리키는 장소내의 코드로 전달되어, 시스템이 중지되지 않았던 것처럼 이 시스템을 부팅시킨다. 반면, 중지 화일이 올바른 크기와 서명을 지닌 경우, 재개 루틴은 태스크(468)은 서명뒤에 위치한 중지 화일내 64K 블럭(세그먼트 E000H 정보에 대응하는 중지 화일의 부분)을 판독하고, 세그먼트 1000H에 기록하여 시스템 재개를 속행한다.The resume routine at task 458 then disables all interrupts except those supporting the hard drive and keyboard. The resume routine at task 460 then places the pause file on the hard drive and reads the non-suspended file size and the signature, which is a multi-byte identifier as described above. The flow of executable code in task 462 branches according to whether the pause file has the correct size and signature. If the suspend file does not have the correct size and signature, then branch to task 464 and clear the suspend flag in CMOS memory 96, then at task 466 the program control returns to the code in the location indicated by the reset vector. It is forwarded to boot this system as if the system was not stopped. On the other hand, if the pause file has the correct size and signature, the resume routine may cause task 468 to read 64K blocks (part of the pause file corresponding to segment E000H information) in the pause file located after the signature and write to segment 1000H. Continue to resume the system.

다음, 태스크(470)에서 1000H내의 블럭의 체크섬이 계산되고, 태스크(472)에서 CMOS 비휘발성 메모리(96)로부터 이전에 저장된 체크섬이 판독되고, 태스크(474)에서 실행 코드의 흐름은 태스크(470)에서 계산된 체크섬이.태스크(330)에서 계산된 체크섬과 동일한지의 여부에 따라 분기한다. 태스크(470)에서 계산된 체크섬이 태스크(330)에서 계산된 체크섬과 다른 경우, 중지 파일은 다소 결함이 발생한 것이며(예를 들면, 위조될 수 있음), 제어는 태스크(464)로 넘어가서, 태스크(464 및 466)를 참조하여 설명된 바와 같이, 중지 플래그를 클리어하고 시스템을 리세트한다. 태스크(470)에서 계산된 체크섬과 태스크(330)에서 계산된 체크섬이 동일한 경우, 태스크(476)에서 중지 화일은 중지 루틴에 의해 기록된 것과 동일하다고 여겨져, 세그먼트 1000H내의 데이타가 세그먼트 E000H로 복사된다.Next, at task 470 the checksum of the block in 1000H is calculated, at task 472 the checksum previously stored from CMOS nonvolatile memory 96 is read, and at task 474 the flow of executable code is passed to task 470. Branch based on whether or not the checksum computed in < RTI ID = 0.0 > If the checksum calculated at task 470 is different from the checksum calculated at task 330, the stop file is somewhat defective (for example, may be forged), and control passes to task 464, As described with reference to tasks 464 and 466, clear the stop flag and reset the system. If the checksum calculated in task 470 and the checksum calculated in task 330 are the same, the pause file in task 476 is considered to be the same as that recorded by the pause routine, so that the data in segment 1000H is copied to segment E000H. .

이제 태스크(478)에서, 재개 루틴은 시스템이 회복되고 있으며, 사용자가 재개를 포기하려면 Ctrl-Alt-Del을 눌러야 한다는 것을 사용자에게 표시하는 특정 신호를 스크린상에 기록한다. 중지 루틴에서처럼, Ctrl-Alt-Del을 누르면, 태스크(526)에서 중지 플래그가 클리어되고, 태스크(528)에서 시스템이 재부팅된다. 따라서, Ctrl-Alt-Del이 눌러지고 재개 루틴이 실행중일 때, 시스템은 정상적으로 재부팅된다.At task 478, the resume routine now records on the screen a specific signal indicating to the user that the system is recovering and that the user must press Ctrl-Alt-Del to abandon the resume. As in the suspend routine, pressing Ctrl-Alt-Del clears the suspend flag in task 526 and reboots the system in task 528. Thus, when Ctrl-Alt-Del is pressed and a resume routine is running, the system reboots normally.

다음 태스크(480 및 482)에서, 82077 디스켓 제어기(84), DMA 장치(71) 및 UART(94)는 세그먼트 E000H 데이타 구조의 값을 그들 제각기의 레지스터에 기록함으로써 회복된다.In the next tasks 480 and 482, the 82077 diskette controller 84, the DMA device 71, and the UART 94 are recovered by writing the values of the segment E000H data structure into their respective registers.

이어, 태스크(1020)에서 E000H 데이타 구조로부터 임의의 모뎀의 상태를 회복하기 위해 인터럽트 구동 병렬 스레드(interrupt-driven parallel thread)가 시작된다. 태스크(976)에서의 루틴과 마찬가지로, 모뎀 회복 루틴/ 특정 모뎀과 연관된 COMM 포트에 대응하는 인터럽트를 검출하고, E000H 데이타 구조로부터 값을 판독하고, 모뎀으로 커맨드 및 값을 전송하여 모뎀으로 하여금 모뎀속내의 레지스터를 회복하도록 한다. 이러한 루틴은 모뎀에 제 1 커맨드를 전송한 다음, 인티럽트 구동 방식으로 응답하여, 모뎀의 레지스터 모두가 회복될 때까지, 모뎀의 응답을 수신하고 각각의 COMM 포트 인터럽트에 응답하여 모뎀으로 다음 값을 전송한다.Then, at task 1020 an interrupt-driven parallel thread is started to recover the state of any modem from the E000H data structure. Similar to the routine in task 976, the modem recovery routine / detects the interrupt corresponding to the COMM port associated with the particular modem, reads the value from the E000H data structure, and sends the command and value to the modem to cause the modem to Restore the register of. This routine sends the first command to the modem and then responds in an interrupt-driven manner, receiving the modem's response and responding to each COMM port interrupt until the modem's registers have been recovered. send.

모뎀 보관 루틴과 마찬가지로, 병렬 스레트로서 실행되지 않는다면, 이러한 루틴은 시스템을 재개하는데 걸리는 시간을 수초 더 걸리게 할 수 있다. 이는 인터럽트 구동 병렬 스레트이므로, 시스템 상태가 하드 드라이브(31)로부터 판독되기에 앞서 완전히 실행된다면, 재개에는 거의 혹은 전혀 시간을 추가하지 않을 것이다.As with the modem storage routine, if not run as a parallel thread, this routine can take a few seconds longer to resume the system. Since this is an interrupt driven parallel thread, it will add little or no time to resume if the system state is fully executed before being read from the hard drive 31.

인터럽트 구동 병렬 스레드 모뎀 회복 루틴이 개시된 후, 태스크(486 내지 500)에서, 시스템 메모리는 태스크(304 내지 318)를 참조한 설명에서 기술된 루틴과 유사한 트윈-버퍼(twin- buffer) 루틴을 이용하여 중지 화일로부터 회복된다.After the interrupt driven parallel thread modem recovery routine is initiated, at tasks 486-500, the system memory is suspended using a twin-buffer routine similar to the routine described in the description with reference to tasks 304-318. Recover from a file

이 트윈-버퍼 시스템은 중지 화일로부터 압축된 데이타를 판독하여, 이 판독된 데이타를 세그먼트 E000H에 기록한 후, 그것을 다시 압축해제하여(decompress) 시스템 메모리에 기록한다. 이 두 루틴은 시분할로 작동한다. 한 루틴은 중지 화일로 부터 데이타를 판독하고, 이 판독된 세그먼트를 E000H에 기록하며, 다른 한 루틴은 데이타를 압축해제하여, 이 압축해제된 데이타를 시스템 메모리에 기록한다. 후자는 포어그라운드에서 실행되며, 전자는 백그라운드에서 실행되는 인터럽트-구동 루틴이다. 분명히, 단지 하나의 CPU(40)만이 존재하므로, 주어진 시간에서 단지 하나의 루틴만이 실행될 수 있다. 그러나, 전자의 루틴은 인터럽트-구동 루틴이므로, 중지 화일로부터의 데이타 전송 속도를 최적화 하기 위한 필요에 따라 후자 루틴의 실행을 인터럽트할 수 있다. 두 버퍼 각각의 길이는 전송 시간을 최적화한다고 생각되는 8K 바이트 길이이다.The twin-buffer system reads the compressed data from the pause file, writes this read data to segment E000H, decompresses it again and writes it to system memory. These two routines work in time division. One routine reads data from the pause file, writes the read segment to E000H, and the other routine decompresses the data and writes this decompressed data to system memory. The latter runs in the foreground, while the former is an interrupt-driven routine that runs in the background. Clearly, since only one CPU 40 exists, only one routine can be executed at a given time. However, since the former routine is an interrupt-driven routine, it is possible to interrupt the execution of the latter routine as needed to optimize the data transfer rate from the pause file. The length of each of the two buffers is 8K bytes long, which is considered to optimize transfer time.

이 프로세스는 태스크(486)에서 시작하여, 중지 화일로부터 판독하고,8K 버퍼의 시작 부분을 채우기에 충분한 데이타 세그먼트 E000H에 기록한다. 이때, 버퍼로부터의 판독 루틴(Read from Buffer Routine)(489)은 태스크(306)에서 시작한다. 버퍼로부터의 판독 루틴(489)은 백그라운드에서 실행되며 태스크(490-492)로 구성되는 인터럽트-구동루틴이다. 압축해제루틴(Decompression Routine)(493)은 태스크(494-498)로 구성되며 포어그라운드 루틴이다. 먼저 태스크(490)에서 버퍼로부터의 판독 루틴(489)은 중지 화일의 다음 8K 바이트를 판독하기 시작하여, 이 판독된 데이타를 이제 현재 버퍼(current buffer)인 다른 버퍼에 기록하기 시작한다. 버퍼로부터의 판독 루틴이 중지 화일의 다음 8K 바이트를 판독하여 현재 버퍼에 기록하는 동안, 태스크(494)에서, 압축해제 루틴(493)은 태스크(486)에 의해 채워진 버퍼를 판독한 후, 압축된 데이타를 압축해제하여 시스템 메모리에 기록한다.This process begins at task 486, reads from the pause file, and writes to data segment E000H sufficient to fill the beginning of the 8K buffer. At this point, the Read from Buffer Routine 489 begins at task 306. The read routine 489 from the buffer is an interrupt-driven routine that runs in the background and consists of tasks 490-492. Decompression routine 493 consists of tasks 494-498 and is a foreground routine. First, at task 490, the read routine 489 from the buffer begins reading the next 8K bytes of the pause file, and starts writing this read data to another buffer that is now the current buffer. While the read routine from the buffer reads the next 8K bytes of the pause file and writes it to the current buffer, at task 494, the decompression routine 493 reads the buffer filled by task 486 and then decompresses it. Decompresses data and writes it to system memory.

일단, 압축해제 루틴(498)이 버퍼내의 모든 데이타를 압축해제한 경우, 다음 단계인(496)에서는 전체 시스템 메모리가 모두 압축해제되었는 지를 판단한다.Once the decompression routine 498 decompresses all the data in the buffer, the next step 496 determines whether the entire system memory has been decompressed.

IDE 제어기(86)는 하드 드라이브(31)로부터 신속하게 데이타를 판독할 수 없다. 따라서, 압축 해제 루틴(493)은 언제나, 버퍼로부터의 판독 루틴이 하드 드라이브(81)로부터 현재 버퍼로 데이타를 판독하는 것을 완료하기 전에 하드 드라이브(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)에서 버퍼로부터의 판독 루틴은 백그라운드에서 실행을 멈추고, 사실상, 압축해제 루틴이 마지막 메모리의 압축해제를 끝마치기를 기다린다.The IDE controller 86 cannot read data from the hard drive 31 quickly. Thus, the decompression routine 493 always decompresses an 8K buffer that is not being written to the hard drive 31 before the read routine from the buffer completes reading data from the hard drive 81 into the current buffer. Will complete. Thus, the decompression routine 493 must wait until the read routine 489 from the buffer completes reading the data from the hard drive 31. If the decompression routine 493 did not finish compressing and writing the entire system memory, then at task 498 the decompression routine 493 must wait for the read routine 489 from the buffer. Decompression routine 493 and read routine 489 from the buffer communicate via a set of flags. When read routine 489 from buffer finishes reading data from the pause file to the current buffer, at task 490 the routine 489 switches the buffer flag so that the decompression routine 493 reads from the pause file. The decompression routine 493 indicates that the decompression of the data within can be started. Then at 492 read routine 489 from buffer determines if there are 8K blocks left to be read from the pause file. If there are no blocks left to read, at task 502 the read routine from the buffer reads the remaining data from the pause file and writes this read data to the current buffer. The read routine from the buffer at task 500 then stops executing in the background, in effect waiting for the decompression routine to finish decompressing the last memory.

그동안, 압축해제 루틴(493)은 버퍼 플래그를 조사하여 버퍼가 시스템 메모리로 압축해제될 준비가 되었는지를 판단한다. 즉, 압축해제 루틴은 태스크(598)에서 버퍼로부터의 판독 루틴이 현재 버퍼에 대해 완료할 때까지 기다리며, 완료시압축해제 루프는 태스크(494)에서 속행된다.In the meantime, the decompression routine 493 examines the buffer flag to determine whether the buffer is ready to be decompressed into system memory. That is, the decompression routine waits at task 598 until the read routine from the buffer completes for the current buffer, and the decompression loop at completion continues at task 494.

일단 압축해제 루틴(493)이 모든 시스템 메모리에 대한 압축해제를 완료하면, 실행중인 유일한 백그라운드 루틴은 태스크(1020)를 참조하여 설명된 인터럽트구동 모뎀 회복 루틴이며, 주 프로그램은 태스크(504)에서 속행된다.Once the decompression routine 493 completes decompression for all system memory, the only background routine running is the interrupt-driven modem recovery routine described with reference to task 1020, and the main program continues at task 504. do.

다음, 태스크(504,506)에서 비디오 제어기(56) 및 IDE 제어기(86)는 E000H데이타 구조로부터의 값을 이들 각각의 장치의 레지스터들에 기록함으로써 회복된다. 태스크(504)는 또한 체크포인트가 취하여지고 있으면 중지 루틴이 점프(태스크(1024) 참조)해야 할 것을 나타내는 포인트이다.Next, at task 504 and 506 video controller 56 and IDE controller 86 are recovered by writing a value from the E000H data structure into registers of their respective devices. Task 504 is also a point indicating that the stop routine should jump (see task 1024) if a checkpoint is being taken.

다음에, 태스크(1022)에서, 재개 루틴은 태스크(1020)를 참조하여 설명된 인터럽트 구동 모뎀 회복 루틴이 완료되었는지를 테스트한다. 테스트 결과 루틴이 완료되지 않는다면, 재개 루틴은 이 루틴이 완료되기를 기다린다.Next, at task 1022, the resume routine tests whether the interrupt drive modem recovery routine described with reference to task 1020 has completed. If the test does not complete the routine, the resume routine waits for the routine to complete.

태스크(508)에 도시된 바와 같이, 인터럽트 구동 모뎀 상태 회복 루틴이 완료된 후, CPU 캐시(41) 및 시스템 캐시(60)는 적절한 값을 CPU(40) 및 캐시 제어기(62)에 제각기 기록함으로써 인에이블된다. 이어, 재개 루틴은 태스크(510에서 514까지)에서 세그먼트 E000H 데이타 구조로부터의 값을 각각의 장치내의 레지스터에 기록함으로써 타이머 제어기(102), 8042 키보드 인터페이스 마이크로프로세서(104) 및 8259 인터럽트 제어기(92)의 상태를 회복한다.As shown in task 508, after the interrupt driven modem state recovery routine is completed, the CPU cache 41 and system cache 60 write the appropriate values to the CPU 40 and the cache controller 62, respectively, to print out. Is enabled. The resume routine then writes the values from the segment E000H data structure to the registers in each device at tasks 510 through 514 to the timer controller 102, 8042 keyboard interface microprocessor 104, and 8259 interrupt controller 92. To restore the state of

다음, 태스크(484)에서 UART(94)는 세그먼트 E000H 데이타 구조로부터의 값을 그들 제각기의 레지스터에 기록함으로써 회복된다.Next, at task 484, the UART 94 is recovered by writing the values from the segment E000H data structure into their respective registers.

다음, 태스크(516)에서 재개 루틴은 교환 BIOS 데이타 영역 및 벡터 테이블루틴(Swap BIOS Data Area 및 Vector Table Routine)을 호출한다. 이 루틴이 호출되기 전에, 기지의 BIOS 데이타 영역 및 벡터 테이블은 세그먼트 0000H에서 활동적이며, 중지 화일로부터 판독된 BIOS 데이타 영역 및 벡터 테이블은 세그먼트 E000H에서 비활동적이다. 교환후, 기지의 BIOS 데이타 영역 및 벡터 테이블은 세그먼트 D000H에서 비활동이며, 중지 루틴에 의해 보관된 BIOS 데이타 영역 및 벡터 테이블은 세그먼트 0000H에서 활동이다.The resume routine at task 516 then calls the swap BIOS data area and vector table routine. Before this routine is called, the known BIOS data area and vector table are active in segment 0000H, and the BIOS data area and vector table read from the pause file are inactive in segment E000H. After exchange, the known BIOS data area and vector table are inactive in segment D000H and the BIOS data area and vector table kept by the suspend routine are active in segment 0000H.

마지막으로, 태스크(518)에서 재개 루틴은 CPU 회복 루틴으로 점프하여,CPU(40)는 중지되기 전 상태로 회복된다. CPU 회복 루틴(Restore CPU Routine)은 제 14 도를 참조하여 보다 상세히 기술될 것이다. 결국 CPU 회복 루틴은 실행 제어를 다시 APM으로 넘긴다.Finally, in task 518 the resume routine jumps to the CPU recovery routine, so that the CPU 40 returns to the state before it was stopped. The CPU recovery routine will be described in more detail with reference to FIG. The CPU recovery routine eventually passes execution control back to APM.

최종적으로, CPU(40)는 복귀(RETURN) 인스트럭션을 실행하여, 시스템이 APM으로 복귀토록 한다. 이제 시스템은 시스템이 전혀 중지되지 않았던 것처럼 코드실행을 속행한다. 실제로, 시스템은 중지/재개 절차에 의해 영향을 받지 않는다.Finally, the CPU 40 executes a RETURN instruction, causing the system to return to the APM. The system now continues executing code as if the system had not stopped at all. In practice, the system is not affected by the suspend / resume procedure.

이제 제 13 도를 참조하면, 보관 CPU 상태 루틴(Save CPU State Routine)이도시되어 있다. 태스크(600)에서 중지 루틴은 보관 CPU 상태 루틴으로 점프한다.Referring now to FIG. 13, a Save CPU State Routine is shown. In task 600, the stop routine jumps to the save CPU state routine.

유의할 것은, APM은 이들 루틴이 실행되는 세그먼트 E000H 및 E000H를 판독/기록으로 인에이블한다는 것이다. 또한, 태스크(602)에서 EFLAGS 및 8개의 범용 레지스터들이 APM에 의해 보관된다. 태스크(604)에서 보관 CPU 상태 루틴은 먼저 임의의 DMA 동작이 끝나기를 기다리고, 마우스(13) 데이타 패킷에 동기파(synchronlize)시켜, 이 루틴이 마우스 패킷과 전송간에 실행되도록 한다. 다음의 단계들에 의해 DMA가 종료되어 마우스 패킷에 동기화될 수 있다.(1) 인터럽트를 인에이블하고, (2) 임의의 DMA가 완료될 때까지 7 밀리초(milliseconds)를 기다리고,(3) 인터럽트를 디스에이블시키고,(4) 마우스 패킷 경계(mouse packet boundary) 때까지 5밀리초를 기다리고,(5) 인터럽트를 인에이블시키고,(6) 마우스 패킷이 도착할 때까지 5 밀리초를 더 기다리고,(7) 인터럽트를 디스에이블시킨다. 이들 단계 후에, 코드는 마우스 패킷들 사이에서 안전하게 실행된다.Note that the APM enables to read / write the segments E000H and E000H where these routines are executed. Also, in task 602, EFLAGS and eight general purpose registers are stored by the APM. At task 604, the archiving CPU state routine first waits for any DMA operation to finish and synchronizes the mouse 13 data packet so that this routine is executed between the mouse packet and the transmission. DMA can be terminated and synchronized to a mouse packet by the following steps: (1) enable interrupts, (2) wait 7 milliseconds for any DMA to complete, and (3) Disable the interrupt, (4) wait 5 milliseconds until the mouse packet boundary, (5) enable the interrupt, (6) wait 5 milliseconds further until the mouse packet arrives, (7) Disable the interrupt. After these steps, the code runs safely between mouse packets.

다음 태스크(606)에서, 어드레스선(20)(I/O 포트 92H)의 상태는 스택(stack)상에 푸시(PUSH)된다.In the next task 606, the state of the address line 20 (I / O port 92H) is pushed onto the stack.

실행 코드의 흐름은 CPU(40)가 SMI를 갖는 S 부분인지 여부에 따라 태스크(1030)에서 분기된다. S 부분이라면, CPU(40)는 태스크(1032)에서 마이크로제어기(U2)에게 명령하여 CPU(40)로 다시 SMI를 발생하도록 한다. SMI에 응답하여,CPU(40)내 마이크로코드는 태스크(1034)에서 CPU(40)의 상태를 E000H 데이타 구조내에 E000 : FE00H로 보관한다. 그 후, CPU(40)는 태스크(1036)에서 부동 소숫점 코프로세서(floating point coprocessor)의 상태를 보관하고, 태스크(1038)에서 중지루틴(제 10 도)을 호출한다. 본 명세서의 다른 곳에서 설명한 바와 같이, 중지 루틴은 태스크(1040)에서 복귀하고, 마찬가지로 태스크(1040)에서 부동 소숫점 코프로세서의 상태를 회복한다. 그 후, 태스크(1042)에서, RSM(resume) 인스트럭션은 CPU 상태를 회복시킨 다음 태스크(732)로 분기한다.The flow of execution code branches at task 1030 depending on whether CPU 40 is an S portion with SMI. If it is the S portion, the CPU 40 instructs the microcontroller U2 in the task 1032 to generate the SMI back to the CPU 40. In response to the SMI, the microcode in the CPU 40 keeps the state of the CPU 40 at task 1034 as E000: FE00H in the E000H data structure. CPU 40 then maintains the state of the floating point coprocessor at task 1036 and invokes a stop routine (FIG. 10) at task 1038. As described elsewhere herein, the abort routine returns from task 1040 and likewise recovers the state of the floating point coprocessor in task 1040. Then, at task 1042, the resume (RSM) instruction recovers the CPU state and then branches to task 732.

다른 한편, CPU(40)가 SMI를 갖지 않는다면, CPU 상태는 제 13 도 코드의 나머지 부분(remainder)을 이용해 보관되어야 하고, 수치 코프로세서(44)의 상태는 태스크(608)에서 스택으로 푸쉬된다. 다음에, 태스크(610)에서, 플래그는 세트되거나 클리어되어 CPU가 각각 32비트 모드 또는 16비트 모드에서 실행되는지를 표시한다.On the other hand, if the CPU 40 does not have SMI, the CPU state must be kept using the remainder of the FIG. 13 code, and the state of the numerical coprocessor 44 is pushed onto the stack in task 608. . Next, at task 610, a flag is set or cleared to indicate whether the CPU is running in 32-bit mode or 16-bit mode, respectively.

실행 코드의 흐름은, 태스크(612)에서 CPU(40)가 보호 모드(Protected Mode)에서 실행중인지의 여부에 따라 분기한다. CPU(40)가 보호 모드에서 실행중이 아닌 경우, 실모드(Real Mode)에서 실행중임이 분명하며, 레지스터들은 직접적인 방식(straight forward manner)으로 보관될 수 있다. 먼저, 태스크(614)에서 머신 상태 워드(machine status word)내의 값 및 CR3내의 값들은 세그먼트 E000H 데이타 구조에 기록된다. 또한, 태스크(614)에서, TR 및 LDTR은 실모드에서 0이므로, TR 및 LDTR에 대응하는 영역인 세그먼트 E000H 데이타 구조에 0이 기록된다.The flow of execution code branches at task 612 depending on whether the CPU 40 is running in a protected mode. If the CPU 40 is not running in a protected mode, it is clear that it is running in a real mode, and the registers can be stored in a straight forward manner. First, at task 614 the value in the machine status word and the value in CR3 are written to the segment E000H data structure. Further, in task 614, since TR and LDTR are zero in real mode, zero is recorded in the segment E000H data structure, which is an area corresponding to TR and LDTR.

그 다음, 코드는 태스크(616)에서 공통 코드 경로(common code path)와 합쳐져(merge), GDTR 및 LDTR내에 보관된 값들이 세그먼트 E000H 데이타 구조에 기록된다. 다음, 실행 코드의 흐름은 태스크(618)로 진행하여, CPU(40)가 가상 8086 모드에서 실행되는지 아닌지의 여부에 따라 분기한다. CPU(40)가 가상 8086 모드에서 실행중이 아닌 경우, 코드는 공통 경로를 따라 태스크(620)로 진행하여, 디버그레지스터들(DR7, DR6, DR3, DR2, DR1 및 DR0)이 스택에 푸시된다. 이들 레지스터는 디버거 혹은 다른 루틴에 의해 사용된다. 그 다음, 태스크(622)에서 DS, ES,FS 및 GS가 스택에 푸시된다. 그 다음, CS, SS 및 ESP내의 값들은 세그먼트 E000H 데이타 구조에 기록된다.The code then merges with the common code path at task 616 so that the values stored in the GDTR and LDTR are written to the segment E000H data structure. The flow of execution code then proceeds to task 618, branching according to whether or not CPU 40 is running in virtual 8086 mode. If the CPU 40 is not running in the virtual 8086 mode, the code proceeds to task 620 along a common path where the debug registers DR7, DR6, DR3, DR2, DR1 and DR0 are pushed onto the stack. . These registers are used by debuggers or other routines. Next, at task 622, DS, ES, FS, and GS are pushed onto the stack. The values in CS, SS and ESP are then written to the segment E000H data structure.

이 시점에서, 세그먼트 E000H 데이타 구조에 기록되어야 할 모든 값들이 기록되었고, 따라서, 태스크(626)에서 섀도우 RAM 세그먼트 E000H 및 F000H는 판독-전용으로 변경될 수 있다. 다음, 태스크(628)에서 CPU 캐시(41)는 라이트-백 및 무효화 캐시 커맨드(Write Back and Invalidate Cache command)를 사용하여 플러시(flush) 된다.At this point, all the values that should be written to the segment E000H data structure have been written, so that, at task 626, shadow RAM segments E000H and F000H can be changed to read-only. Next, at task 628 the CPU cache 41 is flushed using the Write Back and Invalidate Cache command.

긍극적으로, 태스크(630)에서 고유의 셧-다운 플래그(unique Shutdowu Flag)가 CMOS 비휘발성 메모리(96)내에 세트된다. 마지막으로, 보관 CPU 상태 루틴은 중지 루틴으로 사실상 복귀(Return)한다. 코드에서 복귀는 사실상 RESET에 뒤이은 분기이다. CPU(40)는 리세트 벡터가 가리키는 코드로 점핑함으로써 리세트된다. CPU(40)를 리세트하면 CPU가 실모드로 진입하며, 실모드에서는 모든 장치 및 메모리 영역이 보호 고장(protection fault) 발생의 염려 없이 액세스될 수 있다.Ultimately, at task 630 a unique Shutdowu Flag is set in CMOS non-volatile memory 96. Finally, the save CPU state routine actually returns to the stop routine. In code, a return is actually a branch following a RESET. The CPU 40 is reset by jumping to the code indicated by the reset vector. Resetting the CPU 40 enters the CPU in real mode, where all devices and memory areas can be accessed without fear of occurrence of a protection fault.

이 시점 후에, CPU 상태가 보관되고, 중지 루틴은 시스템의 나머지 상태를 보관해야만 한다.After this point, the CPU state is saved and the stop routine must save the rest of the system.

리세트 벡터가 가리키는 코드내에서, 프로그램 제어는 셧 다운 플래그(Shutdown Flag)가 CMOS(96)에서 세트되어 있는지의 여부에 따라 분기한다. 셧-다운 플래그가 클리어된 경우, 시스템은 정상적으로 부팅한다. 반면에, 셧-다운 플래그가 세트되어 있는 경우, 코드는 나머지 중지 루틴으로 분기한다. 즉, 실행 제어는 중지 루틴내의 제 10 도에 도시된 태스크(253)로 점프하여, 시스템(10)의 중지를 완료한다. 따라서, 태스크(632)에서 보관 CPU 상태 루틴은 중지 루틴으로 효과적으로 복귀한다.In the code indicated by the reset vector, program control branches depending on whether or not a shutdown flag is set in the CMOS 96. If the shutdown flag is cleared, the system boots normally. On the other hand, if the shutdown flag is set, the code branches to the rest of the stop routine. In other words, execution control jumps to task 253 shown in FIG. 10 in the suspend routine to complete suspend of system 10. Thus, at task 632 the save CPU state routine effectively returns to the suspend routine.

태스크(612)를 다시 참조하면, CPU가 보호 모드에 있는 경우, 코드는 태스크(634)에서, CPU가 가상 8086 모드내에 있는지의 여부에 따라 분기한다. CPU가 가상 8086 모드가 아닌 경우, 코드는 태스크(636)에서 현재 특권 레벨(current priviledge level)이 0인지 혹은 아닌지의 여부에 따라 다시 분기한다. 현재 특권이 0이 아닌 경우, 적당한 특권이 없는 루틴이 보관 CPU 상태 루틴을 실행중이며,[태스크(652)에서 시작하는] 치명적 중지 에러 루틴(Fatal Suspend Error Routine)이 호출된다. 치명적 중지 에러 루틴은 후술될 것이다. 프로그램 제어가 치명적 중지 에러 루틴으로부터 복귀하는 경우, CPU는 보관 CPU 상태 루틴이 호출되기 전의 상태로 복귀되어야 하며, 따라서, 프로그램 실행은 제 14 도의 태스크(794)로 분기하여, CPU의 부분 회복(partial restore)을 수행한다. 단지 부분 회복만이 필요한데 그 이유는 CPU의 매우 작은 부분만이 수정되었기 때문이다.Referring back to task 612, if the CPU is in protected mode, the code branches at task 634 depending on whether the CPU is in virtual 8086 mode. If the CPU is not in virtual 8086 mode, the code branches back to task 636 depending on whether the current privilege level is zero or not. If the current privilege is not zero, then a routine without proper privilege is executing a stored CPU state routine, and a Fatal Suspend Error Routine (starting at task 652) is called. Fatal stop error routines will be described below. If program control returns from the fatal stop error routine, the CPU must return to the state it was in before the stored CPU state routine was invoked, so that program execution branches to task 794 in FIG. 14 to partially recover the CPU. restore). Only partial recovery is needed because only a very small portion of the CPU has been modified.

태스크(636)를 다시 참조하면, 호출 코드가 적당한 특권 레벨을 가지는 경우, 태스크(642)에서 보관이 계속되어 CR0, CR3, TR 및 LDTR의 값들이 세그먼트E000H 데이타 구조에 보관된다. 그 후, 전술한 바와 같이, 태스크(616)에서 이 코드로는 공통 코드 경로와 합쳐져 GDTR 및 IDTR의 값들이 E0000H 데이타 구조에 보관된다. 이곳으로부터, 코드는 전술한 태스크(6B 내지 632)의 경로를 따르며, 그 결과 나머지 중지 루틴 코드로 복귀(RESET + 분기)한다.Referring back to task 636, if the calling code has the appropriate privilege level, archiving continues in task 642 so that the values of CR0, CR3, TR, and LDTR are stored in the segment E000H data structure. Then, as described above, in task 616 this code is combined with the common code path so that the values of GDTR and IDTR are stored in the E0000H data structure. From there, the code follows the path of tasks 6B-632 described above, resulting in a return (RESET + branch) to the rest of the abort routine code.

태스크(634)를 다시 참조하면, CPU(40)가 가상 8086 모드에 있는 경우, 실행은 태스크(644)에서 속행되어, 머신 상태 워드(CR0의 하위 16 비트)의 값이 E000H데이타 구조에 보관되고, 세그먼트 E000H 데이타 구조내의 플래그가 세트되어 CPU가 가상 8086 모드라는 것을 나타낸다. 그 다음, 이 코드는 전송 태스크(646 및 648)를 통해 태스크(616)에서 공통 코드와 합쳐진다. 태스크(618)에서, CPU가 가상 8086 모드인 경우, 제어는 태스크(650)로 분기하여, DE, ES, FS 및 GS의 값들이 세그먼트 E000H 데이타 구조에 보관된다. 이 코드는 태스크(624)에서 공통 코드와 다시 합쳐진다. 이곳으로부터, 코드는 전술한 경로(624 내지 632)를 따르고, 그 결과 나머지 중지 루틴 코드로 복귀(RESET + 분기)한다.Referring back to task 634, if CPU 40 is in virtual 8086 mode, execution continues at task 644 such that the value of machine status word (lower 16 bits of CR0) is stored in the E000H data structure. The flag in the segment E000H data structure is set to indicate that the CPU is in virtual 8086 mode. This code is then merged with common code in task 616 via transfer tasks 646 and 648. At task 618, when the CPU is in virtual 8086 mode, control branches to task 650 where the values of DE, ES, FS, and GS are stored in the segment E000H data structure. This code is merged back with the common code at task 624. From here, the code follows the paths 624 through 632 described above, resulting in a return (RESET + branch) to the remaining stop routine code.

치명적 중지 에러 루틴은 태스크(652 내지 664)로 구성되며, 부적절한 특권 레벨을 가진 코드가 CPU의 상태를 보관하고자 하는 경우 태스크(638)에서 호출된다. 먼저, 태스크(654)에서 고장 안전 타이머가 리세트된다. 그 다음 태스크(656)에서, 스피커(speaker)는 가정 주파수에서 수차례 비프음을 낸다. 예를 들어,1/6 초 간격으로 0.25 초동안 886 Hz에서 3차레 비프음을 낸다. 3차례의 비프음은 시도된 중지가 발생하지 않았음을 사용자에게 경고한다. 비프음 후에, 태스크(658)에서 고장 안전 타이머가 다시 리세트되어, 고장 안전 타이머가 완료되고 이로써 전원(17)이 셧-다운되기 전에 사용자에게 15초 내지 18초를 제공한다.The fatal stop error routine consists of tasks 652 through 664, which are called in task 638 when code with an inappropriate privilege level wishes to keep the state of the CPU. First, at task 654, the failsafe timer is reset. In task 656, the speaker then beeps several times at home frequency. For example, beep 3 times at 886 Hz for 0.25 seconds at 1/6 second intervals. Three beeps warn the user that no attempted outage has occurred. After the beep, the failsafe timer is reset again at task 658 to provide the user with 15 to 18 seconds before the failsafe timer is complete and power supply 17 shuts down.

다음, 태스크(660 내지 662)에서 치명적 중지 에러 루틴은 사용자가 스위치(21)를 눌러 중지를 포기하기를 원하는지를 체크한다. 스위치의 폐쇄는 CPU(40)가 마이크로제어기(U2)에 폐쇄 이벤트가 발생하였는지의 여부를 질의함으로써 체크된다. 사용자가 버튼(21)을 누른 경우, 실행 제어는 전술한 태스크(640)로 복귀한다. 이과 달리,15초 내지 18초내에 사용자가 버튼(21)을 누르지 않는 경우, 고장 안전 타이머가 완료로되고 전원은 마이크로제어기에 의해 턴 오프되며, CPU(40)에 의한 모든 코드 실행은 시스템 전압이 허용 오차를 벗어남에 따라 중단된다.Next, at tasks 660-662 the fatal stop error routine checks if the user presses the switch 21 and wants to give up the stop. The closing of the switch is checked by the CPU 40 querying the microcontroller U2 whether a closing event has occurred. When the user presses the button 21, execution control returns to the task 640 described above. In contrast, if the user does not press the button 21 within 15 to 18 seconds, the fail-safe timer is completed and the power is turned off by the microcontroller, and all code execution by the CPU 40 causes the system voltage to be Abort as the tolerance goes out.

이제 제 14 도를 참조하면, 태스크(700)로부터 시작하는 CPU 회복 루틴(Restore CPU Routine)이 도시되어 있다. 이 루틴은 하드웨어 및 메모리의 나머지 부분이 중지전의 상태로부터 회복된 후 재개 루틴에 의해 호출된다.Referring now to FIG. 14, a CPU restore routine starting from task 700 is shown. This routine is called by the resume routine after the rest of the hardware and memory has recovered from the state before the suspension.

먼저, 세그먼트 E000H가 아직 판독/기록이 아니면, 세그먼트 E000H는 태스크(702)에서 판독/기록으로 되어야 한다.First, if segment E000H is not yet read / write, segment E000H should be read / write at task 702.

다음, 실행 코드는 태스크(704)로 진행하여, CPU(40)가 중지되었을 당시 가상 8086 모드에서 실행중이였는지의 여부에 따라 분기한다. 시스템(10)이 중지되었을 때 CPU(40)가 가상 8086 모드에서 실행중이었던 경우, 실행 코드는 가상 8086CPU 회복(Virtual 8086 CPU restore)에 고유한 태스크(706 내지 728)로 진행한다.Execution code then proceeds to task 704 and branches depending on whether it was running in virtual 8086 mode when CPU 40 was stopped. If the CPU 40 was running in the virtual 8086 mode when the system 10 was stopped, the execution code proceeds to tasks 706-728 that are specific to the virtual 8086 CPU restore.

그 후, 코드는 태스크(730 내지 748)의 공동 경로와 합쳐진다.The code then merges with the common path of tasks 730-748.

상태가 보관되었을 때 CPU가 가상 8086 모드이였던 경우, CR3, LDTR 및 TR은 보관 CPU 상태 루틴에 의해 액세스되어 그들의 값이 E000H 데이타 구조로 보관될 수 없었다. 따라서, CR3, LDTR 및 TR은 태스크(706,708 및 710)에서 각각 추정(estimate)되어야만 한다. 일반적으로, 이들은 시스템 RAM(53)을 통해 CR3, LDTR 및 TR가 가리키는 구조를 탐색하는 것에 의해 추정된다. 예를 들면, GDT내의 LDT엔트리를 발견하면 LDTR이 결정될 수 있다.If the CPU was in virtual 8086 mode when state was archived, CR3, LDTR, and TR were accessed by the archive CPU state routine so that their values could not be stored in the E000H data structure. Thus, CR3, LDTR and TR must be estimated at tasks 706,708 and 710, respectively. In general, they are estimated by searching the system RAM 53 for the structure pointed to by CR3, LDTR, and TR. For example, LDTR can be determined by finding an LDT entry in the GDT.

CR3는 태스크(706)에서 추정된다. CR3는 페이지 디렉토리 베이스 레지스터(Page Directory Base Register : PDTR)를 보유하며, 이 레지스터는 디렉토리의 페이지 프레임 어드레스, 페이지-레벨 캐시 디스에이블(Page-Level Cache Disable : PCD) 비트 및 페이지-레벨 라이트 쓰루(Page-Level Write Through : PWT) 비트를 가진다. PDBR의 추정은 페이지 디렉토리가 시스템 RAM(53)내에서 4K 경계(boundary)에서 시작해야 한다는 것을 알고, 보관 CPU 상태 루틴에 의해 세그먼트 E000H 데이타 구조에 보관된 IDTR 및 GDTR의 값을 알고, BIOS 코드가 세그먼트 E000H로부터 실행중이라는 가정하에 수행된다. BIOS 코드는 속도를 향상시키기 위하여 이미 섀도우 RAM내로 섀도우되었으므로 이러한 가정은 타당하다. 운영 체제가 BIOS 코드를 다른 영역으로 복사한 경우에는 CR3의 추정은 실패할 수 있다.CR3 is estimated at task 706. CR3 holds the Page Directory Base Register (PDTR), which is the directory's page frame address, the Page-Level Cache Disable (PCD) bit, and the page-level write-through. Page-Level Write Through: PWT) bit. The PDBR estimates that the page directory must start at the 4K boundary within the system RAM 53, knows the values of IDTR and GDTR stored in the segment E000H data structure by the archive CPU state routine, It is performed on the assumption that it is running from segment E000H. This assumption is valid because the BIOS code is already shadowed into shadow RAM to improve speed. If the operating system copies the BIOS code to another area, the estimation of CR3 may fail.

전술한 지식 및 가정과 함께, BIOS 코드 세그먼트에 대응하는 페이지 변환테이블(page translation table)의 존재 여부를 알기 위해 물리적 메모리의 매 4K 페이지가 테스트된다.With the above knowledge and assumptions, every 4K pages of physical memory are tested to see if there is a page translation table corresponding to the BIOS code segment.

즉 페이지로의 0380H의 오프셋(offset)은 값 000F0XX, 000F1XXX, 000F2XXX,...000FEXXX를 포함할 것이다. 일단 페이지의 위치가 파악되면, 시스템 RAM(53)을 탐색하여 이렇듯 위치가 파악된 페이지 테이블의 물리적 어드레스에 대응하는 첫 엔트리를 가지는 페이지 디렉토리를 찻는다. 페이지 디렉토리의 물리적 어드레스는 양호한 PDTR 추정값이다.That is, an offset of 0380H to the page will contain the values 000F0XX, 000F1XXX, 000F2XXX, ... 000FEXXX. Once the location of the page is known, the system RAM 53 is searched to populate the page directory with the first entry corresponding to the physical address of the locationd page table. The physical address of the page directory is a good PDTR estimate.

그 후, 가설 PDBR(hypothetical PDBR)은 PDBR이 GDTR 및 LDTR의 어드레스를 정확하게 변환하는지 확인함으로써 검증(verify)된다. 즉, PDBR은 GDTR의 선형 어드레스(linear address)를 변환하는데 사용되고, GDT의 첫 엔트리는 널(null)이 되는지 확인된다(GDT의 첫 8 바이트는 모든 CPU 모드내에서 항상 00H임). 그 후, 복귀된 물리적 어드레스가 물리적 메모리의 범위내에 드는지 확인된다. 선형적-물리적 변환(linear to physical translation)을 성취하기 위해, CPU의 변환 방법을 모방(mimic)하는 서브루틴이 사용된다. 변환된 어드레스는 ESI내에 복귀되고, 물리적 페이지가 물리적 메모리내에 존재하는 경우 캐리 플래그 CF는 클리어되며, 물리적 페이지가 메모리에 존재하지 않는 경우 CF는 세트된다. 이 변환 루틴을 사용하여, GDT의 첫 바이트가 메모리(53)로부터 판독된다. GDT의 첫 엔트리가 널(null)인 경우, 가설 PDBR은 제 1 테스트를 통과하고, 따라서, 다시 한 번 테스트된다.The hypothetical PDBR is then verified by verifying that the PDBR correctly translates the addresses of the GDTR and LDTR. That is, PDBR is used to translate the linear address of the GDTR, and the first entry of the GDT is checked to be null (the first 8 bytes of the GDT are always 00H in all CPU modes). Then, it is checked whether the returned physical address is within the range of the physical memory. In order to achieve a linear to physical translation, a subroutine that mimics the CPU's translation method is used. The translated address is returned in the ESI, the carry flag CF is cleared if the physical page is in physical memory, and the CF is set if the physical page is not in memory. Using this conversion routine, the first byte of the GDT is read from the memory 53. If the first entry of the GDT is null, the hypothetical PDBR passes the first test and is therefore tested again.

그 후, PDBR은 변환 루틴을 사용하여 IDT를 발견하기 위해 IDTR을 변환하는데 사용된다. 그 다음, 복귀된 물리적 어드레스는 물리적 메모리의 범위내에 드는지 확인된다. IDT의 첫 위치가 물리적 메모리내에 존재하는 경우, PDTR은 제 2 테스트를 통과한다.The PDBR is then used to convert the IDTR to find the IDT using a conversion routine. Then, the returned physical address is checked to be within the range of the physical memory. If the first location of the IDT is in physical memory, the PDTR passes the second test.

가설 PDBR이 GDTR 및 IDTR로 올바르게 변환되는 경우, 그 값은 PDBR로 추정되어(presumed) 세그먼트 E000H 데이타 구조내 CR3 영역에 기록된다. 반면에, 가설 CR3가 어느 하나의 테스트라도 실패하는 경우, 루틴은 다시 시작되어, 시스템메모리를 탐색하여 유효한 CR3로 인도할 지도 모를 또다른 BIOS 코드 세그먼트 페이지 변환 테이블을 찾는다.If the hypothesis PDBR is correctly converted to GDTR and IDTR, the value is presumed as PDBR and recorded in the CR3 region in the segment E000H data structure. On the other hand, if hypothesis CR3 fails any of the tests, the routine is restarted to find another BIOS code segment page conversion table that may search the system memory and lead to a valid CR3.

PCD 및 PWT는 정상 플레이너 동작동안 00H에서 고정된 것으로 항상 추정된다. 이들 값은 0으로 세트되며, CR3 영역의 PDBR과 함께 세그먼트 E000H 데이타구조내에 기록된다.PCD and PWT are always assumed to be fixed at 00H during normal planar operation. These values are set to zero and are recorded in the segment E000H data structure together with the PDBR of the CR3 area.

일단 CR3가 추정되었으면, 태스크(708)에서 LDTR이 추정된다. LDT가 GDT내의 어딘가에 있음을 알고, LDT가 메모리내에 존재하여야 함을 알므로, CR3가 추정되었을 때, LDTR은 추정될 수 있다. LDTR을 추정하기 위해, GDT가 탐색되어 존재하는 것으로 표시된 LDT를 찾는다.(태스크(706)를 참조하여 설명된 변환 루틴을 사용하여 테스트되는) 물리적 메모리에 존재하고, 존재하는 것으로 표시된 첫 LDT는 LDTR가 가리키는 테이블이라고 가정된다. 이 테이블의 시작부의 물리적 어드레스는 세그먼트 E000H 데이타 구조내의 LDTR 영역에 보관된다.Once CR3 has been estimated, LDTR is estimated at task 708. Knowing that the LDT is somewhere in the GDT and knowing that the LDT should be in memory, the LDTR can be estimated when CR3 is estimated. To estimate the LDTR, the GDT is searched to find an LDT marked as present (tested using the conversion routine described with reference to task 706) and the first LDT marked as present is the LDTR. Is assumed to be the table pointed to by. The physical address of the beginning of this table is stored in the LDTR area in the segment E000H data structure.

비록 OS/2 하에서, 하나 이상의 LDT가 존재하는 것으로 표시될 수 있고 물리적 메모리에 존재할 수 있지만, 전술한 LDTR 추정 방법은 충분히 유용하다고 믿어진다. EMM386은 공통 가상 8086 모드 루틴(common Virtual 8086 Mode routine)이며, 따라서, 문제들을 일으키는 것처럼 보일 수 있다. 그러나, EMM386은 단지 하나의 CR3와 하나의 LDTR만을 가지므로, EMM386의 CR3 및 LDTR은 추정이 용이하다.Although under OS / 2, one or more LDTs may be marked as present and present in physical memory, it is believed that the above-described LDTR estimation method is sufficiently useful. EMM386 is a common Virtual 8086 Mode routine and, therefore, may appear to cause problems. However, since EMM386 has only one CR3 and one LDTR, the CR3 and LDTR of EMM386 are easy to estimate.

일단 CR3 및 LDTR이 추정되면, 태스크(710)에서 TR이 추정된다. 필연적으로 GDT 및 LDT내의 각 태스크 선택기 엔트리(task selector entry)가 탐색되어 비지비트(busy bit)가 세트된 태스크 상태 선택기를 찾는다. 비지 80286 태스크 상태선택기인지 혹은 비지 80486 태스크 상태 선택기인지를 판단하기 위해 각 엔트리의 유형 필드(type field)가 테스트된다. 비지 286 TSS 혹은 비지 486 TSS를 가지는 첫 엔트리는 TR이 지시하는 어드레스로 추정된다. 비지 286 혹은 486 TSS를 가지지 엔트리의 물리적 주소는 세그먼트 E000H 데이타 구조내의 TR 영역에 보관된다.Once CR3 and LDTR are estimated, TR is estimated at task 710. Inevitably, each task selector entry in the GDT and LDT is searched to find a task state selector with a busy bit set. The type field of each entry is tested to determine whether it is a busy 80286 task state selector or a busy 80486 task state selector. The first entry with busy 286 TSS or busy 486 TSS is assumed to be the address indicated by TR. The physical address of an entry with a busy 286 or 486 TSS is stored in the TR field in the segment E000H data structure.

어떠한 엔트리도 비지 286 혹은 486 TSS를 가지지 않는 경우, 세그먼트 E000H 데이타 구조내의 TR 영역에 0이 보관된다.If no entry has a busy 286 or 486 TSS, 0 is stored in the TR field in the segment E000H data structure.

CR3, LDTR 및 TR을 추정한 후, 코드는 태스크(712)에서 속행된다. 태스코(712)에서 TR이 유효 TSS를 가리키는 경우, 태스크(714)에서 TR가 가리키는 TSS의 비지 비트는 클리어된다. 어느 경우나, 코드는 태스크(716)로 진행하여, DS, ES, FS 및 GS가 GDT에 대한 유효한 선택기과 함께 로딩된다. 그 후 태스크(718)에서, CR3 및 CR0가 세그먼트 E000H 데이타 구조로부터의 값으로 로딩된다. 다음, 태스크(720)에서 페이징이 인에이블되어, 선형 어드레스가 물리적 어드레스와 동일한 유일한 영역은 세그먼트 E000H 및 F000H내의 영역이 된다. 그 다음, 태스크(722)에서 IDTR, GDTR, LDTR 및 TR이 세그먼트 E000H 데이타 구조에 보관된 값으로 로딩된다.After estimating CR3, LDTR, and TR, the code continues at task 712. If the TR indicates a valid TSS at the task 714, the busy bit of the TSS indicated by the TR at task 714 is cleared. In either case, the code proceeds to task 716 where the DS, ES, FS and GS are loaded with valid selectors for the GDT. Then at task 718, CR3 and CR0 are loaded with values from the segment E000H data structure. Paging is then enabled at task 720 so that the only area where the linear address is equal to the physical address is the area within segments E000H and F000H. Then, in task 722, IDTR, GDTR, LDTR, and TR are loaded with the values stored in the segment E000H data structure.

마지막으로, 태스크(724 및 726)에서, 세그먼트 E000H 데이타 구조로부터의 GS, FS, DS, ES, SS, ESP,(W 비트를 세팅한 후) EFLAGS 및 CS에 대응하는 값들을 스택상에 푸싱(pushing)함으로써, 가상 8086 인터럽트 스택이 생성된다. 또한, 태스크(726)에서 태스크(730)의 코드에 대응하는 복귀 어드레스(return address)가 스택상에 푸싱된다. 마지막으로, IRETD 인스트럭션이 실행되어 CPU(40)를 가상8086 모드로 다시 배치하고, 태스크(730)에 대응하는 코드로 실행을 전송한다.Finally, in tasks 724 and 726, pushing the values corresponding to GS, FS, DS, ES, SS, ESP, EFLAGS and CS (after setting the W bit) from the segment E000H data structure (on the stack) by pushing a virtual 8086 interrupt stack. In addition, at task 726 a return address corresponding to the code of task 730 is pushed onto the stack. Finally, the IRETD instruction is executed to reposition the CPU 40 in virtual 8086 mode, and send execution to code corresponding to task 730.

태스크(730)는 제 14 도의 각종 경로가 공통으로 사용하는 공통 경로를 시작한다. 태스크(730)에서 코프로세서(44)는 세그먼트 E000H 데이타 구조에 보관된 값을 이용하여 회복된다. 다음, 태스크(732)에서 어드레스선(20)(I/O 포트 92H)의 상태가 스택으로부터 팝(pop)된다. 태스크(732)는 SMI에 기초한 CPU 보관 상태 루틴(SMI-based CPU save state routine)이 점프한 곳이기도 하다[태스크(1046) 참조]. 그 다음, 태스크(734)에서 섀도우 RAM 세그먼트 E000H가 다시 판독-전용이 된다. 태스크(736)에서 APM은 제 6A 도 및 제 19 도를 참조하여 설명한 바와 같이 고상 안전 타이머를 재시작시킴으로써 하드웨어에 접속된다. 그 다음, 태스크(738)에서 섀도우 RAM 세그먼트 E000H 및 F000H가 다시 판독-전용으로 된다.Task 730 starts a common path that the various paths of FIG. 14 use in common. At task 730 coprocessor 44 is recovered using the values stored in segment E000H data structure. Next, at task 732, the state of address line 20 (I / O port 92H) is popped from the stack. Task 732 is also where the SMI-based CPU save state routine has jumped (see task 1046). Then, at task 734, shadow RAM segment E000H is again read-only. At task 736 the APM is connected to the hardware by restarting the solid state safety timer as described with reference to FIGS. 6A and 19. Then, at task 738, shadow RAM segments E000H and F000H are again read-only.

마지막으로, 태스크(740)에서, CPU 상태 회복 루틴은 정상 재개가 발생하였음을 나타내는 플래그를 세트한다. 태스크(742,744 및 746)는 CPU 상태 회복 루틴에 의해 실행되지 않으며, 중지 이벤트에 의해 인터럽트되었던 코드로 복귀하기에 앞선 어느시점에서 8개의 범용 레지스터들이 스택으로부터 팝 오프(pop off)되고,(코드가 인터럽트되었을 시 마스크가능 인터럽트들이 인에이블된 경우) 마스크가능 인터럽트가 인에이블되고, 플래그가 스택으로부터 팝 오프되는 것을 나타내는 데 사용된다. 마지막으로, CPU 상태 회복 루틴은 감독 루틴으로 복귀하며, 감독 루틴은 제어를 다시 APM으로 복귀시키고, APM은 모든 훼손된 시스템값(stale system values)들을 갱신하고(update), 제어를 다시 인터럽트되었던 코드로 복귀시킨다.Finally, at task 740, the CPU state recovery routine sets a flag indicating that normal resume has occurred. Tasks 742, 744, and 746 are not executed by the CPU state recovery routine, and at some point before the return to code that was interrupted by the stop event, eight general purpose registers are popped off the stack (the code is Maskable interrupts are enabled when interrupted) Maskable interrupts are enabled and used to indicate that a flag is popped off the stack. Finally, the CPU state recovery routine returns to the supervision routine, which returns control back to APM, which updates all stale system values and returns control back to the code that was interrupted. Return

태스크(704)를 다시 참조하면, CPU(40)가 인터럽트되었을 당시 가상 8086 모드에 있지 않았던 경우, 코드는 경로(750 내지 792)로 진행하고, 태스크(730 내지748)의 공통 경로와 병합한다. 태스크(750)에서, 세그먼트 E000H 데이타 구조내의 TR값이 TR이 유효 TSS를 가리킨다고 나타내는 경우, 태스크(752)에서 이 TSS의 비지 비트는 클리어된다. 어느 경우나, 태스크(754)에서, GDTR 및 CR0가 세그먼트E000H 데이타 구조의 값으로 로딩된다.Referring back to task 704, if the CPU 40 was not in virtual 8086 mode at the time of interruption, the code proceeds to paths 750-792 and merges with the common paths of tasks 730-748. In task 750, if the TR value in the segment E000H data structure indicates that TR indicates a valid TSS, then in task 752 the busy bit of this TSS is cleared. In either case, at task 754, GDTR and CR0 are loaded with the values of the segment E000H data structure.

태스크(756 내지 764)에서, 더미 페이지 디렉토리 테이블(dummy pagedirectory table)과 페이지 변환 테이블(page translation table)이 세그먼트E000H로 로딩된다. 첫째로, 태스크(756)에서 섀도우 RAM 세그먼트 C000H가 판독/기록으로 된다. 두 번째로, 태스크(758)에서 새로운 페이지 디렉토리 테이블이 어드레스 0E0000H에서 생성된다. 세 번째로, 태스크(760)에서 이 새로운 페이지 디렉토리 테이블의 첫 엔트리는 0E1000H를 가리키록 수정된다. 네 번째로, 태스크(762)에서 어드레스 0E0000 내지 0FFFFF가 제공되고, 이 어드레스 범위내에서 선형 어드레스들은 물리적 어드레스들과 동일하도록 새로운 페이지 변환 테이블 0C1000H에서 생성된다. 마지막으로, 어드레스 변환이 0E0000H내의 새로운 더미 페이지 디렉토리 및 페이지 변환 테이블을 통해 이루어지도록 CR3내의 페이지 디렉토리 베이스 레지스터는 0E0000H로 로딩된다.In tasks 756-764, a dummy page directory table and a page translation table are loaded into segment E000H. First, at task 756 the shadow RAM segment C000H is read / write. Second, in task 758 a new page directory table is created at address 0E0000H. Third, in task 760 the first entry of this new page directory table is modified to point to 0E1000H. Fourth, addresses 0E0000 through 0FFFFF are provided in task 762, where linear addresses are created in the new page translation table 0C1000H to be identical to the physical addresses. Finally, the page directory base register in CR3 is loaded with 0E0000H so that address translation is done via the new dummy page directory and page translation table in 0E0000H.

다음, 태스크(766)에서 섀도우 RAM 세그먼트 E000H 및 F000H는 판독/기록으로 된다. 그 다음, CPU(40)가 중지되었을 때 16-비트 코드를 실행중이였던 경우,CPU(40)은 16-비트 모드에 있었던 것이며, 태스크(770)에서 16-비트 코드 경로를 가리키는 오프셋(offset)이 세그먼트 X000H 데이타 구조에 보관된다. 반면에,CPU(40)가 16-비트 모드가 아니었던 경우, 이1 CPU(40)는 32-비트 모드에 있었던 것이며, 태스크(772)에서 16-비트 오프셋 대신에 32-비트 코드 경로를 가리키는 오프셋이 세그먼트 E000H 데이타 구조내에 보관된다. 어쨌든, 이들 코드 경로는 병렬적이며, 하나는 16비트 오퍼랜드를 사용하며 다른 하나는 32 비트 오퍼랜드를 사용하는 것외에는 차이가 없다. 태스크(770 내지 772)는 단순히 이들 병렬 경로들(parallel paths)중의 어느 하나로 오프셋을 설정한다. 이 경로중의 하나(오프셋에 대응하는 하나)가 후술할 태스크(782)로 진입한다.Next, at task 766, shadow RAM segments E000H and F000H are read / write. Then, if the CPU 40 was running 16-bit code when it was stopped, the CPU 40 was in 16-bit mode and at task 770 an offset pointing to the 16-bit code path. ) Is stored in the segment X000H data structure. On the other hand, if CPU 40 was not in 16-bit mode, this 1 CPU 40 was in 32-bit mode, pointing to the 32-bit code path instead of the 16-bit offset in task 772. The offset is stored in the segment E000H data structure. In any case, these code paths are parallel, with no difference except that one uses 16-bit operands and the other uses 32-bit operands. Tasks 770 through 772 simply set the offset to any of these parallel paths. One of these paths (one corresponding to the offset) enters task 782, which will be described later.

다음, 태스크(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)]으로 로딩된다. 이들 값은 아래의 그들의 적절한 위치로 시프트(shift)된다. 그 후,태스크(776)에서는 GDTR, LDTR 및 CR0가 세그먼트 E000H 데이타 구조로부터의 그들의 값으로 로딩된다. 태스크(778)에서 LDTR은 SI에 보관된 LDTR값으로 로딩된다.Next, in task 774 the CR3 value from the segment E000H data structure is loaded into EDX, the SS value of the segment E000H data structure is loaded into CX, the ESP value from the segment E000H data structure is loaded into EBP and the segment E000H data TR values from the structure are loaded into the upper half of ESI, and also LDTR values from the segment E000H data structure are loaded into the lower half of ESI (SI). . These values are shifted to their appropriate positions below. Task 776 then loads GDTR, LDTR, and CR0 with their values from the segment E000H data structure. In task 778 the LDTR is loaded with the LDTR value stored in the SI.

그 후, 코드는 태스크(770 혹은 772)에 배치된 오프셋으로 멀리 점프(far jump)한다. 먼 점프(far jump)는 연산 코드(opcode)를 직접 소오스 코드(source code)에 배치하고, 태스크(770 혹은 772)로부터의 오프셋을 사용하여 코딩된다. 그 후, 태스크(782)에서, 코드는 16-비트 연산 코드 경로 혹은 82-비트 연산 코드 경로중의 하나에서 속행된다.The code then jumps far to the offset placed in task 770 or 772. Far jumps place opcodes directly into source code and are coded using offsets from task 770 or 772. Then, at task 782, the code continues in either the 16-bit opcode path or the 82-bit opcode path.

다음, 태스크(784)에서 CR3는 EDX에 보관된 CR3값으로 로딩되고, SS값은 CX에 보관된 SS값으로 로딩되고, 그리고, ESP는 EBP에 보관된 ESP값으로 로딩된다.Next, in task 784, CR3 is loaded with the CR3 value stored in EDX, SS value is loaded with the SS value stored in CX, and ESP is loaded with the ESP value stored in EBP.

그 다음, 태스크(786)에서 GS, FS, ES 및 DS가 스택에서 팝 오프된다. 태스크(788)에서 인터럽트된 CPU(40)가 보호 모드에서 코드를 실행중이였던 경우, 태스크(790)에서 TR은 ESI의 상위 절반에 보관된 TR값으로 로딩된다. 어느 경우에나, 코드는 태스크(792)에서 속행되어, 디버그 레지스터들(DR0, DR1, DR2, DR3, DR6 및 DR7)이 스택으로부터 팝 오프된다.Then, in task 786, GS, FS, ES, and DS are popped off the stack. If the CPU 40 interrupted at task 788 was executing code in protected mode, then at task 790 the TR is loaded with the TR value stored in the upper half of the ESI. In either case, the code continues at task 792 so that debug registers DR0, DR1, DR2, DR3, DR6, and DR7 are popped off the stack.

이 시점에서, 이 코드 경로는 전술한 태스크(730 내지 748)로 구성된 공통코드경로와 합쳐진다. 태스크(794)에서 에러-회복루틴(error-recovery routine)은 또한 보관 CPU 상태 루틴의 태스크(640)으로부터의 공통 코드 경로와 결합한다.At this point, this code path is combined with the common code path consisting of the tasks 730-748 described above. The error-recovery routine at task 794 also combines with the common code path from task 640 of the archive CPU state routine.

이제 제 15 도를 참조하면, 태스크(800)에서 시작하는 보관 8259 상태 루틴의 흐름도가 도시되어 있다. 8259 상태 보관 루틴은 태스크(802)에서 실시간 클럭(98)에 의해 사용되는 주기적(periodic) 인터럽트값을 보관하고, 태스크(804)에서 다른 모든 판독가능한 레지스터들을 세그먼트 E000H 데이타 구조에 보관하여 진행된다. 본 기술 분야에 잘 알려져 있는 바와 같이, 컴퓨터 시스템(10)의 구조는 소정 8259 판독-전용 레지스터들이 고정된 값을 가지도록 요구한다. 이들 값은 알려져 있으므로 결정할 필요가 없다. 구하기 어려운 8259 값들은 8259 베이스 어드레스(8259 base address), 8259 슬레이브 어드레스(8259 slave address)이며, 두 8259가 OS에 의해 보류중(pending) 혹은 서비스 중(in-service)인 인터럽트를 나타내도록 세트되었는지의 여부이다.Referring now to FIG. 15, a flow diagram of a archiving 8259 state routine beginning at task 800 is shown. The 8259 state preservation routine proceeds by storing the periodic interrupt value used by the real time clock 98 in task 802 and keeping all other readable registers in the segment E000H data structure in task 804. As is well known in the art, the structure of computer system 10 requires that certain 8259 read-only registers have a fixed value. These values are known and do not need to be determined. The hard-to-get 8259 values are the 8259 base address, the 8259 slave address, and whether the two 8259s are set to indicate an interrupt pending or in-service by the OS. Whether or not.

상술한 네 가지 사항(items)은 제 15 도의 나머지 코드에 의해 확인된다.The four items described above are identified by the remaining code of FIG.

태스크(806)에서 8259는, 키보드(12) 및 마우스(13) 인터럽트를 제외하고, 인터럽트 마스크된다.In task 806 8259 is interrupt masked, with the exception of the keyboard 12 and mouse 13 interrupts.

다음, 인터럽트 벡터 테이블은 태스크(808)에서 물리적 메모리의 기저(bottom) 1K를 세그먼트 C000H 데이타 구조에 복사함으로써 보관된다. 그 다음,태스크(810)에서 세그먼트 C800H에서 시작하는 256 더미 인터럽트 서비스 루틴들(256 dummy interrupt service routines)을 가리키는 256개의 고유우 더미 벡터를 로딩함으로써, 새로운 더미(dummy) 인터럽트 벡터 테이블이 물리적 메모리의 기저 1K로 로딩된다. 태스크(812)에서, 256 더미 인터럽트 서비스 루틴들은 세그먼트C800H에서 생성된다.The interrupt vector table is then stored at task 808 by copying the bottom 1K of physical memory to the segment C000H data structure. Then, in task 810, by loading 256 unique cow dummy vectors pointing to 256 dummy interrupt service routines starting at segment C800H, a new dummy interrupt vector table is created. Loaded at base 1K. At task 812, 256 dummy interrupt service routines are generated in segment C800H.

그 다음, 키보드(12) 및 마우스(13) 인터럽트는 태스크(814)에서 디스에이블 된다. 태스크(816)에서 모든 무긍정응답(unacknowledged) 키보드(12) 및 마우스(13) 인터럽트들이 응답(acknowledge)된다.The keyboard 12 and mouse 13 interrupts are then disabled at task 814. At task 816 all the unacknowledged keyboard 12 and mouse 13 interrupts are acknowledged.

그 다음, 태스크(818)에서 키보드 인터럽트가 발생하고, 태스크(820)에서 이인터럽트는 베이스 8259가 보류중 혹은 서비스 중으로 세트되었는지를 판단한다.Next, a keyboard interrupt occurs at task 818, and this interrupt at task 820 determines whether base 8259 is set to pending or in service.

그 다음, 이 값은 세그먼트 E000H 데이타 구조에 기록된다. 태스크(822)에서 코드는인터럽트가 서비스되기를 기다린다. 태스크(824)에서 더미 서비스 루틴들중의 하나를 호출하여 인터럽트가 서비스된다. 더미 서비스 루틴의 호출은 8259 베이스 어드레스를 판단하고, 8259가 보류중 모드인지 혹은 서비스 중 모드였는지를 판단한다. 베이스 어드레스와 모드는 세그먼트 E000H 데이타 구조에 보관된다.This value is then written to the segment E000H data structure. In task 822, the code waits for the interrupt to be serviced. The interrupt is serviced by calling one of the dummy service routines in task 824. The call to the dummy service routine determines the 8259 base address and determines whether the 8259 is in the pending mode or in service mode. The base address and mode are stored in the segment E000H data structure.

태스크(826, 828, 830 및 832)에서 유사한 절차가 슬레이브 8259에 대해 수행된다.Similar procedures are performed for slave 8259 in tasks 826, 828, 830, and 832.

태스크(834)에서 인터럽트 벡터 테이블이 E0000H 데이타 구조의 값을 다시 물리적 메모리의 기저 1K로 복사하여 회복된다. 그 후, 태스크(836)에서 세그먼트C000H는 다시 판독-전용으로 되고, 태스크(840)에서의 호출 프로그램(calling program)으로의 복귀에 대한 준비로서 태스크(838)에서 모든 인터럽트들이 마스크된다.At task 834, the interrupt vector table is recovered by copying the value of the E0000H data structure back to base 1K of physical memory. Thereafter, in task 836 segment C000H is read-only again, and all interrupts are masked in task 838 in preparation for return to the calling program in task 840.

제 16 도를 참조하면, 중지 화일을 동적으로 할당하는 데 사용되는 루틴이 도시되어 있다. 태스크(1012)와 관련하여 설명한 바와 같이, FAT내에 할당된 중지화일은 연속 섹터(contiguous sectors)에 이어서 중지 및 재개동안 디스크로의 고속 기록 및 디스크로부터의 고속 판독을 허용해야 한다. 또한, 당업자에게 명백한 바와 같이, 중지 화일은 전체 시스템 상태의 압축된 내용을 저장하기에 충분한 크기이어야 한다.Referring to FIG. 16, there is shown a routine used to dynamically allocate a pause file. As described in connection with task 1012, the pause file allocated in the FAT should allow for fast writes to and read from the disc during contiguous sectors followed by pause and resume. Also, as will be apparent to those skilled in the art, the pause file should be large enough to store the compressed contents of the overall system state.

이러한 목적을 위해, 중지 화일을 동적으로 할당하기 위한 루틴이 태스크(1050)에서 시작된다. 이 루틴은 시스템이 재개 루틴을 실행하지 않고 부트될 때마다 OS에 의해 실행되고, 메모리가 시스템에 부가된 후에 실행되어야 한다. 먼저, 제 16 도에 도시된 할당 루틴은 태스크(1052)에서 CMOS NVRAM내의 플래그를 체크함으로써 전력 관리 회로가 존재하는지를 테스트한다. 전력 관리 하드웨어(106)가 존재하지 않는다면, 프로그램은 태스크(1054)에서 퇴장한다. 전력 관리 하드웨어(106)가 존재한다면, 할당 루틴은 태스크(1056)에서 재개가 보류증인지 여부를 체크한다. 재개가 보류중이라면, 프로그램은 태스크(1058)에서 퇴장한다.For this purpose, a routine is initiated at task 1050 to dynamically allocate a pause file. This routine is executed by the OS whenever the system is booted without executing the resume routine, and must be executed after memory has been added to the system. First, the allocation routine shown in FIG. 16 tests at task 1052 whether a power management circuit exists by checking a flag in the CMOS NVRAM. If power management hardware 106 does not exist, the program exits at task 1054. If power management hardware 106 is present, the allocation routine checks at task 1056 whether the resume is pending. If resume is pending, the program exits at task 1058.

재개자 보류중이 아니라면, 할당 루틴은 태스크(1060)에서 보관 화일 파티션(Save File Partition)이 존재하는지 여부를 테스트한다. 보관 화일 파티선이 존재한다면, 태스크(1062)에서 프로그램은 이 파티션이 전체 시스템 상태를 저장하기에 충분한 크기라는 가정하에 퇴장한다.If not resumed, the allocation routine tests task 1060 whether a Save File Partition exists. If there is an archive file partition, at task 1062 the program exits assuming that this partition is large enough to hold the entire system state.

보관 화일 파티션이 존재하지 않는다면, 보관 화일을 위해 FAT내에서 하나의 화일이 할당되어야 한다. 먼저, 태스크(1064)에서 화일의 크기가 판단된다. 이것은 시스템 RAM(53)의 크기와, 비디오 메모리(58)의 크기와, 큰 휘발성 메모리 용량을 갖는 임의의 다른 장치의 크기와, CPU(40)와 같이 각종 장치의 레지스터내의 값을 저장하기 위한 64킬로바이트 영역을 가산함으로써 계산된다.If the archive file partition does not exist, a file must be allocated in the FAT for the archive file. First, the task 1064 determines the file size. This is the size of the system RAM 53, the size of the video memory 58, the size of any other device having a large volatile memory capacity, and 64 for storing values in registers of various devices, such as the CPU 40. Calculated by adding the kilobyte area.

필요한 보관 화일의 크기가 계산된 후, 할당 루틴은 태스크(1066)에서 FAT내에 보관 화일을 할당하려 시도한다. 하드 드라이브(31)상 이용가능한 충분한 저장공간이 존재하지 않는다면, 할당 루틴은 태스크(1070)에서 하나의 루틴을 호출하여 가능하면 하드 드라이브(31)상의 이용가능한 공간의 크기를 증가시킨다.After the size of the required archive file is calculated, the allocation routine attempts to allocate the archive file in the FAT at task 1066. If there is not enough storage space available on hard drive 31, the allocation routine calls one routine at task 1070 to increase the amount of available space on hard drive 31 if possible.

DOS 호출은 하나의 화일내에 연속 섹터가 할당된다고 보장할 수 없다. 따라서, 하드 드라이브(31)가 보관 화일을 저장하기에 충분한 공간을 갖는다면, 할당루틴은 태스크(1072)에서 이러한 공간이 연속적인지를 판정한다. 보관 화일이 단편화(fragment)되어 있다면(연속적이지 않다면), 할당 루틴은 태스크(1074)에서 하나의 루틴을 호출하여 하드 드라이브를 연속화(defragment)함으로써 가능한 보관 화일에 연속적인 화일을 제공한다.DOS calls cannot guarantee that consecutive sectors are allocated in a file. Thus, if hard drive 31 has enough space to store the archive, the allocation routine determines at task 1072 whether this space is contiguous. If the archive file is fragmented (not contiguous), the allocation routine calls a routine in task 1074 to provide a continuous file to the archive file that is possible by defragmenting the hard drive.

보관 화일이 단편화되어 있지 않다면, 할당 루틴은 태스크(1076)에서 보관 화일의 제 1 섹터에 서명(PS기 Power Management)을 기록한다. 그런 다음, 할당 루틴은 태스크(1078)에서 그 화일의 DOS 핸들(handle)을 BIOS의 물리적인 실린더,헤드 및 섹터로 변환하고, 이들 값을 CMOS NWAM에 기록한다. 할당 루틴은 태스크(1080)에서 퇴장한다.If the archive is not fragmented, the allocation routine writes a signature (PS Power Management) to the first sector of the archive at task 1076. The allocation routine then converts the DOS handle of the file to the BIOS's physical cylinders, heads, and sectors in task 1078, and writes these values to the CMOS NWAM. The allocation routine exits at task 1080.

하드 드라이브(81)를 연속화하기 위해 태스크(1074)에서 호출된 루틴은 태스크(1082)에서 시작되고, 태스크(1094)를 통해 계속된다. 먼저, 태스크(1084)에서 하드 드라이브(31)가 당업자에게 잘 알려진 하드 드라이브 압축 루틴중 하나의 루틴을 사용해 압축되어 있는지를 판단한다.The routine called in task 1074 to serialize the hard drive 81 begins in task 1082 and continues through task 1094. First, at task 1084 it is determined whether the hard drive 31 is compressed using one of the hard drive compression routines well known to those skilled in the art.

하드 드라이브(31)가 압축되어 있지 않다면, 태스크(1086)에서 전체 하드 드라이브(31)는 당업자에게 잘 알려진 연속화 유틸리티(defragmentingg utility)를 사용해 연속화된다. 그 후, 이 루틴은 태스크(1088)에서 복귀되어 태스크(1090)에서 할당 루틴의 할당부를 새로이 시작한다.If the hard drive 31 is not compressed, at task 1086 the entire hard drive 31 is serialized using a defragmentingg utility that is well known to those skilled in the art. This routine then returns from task 1088 to start a new portion of the allocation routine in task 1090.

하드 드라이브(31)가 압축되어 있다면, 태스크(1092)에서 하드 디스크의 압축된 부분은 최소화된다. 그 후, 하드 드라이브(31)의 압축되지 않은 부분은 태스크(1094)에서 당업자에게 잘 알려진 연속화 유틸리티를 사용해 디프래그먼트된다.If the hard drive 31 is compressed, then the compressed portion of the hard disk is minimized at task 1092. The uncompressed portion of hard drive 31 is then defragmented at task 1094 using a serialization utility that is well known to those skilled in the art.

그 후, 이 루틴은 태스크(1088)에서 복귀되어 태스크(1090)에서 할당 루틴의 할당부를 새로이 시작한다.This routine then returns from task 1088 to start a new portion of the allocation routine in task 1090.

하드 드라이브(31)상의 이용가능한 공간을 증대시키기 위해 태스크(1070)에서 호출된 루틴은 태스크(1100)에서 시작되고, 태스크(1110)를 통해 계속된다. 먼저, 태스크(1102)에서 하드 드라이브(31)가 당업자에게 잘 알려진 하드 드라이브 압축 루틴중 하나의 루틴을 사용하여 압축되어 있는지를 판단한다.The routine called in task 1070 to increase the available space on hard drive 31 begins in task 1100 and continues through task 1110. First, at task 1102 it is determined whether hard drive 31 is compressed using one of the hard drive compression routines well known to those skilled in the art.

하드 드라이브(31)가 압축되어 있지 않다면, 이 하드 드라이브(31)는 보관화일에 이용가능한 충분한 공간을 갖지 않은 것이며, 따라서 태스크(1104)에서 메시지가 디스플레이되어 동시에 중단 및 재개 특징을 사용하기 위해서는 하드 드라이브 용량을 추가하거나 하드 드라이브(31)로부터 화일을 삭제하여야 함을 사용자에게 알린다.If the hard drive 31 is not compressed, the hard drive 31 does not have enough space available for the archive, so a message is displayed at task 1104 to simultaneously use the suspend and resume feature. The user is informed that they need to add drive capacity or delete files from the hard drive 31.

하드 드라이브(31)가 압축되어 있다면, 태스크(1108)에서 가능하면 하드 드라이브(31)의 압축되지 않은 부분의 크기가 증가된다. 그 후, 이 루틴은 태스크(1110)에서 복귀하여 태스크(1090)에서 할당 루틴의 할당부를 새로이 시작한다.If the hard drive 31 is compressed, the size of the uncompressed portion of the hard drive 31 is increased if possible at task 1108. This routine then returns from task 1110 and starts a new allocation of assignment routines in task 1090.

이제 제 17 도를 참조하면, 대기 상태로부터 벗어나기 위한 루틴이 태스크(1120)에서 시작되는 것으로 도시되어 있다. 개념적으로, 시스템이 대기 상태(152)로부터 벗어날 때, 시스템은 이 시스템이 정상 동작 상태(150)에서 대기 상태(152)로 전이될 때 야기되었던 변화를 역전시킨다. 요약하면, 시스템이 대기 상태(152)를 벗어날 때, 시스템은 비디오 신호를 회복시키고, LED(23)를 조명하고, 하드 드타이브(31)내 하드 디스크를 회전시키고, 시스템 클럭을 회복시키며, APM CPU 유휴 호출을 디스에이블시켜 APM 드라이버로부터의 CPU 유휴 호출은 더이상 CPU(40)를 정지시키지 않도록 하고, 시스템(10)이 대기 상태(152)라는 것을 나타내는 플래그를 클리어시킨다.Referring now to FIG. 17, a routine for exiting from a waiting state is shown starting at task 1120. Conceptually, when the system exits from the standby state 152, the system reverses the changes that were caused when the system transitioned from the normal operating state 150 to the standby state 152. In summary, when the system leaves the standby state 152, the system recovers the video signal, illuminates the LED 23, rotates the hard disk in the hard drive 31, recovers the system clock, and APM. Disable the CPU idle call so that the CPU idle call from the APM driver no longer stops the CPU 40 and clears the flag indicating that the system 10 is in standby state 152.

먼저, 이 루틴은 태스크(1122)에서 시스템이 대기 상태(152)로 진입할 때 체크포인트가 발생되 었는지를 테스트한다. 체크포인트가 발생되었다면, 태스크(1124)에서 체크포인트 취하여짐 비트(Checkpoint taken bit)가 클리어되어 체크포인트가 더 이상 유효하지 않다는 것을 나타낸다. 이러한 특정 실시예에 있어서, 체크포인트는 시스템이 대기 상태를 벗어날 때 무효화된다. 체크포인트 데이타는 단지 시스템이 대기 상태(152)에 있는 동안 실패하는 경우 시스템을 재개시키는 데 사용되었는데, 그 이유는 대부분의 시스템이 하드 드라이브상의 가상 교환 화일(virtual swap files)을 사용하고, 체크포인트 데이타로부터 재개하면 시스템은 교환 화일이 (체크포인트 데이타로서 저장된) 시스템 상태에 의해 예상된 것과는 완전히 다르게 되는 상태에 놓일 수 있기 때문이다. 대안으로서, 체크포인트 데이타는 다음 디스크 액세스 후 무효화되도록 할 수 있다. 다른 대안으로서, 체크포인트 데이타는 시스템이 체크포인트 데이타로부터 재개되는 경우 시스템 문제를 야기할 수도 있는 화일로의 디스크 액세스 후 무효화될 수 있다. 또 다른 내안으로서, 체크포인트 데이타로부터의 재개가 하드 드라이브(31)상의 일부 혹은 전부의 데이타를 상실시킬 수도 있다는 이해하에, 체크포인트 데이타는 항상 사용자에게 이용가능할 수 있다.First, this routine tests at task 1122 if a checkpoint was generated when the system entered standby state 152. If a checkpoint has occurred, the checkpoint taken bit is cleared at task 1124 to indicate that the checkpoint is no longer valid. In this particular embodiment, the checkpoint is invalidated when the system leaves the standby state. Checkpoint data was only used to resume the system if it failed while the system was in standby (152) because most systems use virtual swap files on the hard drive and checkpoints Resuming from data may cause the system to be in a state where the exchange file is completely different than expected by the system state (stored as checkpoint data). As an alternative, the checkpoint data can be invalidated after the next disk access. As another alternative, the checkpoint data may be invalidated after disk access to the file, which may cause system problems if the system is resumed from the checkpoint data. Alternatively, checkpoint data may always be available to the user, with the understanding that resumption from checkpoint data may result in the loss of some or all of the data on hard drive 31.

그 후, 체크포인트가 취해지지 않았으면, CPU(40)는 태스크(1126)에서 마이크로제어기(U2)에 명령하여 이 마이크로제어기(U2)가 (i)비디오 제어기(56)로 하여금 비디오 신호를 다시 한 번 발생하게 하고,(ii)클럭 신디싸이저(906)로 하여금 보다 높은 주파수의 시스템 클럭(25Hz 또는 33Hz)을 재개하게 하며,(iii) LED(23)를 조명하도록 한다. 그런 다음, CPU(40)는 태스크(1128)에서 고정 디스크 제어기(86)에 적절한 값을 기록하여 하드 드라이브(31)내의 하드 디스크를 회전시킨다.Then, if no checkpoint is taken, the CPU 40 instructs the microcontroller U2 at task 1126, which causes the microcontroller U2 to (i) cause the video controller 56 to replay the video signal. Occurs once, (ii) causes the clock synthesizer 906 to resume a higher frequency system clock (25 Hz or 33 Hz), and (iii) illuminates the LED 23. CPU 40 then rotates the hard disk in hard drive 31 by writing an appropriate value to fixed disk controller 86 at task 1128.

다음, 태스크(1130)에서 APM CPU 유휴 호출이 디스에이블되어 CPU정지가 발생되지 않도록 한다. 마지막으로, 대기 플래그는 태스크(1132)에서 클리어되어 시스템(10)이 정상 동작 상태(150)라는 것을 표시한다. 루틴은 태스크(1140)에서 호출 프로그램으로 복귀한다.Next, in task 1130, the APM CPU idle call is disabled so that a CPU stop does not occur. Finally, the wait flag is cleared at task 1132 to indicate that system 10 is in a normal operating state 150. The routine returns to the calling program at task 1140.

제 18 도를 참조하면, 대기 상태로 진입하기 위한 루틴은 태스크(1140)에서 시작되는 것으로 도시되어 있다. 요약하면, 시스템이 대기 상태(152)로 진입할 때,시스템은 비디오 신호를 블랭크 상태로 하고, LED(23)를 플래쉬하며, 하드 드라이브(31)내의 하드 디스크를 스핀다운시키고, 시스템 클럭을 감속시키고, APM CPU 유휴 호출을 인에이블하여 APM 드라이버로부터의 CPU 유휴 호출이 CPU(40)를 정지시키도록 하고, 시스템(10)이 대기 상태(152)라는 것을 나타내는 플래그를 세트한다.Referring to FIG. 18, a routine for entering a standby state is shown starting at task 1140. In summary, when the system enters the standby state 152, the system blanks the video signal, flashes the LEDs 23, spins down the hard disk in the hard drive 31, and slows down the system clock. Enable the APM CPU idle call to cause the CPU idle call from the APM driver to stop the CPU 40, and set a flag indicating that the system 10 is in the standby state 152.

먼저, 이 루틴은 태스크(1142)에서 체크포인트가 취해질 것인지를 테스트한다. 체크포인트가 취해질 것이라면, 대부분의 중지 루틴이 태스크(1144)에서 실행되어 컴퓨터 시스템(10)의 상태가 하드 드라이브(31)상에 저장된다. 본 실시예에 있어서, 체크포인트는 시스템이 대기 상태로 진입할 때 취하여진다. 대안으로서,제 17 도를 참조하여 설명한 유의사항하에, 체크포인트는 주기적으로 취하여져 시스템을 재시작시키기 사용될 수 있다. 그런 다음, 태스크(1146)에서, 재개 루틴이 충분히 실행되어 태스크(1144)에서 수행된 부분적인 중지로부터 회복되도록 한다.First, this routine tests whether a checkpoint is taken at task 1142. If a checkpoint is to be taken, most of the stop routines are executed in task 1144 such that the state of computer system 10 is stored on hard drive 31. In this embodiment, a checkpoint is taken when the system enters a standby state. Alternatively, under the precautions described with reference to FIG. 17, checkpoints can be taken periodically and used to restart the system. Then, at task 1146, the resume routine is sufficiently executed to recover from the partial suspension performed at task 1144.

그런 다음, 태스크(1148)에서, 체크포인트 취하여짐 비트가 세트되어 유효한 체크포인트가 취하여졌음을 표시한다. 본 실시예에서 체크포인트 데이타는 시스템이 대기 상태(152)에 있는 동안 실패하는 경우에만 사용됨을 상기하기 바란다. 이 경우,시스템이 부트됨에 따라서, 시스템은 보관된 체크포인트로부터 재개한다.Then, at task 1148, the Checkpoint Taken bit is set to indicate that a valid checkpoint has been taken. Recall that in this embodiment the checkpoint data is used only if the system fails while in standby state 152. In this case, as the system boots, the system resumes from an archived checkpoint.

이상적으로, 체크포인트는 시스템에게 완전히 투명(transparent)하여야 한다. 이처럼 하여, 하드웨어 인터럽트가 데이타 상실을 방지하기 위해 발생하는 경우, 체크포인트는 포기되어야 한다. 대안으로서, 정상 중지의 경우 처럼, 모든 하드웨어 인터럽트가 무시될 수 있다.Ideally, checkpoints should be completely transparent to the system. In this way, if a hardware interrupt occurs to prevent data loss, the checkpoint must be abandoned. As an alternative, all hardware interrupts can be ignored, as in the case of normal shutdown.

그 후, 또한 체크포인트가 취하여지지 않았으면, CPU(40)는 태스크(1150)에서 마이크로 제어기(U2)에게 명령하여 이 마이크로제어기(U2)가 (i)비디오 제어기(56)로 하여금 비디오 신호를 발생하는 것을 중지하게 하고,(ii)클럭 신디싸이저(906)로 하여금 시스템 클럭을 높은 주파수(25㎒ 또는 33㎒)에서 낮은 주파수(8㎒)로 저하시키게 하고, (iii)LED(23)를 플래쉬하도록 한다. 그런 다음, CPU(40)는 태스크(1152)에서 고정 디스크 제어기(86)에 적절한 값을 기록하여 하드 드라이브(31)내의 하드 디스크의 회전을 중단시킨다. 다음, 태스크(1154)에서 APM CPU 유휴호출이 인에이블되어, APM 드라이버로부터의 CPU 유휴 호출이 CPU(40)를 정지시키도록 한다. 마지막으로, 태스크(1156)에서 대기 플래그가 세트되어 시스템(10)이 대기 상태(152)라는 것을 표시한다. 이 루틴은 태스크(1158)에서 호출 프로그램으로 복귀한다.Then, if no checkpoint has also been taken, the CPU 40 instructs the microcontroller U2 at task 1150 so that the microcontroller U2 causes (i) the video controller 56 to output a video signal. Ceases to occur, (ii) causes the clock synthesizer 906 to lower the system clock from a higher frequency (25 MHz or 33 MHz) to a lower frequency (8 MHz), and (iii) turns the LED 23 on. Flash it. CPU 40 then writes the appropriate value to fixed disk controller 86 at task 1152 to stop rotation of the hard disk in hard drive 31. Next, in task 1154, the APM CPU idle call is enabled, causing the CPU idle call from the APM driver to stop the CPU 40. Finally, a wait flag is set in task 1156 to indicate that system 10 is in a wait state 152. This routine returns to the calling program at task 1158.

본 발명은 실시예를 설명함으로써 예시되었으며, 이들 실시예가 상당히 상세히 설명되었으나, 출원인은 첨부된 특허 청구범위를 본 발명의 상세한 설명으로 제한하려는 의도는 없다. 당업자라면 부가적인 장점 및 수정을 명백히 인지할 것이다. 예를 들면, 전술한 바와 같이, 데이타를 하드 디스크에 기록하기 전에 연속길이 부호화(run length encoding) 기법을 사용하여 데이타를 압축할 수 있다. 이와 달리, 임의의 적절한 압축 방법이 사용되거나 압축 방법이 전혀 사용되지 않을 수도 있다. 그러므로, 본 발명은 특정한 상세한 사항들, 대표적인 장치 및 방법,그리고, 예시되고 설명된 예들로 한정되지 않는다. 따라서, 출원인의 일반적인 발명 개념의 사상 및 범주를 벗어나지 않고서도 이러한 상세한 설명에 변경을 가할 수 있다.While the present invention has been illustrated by describing the embodiments, these embodiments have been described in considerable detail, but the applicant is not intended to limit the appended claims to the detailed description of the invention. Those skilled in the art will clearly recognize additional advantages and modifications. For example, as described above, the data may be compressed using a run length encoding technique before writing the data to the hard disk. Alternatively, any suitable compression method may be used or no compression method may be used at all. Therefore, the invention is not limited to the specific details, representative apparatus and methods, and examples illustrated and described. Accordingly, modifications may be made to these details without departing from the spirit and scope of Applicant's general inventive concept.

Claims (20)

컴퓨터 시스템에 있어서,In a computer system, (a) 운영 체제 코드, 응용 프로그램 코드, BIOS 코드를 실행하기 위한 CPU -상기 운영 체제 코드는 전력 관리 상태 전이를 제어하며 주기적으로 전력 관리 감독 루틴이 실행되도록 하고, 상기 BIOS 코드는 전력 관리 상태 전이를 구현하며, 정상 동작 상태에서 상기 운영 체제는 특정 조건 하에서 상기 전력 관리 감독 루틴이 실행되도록 하는 것을 중지함 - 와,(a) CPU for executing operating system code, application code, and BIOS code, the operating system code controlling power management state transitions and periodically causing power management supervision routines to be executed, wherein the BIOS code executes power management state transitions. And in normal operation, the operating system stops the power management supervision routine from running under certain conditions. (b) 상기 CPU과 회로 통신하며, 적어도 하나의 사전 선택된 세트의 중지이벤트에 응답하여 상기 컴퓨터 시스템의 상태를 정상 동작 상태와 중지 상태사이에서 선택적으로 변화시키는 전력 관리 회로와,(b) power management circuitry in circuit communication with the CPU and selectively changing a state of the computer system between a normal operating state and a suspended state in response to at least one preselected set of stop events; (c) 상기 CPU과 회로 통신하며, 제 1 사전 선택된 시간 구간 뒤에 만료하도록 설정되고 상기 전력 관리 감독 루틴에 의해 그 만료가 테스트되는 비활동 중지 타이머 - 상기 제 1 사전 선택된 시간 구간은 상기 중지 상태로의 전이를 야기하는 사용자 비활동의 시간 길이에 해당함 - 와,(c) an inactivity suspend timer in circuit communication with the CPU, the inactivity suspend timer being set to expire after a first preselected time period and tested for expiration by the power management supervision routine, wherein the first preselected time period is in the suspended state. Corresponds to the length of time of user inactivity that causes the transition of-and, (d) 상기 CPU와 회로 통신하며, 제 2 사전 선택된 시간 구간 뒤에 만료하도록 설정되고 상기 전력 관리 감독 루틴과는 독립적으로 그 만료가 테스트되는 백업 중지 타이머 - 상기 제 2 사전 선택된 시간 구간은 상기 비활동 중지 타이머가 만료에 대해 테스트된 이후의 시간 길이에 해당함 - 와,(d) a backup stop timer in circuit communication with the CPU and configured to expire after a second preselected time interval and whose expiration is tested independent of the power management supervision routine, wherein the second preselected time interval is inactive Corresponds to the length of time since the stop timer has been tested for expiration-Wah, (e) 상기 CPU와 회로 통신하며, 자체 내에 저장된 데이타를 유지하는 데 전기적 전력을 필요로 하지 않는 전기 기계적 비휘발성 저장 장치와,(e) an electromechanical non-volatile storage device in circuit communication with the CPU and not requiring electrical power to maintain data stored therein; (f) 상기 CPU와 회로 통신하며, 메모리 데이타를 저장하는 휘발성 시스템 메모리와,(f) a volatile system memory in circuit communication with the CPU and storing memory data; (g) 상기 CPU과 회로 통신하며, 레지스터 데이타를 저장하는 휘발성 시스템 레지스터와,(g) a volatile system register in circuit communication with the CPU and storing register data; (h) 상기 CPU 및 상기 전력 관리 회로와 회로 통신하며, 상기 전력 관리회로에 응답하여 외부 소스로부터 상기 CPU, 상기 전기 기계적 비휘발성 저장장치, 상기 휘발성 시스템 메모리, 상기 휘발성 시스템 레지스터에 선택적으로 시스템 전력을 공급하는 회로를 구비하고, 제 1 전원 상태과 제 2 전원 상태를 가지며 상기 전력 관리 회로에 보조전력을 공급하는 회로를 가지는 것을 특징으로 하는 전원을 포함하며, 상기 제 1 전원 상태는 상기 전원이 상기 외부 소스로부터 상기 CPU, 상기 전기 기계적 비휘발성 저장 장치, 상기 휘발성 시스템 메모리, 상기 휘발성시스템 레지스터에 시스템 전력을 공급하고, 상기 전력 관리 회로에 보조 전력을 공급하며, 상기 제 2 전원 상태는 상기 전원이 상기 외부 소스로부터 전기 기계적비휘발성 저장 장치, 상기 휘발성 시스템 메모리, 상기 휘발성 시스템 레지스터에 시스템 전력을 공급하지 않으며, 상기 외부 소스로부터 상기 전력 관리회로에 보조 전력을 공급하며,(h) in circuit communication with the CPU and the power management circuitry and selectively system power from an external source to the CPU, the electromechanical nonvolatile storage, the volatile system memory, and the volatile system register in response to the power management circuitry. A power supply having a first power supply state and a second power supply state, and having a circuit for supplying auxiliary power to the power management circuitry, wherein the first power supply state is the power supply; Supplies system power to the CPU, the electromechanical nonvolatile storage, the volatile system memory, and the volatile system register from an external source, supplies auxiliary power to the power management circuitry, and wherein the second power state is such that Electromechanical non-volatile storage from the external source, the volatile System memory, the system does not supply the power to the volatile system registers, and an auxiliary power to said power management circuit is supplied from the external source, (1) 상기 정상 동작 상태는 상기 전원이 상기 제 1 전원 상태에 있고 상기 컴퓨터 시스템은 코드를 실행하는 것을 특징으로 하며,(1) the normal operating state is characterized in that the power source is in the first power state and the computer system executes code; (2) 상기 중지 상태는 상기 레지스터 데이타 및 상기 메모리 데이타가 상기 CPU에 의해 상기 전기 기계적 비휘발성 저장 장치에 전송되었고, 상기 전원은 상기 제 2 전원 상태에 있는 것을 특징으로 하며,(2) the suspended state is characterized in that the register data and the memory data have been transferred by the CPU to the electromechanical nonvolatile storage device, and the power source is in the second power state, (3) 상기 정상 동작 상태로부터 상기 중지 상태로의 상기 변환은 상기사전 선택된 중지 이벤트에 응답하여 상기 CPU이 메모리 데이타 및 레지스터 데이타를 상기 시스템 메모리 및 상기 시스템 레지스터로부터 상기 전기 기계적 비휘발성 저장 장치에 복사하는 것을 포함하며,(3) said transition from said normal operating state to said stopped state causes said CPU to copy memory data and register data from said system memory and said system register to said electromechanical nonvolatile storage device in response to said preselected stop event. Include, (4) 상기 정상 동작 상태와 상기 중지 상태간의 변환은 각각 상기 사전선택된 중지 이벤트에 응답하여 상기 제어 유닛이 상기 전원으로 하여금 상기제 1 전원 상태와 상기 제 2 전원 상태 사이에서 변환하도록 하는 것을 포함하며,(4) the transition between the normal operating state and the suspended state each includes causing the control unit to switch between the first power state and the second power state in response to the preselected stop event; , (5) 상기 사전 선택된 중지 이벤트의 제 1 중지 이벤트는 상기 백업 중지 타이머의 완료를 포함하며,(5) a first stop event of the preselected stop event includes completion of the backup stop timer; (6) 상기 사전 선택된 중지 이벤트의 제 2 중지 이벤트는 상기 비활동중지 타이머의 완료를 포함하는 컴퓨터 시스템.(6) a second stop event of the preselected stop event comprises completion of the inactivity timer. 제 1 항에 있어서,The method of claim 1, 상기 전력 관리 회로와 회로 통신하며, 눌려짐에 응답하여 폐쇄 이벤트(closure event)를 생성하는 순시 푸쉬버튼 스위치를 더 포함하고, 상기 전력 관리 감독 루틴은 상기 스위치의 폐쇄 이벤트에 대해 테스트하고, 상기 사전선택된 다른 중지 이벤트는 상기 스위치의 폐쇄 이벤트를 포함하는 컴퓨터 시스템.And a momentary pushbutton switch in circuit communication with the power management circuitry, the instantaneous pushbutton switch generating a closure event in response to being pressed, wherein the power management supervision routine tests for the closing event of the switch, and The other stop event selected includes a close event of the switch. 제 1항에 있어서,The method of claim 1, 상기 전력 관리 회로는 전력 관리 프로세서를 포함하고 상기 전력 관리프로세서는 그 내부에 위치한 상기 백업 중지 타이머를 가지는 컴퓨터 시스템.The power management circuitry includes a power management processor, the power management processor having the backup stop timer located therein. 제 1 항에 있어서,The method of claim 1, 상기 전력 관리 회로와 회로 통신하며, 눌려짐에 응답하여 폐쇄 이벤트를 생성하는 순시 푸쉬버튼 스위치 - 상기 전력 관리 감독 루틴은 상기 스위치의 폐쇄 이벤트에 대해 테스트하고, 상기 제 1 중지 이벤트는 상기 백업 중지 타이머의 만료 및 상기 스위치의 폐쇄 이벤트를 포함함-를 포함하는 컴퓨터 시스템.An instantaneous pushbutton switch in circuit communication with the power management circuitry and generating a close event in response to being pressed, wherein the power management supervision routine tests for a close event of the switch and the first stop event is the backup stop timer; And expiration of and closing event of the switch. 제 1 항에 있어서,The method of claim 1, 상기 전력 관리 회로는 사전 프로그램된 마이크로제어기를 구비하는 전력 관리 프로세서를 포함하는 컴퓨터 시스템.The power management circuitry includes a power management processor having a preprogrammed microcontroller. 제 1항에 있어서,The method of claim 1, 상기 백업 중지 타이머는 운영 체제의 전력 관리 부분이 실행되는 것에 응답하여 재개되거나 그렇지 않으면 리세트되는 컴퓨터 시스템.And the backup stop timer is resumed or otherwise reset in response to the power management portion of the operating system being executed. 제 3 항에 있어서,The method of claim 3, wherein 상기 전력 관리 프로세서는 사전 프로그램된 마이크로제어기를 포함하는 컴퓨터 시스템.The power management processor includes a preprogrammed microcontroller. 제 1 항에 있어서,The method of claim 1, 상기 전기 기계적 비휘발성 저장 장치는 고정 디스크 저장 장치를 포함하는 컴퓨터 시스템.The electromechanical nonvolatile storage device includes a fixed disk storage device. 제 1 항에 있어서,The method of claim 1, 상기 전원은 상기 CPU, 상기 휘발성 시스템 메모리, 상기 휘발성 시스템 레지스터, 상기 전기 기계적 비휘발성 저장 장치에 전기적 도체를 통해 직접 접속되어 있는 컴퓨터 시스템.And the power source is directly connected through an electrical conductor to the CPU, the volatile system memory, the volatile system register, and the electromechanical nonvolatile storage device. 제1 항에 있어서,According to claim 1, 상기 전원은 외부 소스로부터 상기 전원으로의 전력이 인터럽트될 때 상기 전력 관리 회로로 보조 전력을 공급하지 않는 컴퓨터 시스템.The power supply does not supply auxiliary power to the power management circuitry when power from an external source to the power supply is interrupted. 적어도 두개의 전력 관리 상태, 즉,(i) 컴퓨터 시스템에 의해 코드가 정상적으로 실행되는 정상 동작 상태와,(ii) 컴퓨터 시스템이 상기 정상 동작상태에 있을 때보다 더 적은 전력을 소모하는 절전(power couservation) 상태를 갖는 컴퓨터 시스템에서, 상기 컴퓨터 시스템에 의해 전력 사용을 관리하는방법에 있어서, (a) 상기 컴퓨터 시스템 상에서 전력 관리 드라이버를 갖는 운영 체제를 실행시키는 단계 - 상기 운영 체제는 소정의 응용 프로그램의 실행을 주기적으로 인터럽트하여 전력 관리 감독 루틴이 실행되도록 하며, 정상 동작 상태에서 상기 운영 체제는 특정 조건 하에서 전력 관리 감독 루틴이 실행되도록 하는 것을 중단함 - 와,At least two power management states: (i) a normal operating state in which code is normally executed by the computer system, and (ii) a power couservation that consumes less power than when the computer system is in the normal operating state. A method of managing power usage by a computer system in a computer system having a status of: (a) executing an operating system having a power management driver on the computer system, the operating system being configured to execute an application program. Interrupts execution periodically so that the power management supervision routine is executed, and in normal operation the operating system stops executing the power management supervision routine under certain conditions. (b) 제 1 사전 선택된 시간 구간 뒤에 만료하는 비활동 타이머를 개시하는 단계와,(b) starting an inactivity timer that expires after a first preselected time interval; (c) 제 2 사전 선택된 시간 구간 뒤에 만료하는 백업 비활동 타이머를 개시하는 단계와,(c) starting a backup inactivity timer that expires after a second preselected time period; (d) 정상 동작 상태에서 상기 컴퓨터 시스템을 동작시키는 단계와,(d) operating the computer system in a normal operating state; (e) 상기 컴퓨터 시스템이 정상 동작 상태에 있는 동안 사용자 활동이 일어나는 것에 응답하여 비활동 타이머를 재개시키는 단계와,(e) resuming an inactivity timer in response to user activity occurring while the computer system is in a normal operating state; (f) 전력 관리 감독 루틴에 의해 비활동 타이머가 완료했는지 테스트하는 단계과,(f) testing, by the power management supervision routine, whether the inactivity timer has completed, (g) 전력 관리 감독 루틴의 실행에 응답하여 백업 비활동 타이머를 재개시키는 단계와,(g) resuming a backup inactivity timer in response to the execution of a power management oversight routine; (h) 제 1 시간 구간의 만료에 응답하여, 전력 관리 드라이버 및 전력 관리 감독 루틴 중 적어도 하나의 실행에 의해 컴퓨터 시스템을 절전 상태로 전이시키는 단계와,(h) in response to expiration of the first time interval, transitioning the computer system to a power saving state by executing at least one of a power management driver and a power management supervision routine; (i) 제 2 시간 구간의 완료에 적어도 부분적으로 응답하여, 운영 체제가 전력 관리 감독 루틴을 실행하도록 함이 없이, 상기 컴퓨터 시스템을 절전 상태로 전이시키는 단계를 포함하는 전력 사용 관리 방법.(i) transitioning said computer system to a power saving state without at least partially responding to completion of a second time interval, without causing an operating system to execute a power management supervision routine. 제 11 항에 있어서,The method of claim 11, (a) 운영 체제의 전력 관리 드라이버를 통해 적어도 하나의 주변 장치와 전력 관리 상태에서의 변환이 임박했다는 사실을 통신함으로써 상기 컴퓨터 시스템의 동작동안 제 1 시간 구간의 만료에 응답하는 단계와,(a) responding to the expiration of a first time period during operation of the computer system by communicating, via an operating system's power management driver, that at least one peripheral device is in transition with a power management state to be imminent; (b) 운영 체제의 전력 관리 드라이버가 적어도 하나의 주변 장치와, 전력 관리 상태에서의 변환이 임박했다는 사실을 통신함이 없이 상기 컴퓨터 시스템을 절전 상태로 전이시킴으로써 상기 컴퓨터 시스템이 동작동안 제 2 시간 구간의 만료에 응답하는 단계를 더 포함하는 전력 사용 관리 방법.(b) a second time during which the computer system is operating by transitioning the computer system to a power saving state without the operating system's power management driver communicating with at least one peripheral device that the transition from the power management state is imminent. And responding to the expiration of the interval. 제 12 항에 있어서,The method of claim 12, 상기 적어도 하나의 주변 장치는 운영 체제의 전력 관리 드라이버로부터의 통신에 응답하여, 상기 컴퓨터 시스템의 전력 관리 상태에서의 변환과 연관된 태스크를 실행하는 전력 사용 관리 방법.And the at least one peripheral device executes a task associated with transitioning from a power management state of the computer system in response to communication from a power management driver of an operating system. 제 11 항에 있어서,The method of claim 11, 상기 제 2 사전 선택된 시간 구간은 운영 체제의 전력 관리 드라이버에 의한 전력 관리 감독 루틴의 주기적 실행 사이의 가장 긴 구간보다 더 긴 전력사용 관리 방법.And wherein the second preselected time interval is longer than the longest interval between periodic executions of the power management supervision routine by the power management driver of the operating system. 제 11 항에 있어서,The method of claim 11, 상기 제 2 사전 선택된 시간 구간은 약 18 초인 전력 사용 관리 방법.And the second preselected time interval is about 18 seconds. 제 11 항에 있어서,The method of claim 11, 상기 컴퓨터 시스템은 처리 장치를 더 포함하고, 상기 절전 상태에서 상기 처리 장치에 의한 코드 실행은 인터럽트되고, 상기 컴퓨터 시스템의 상태는 비휘발성 메모리에 저장되고, 상기 컴퓨터 시스템은 상기 정상 동작 상태에 있을 때보다 더 적은 전기 전력을 소비하는 전력 사용 관리 방법.The computer system further includes a processing device, wherein code execution by the processing device is interrupted in the power saving state, the state of the computer system is stored in a nonvolatile memory, and the computer system is in the normal operating state. Multi power usage management method that consumes less electrical power. 제 11 항에 있어서,The method of claim 11, 상기 컴퓨터 시스템은 중앙 처리 장치, 메모리, 고정 디스크 저장 장치,전원을 포함하며, 상기 전원은 외부 소스로부터 상기 중앙 처리 장치, 상기 메모리, 상기 고정 디스크 저장 장치에 시스템 전력을 선택적으로 공급하며,상기 컴퓨터 시스템을 절전 상태로 전이시키는 상기 단계는,상기 컴퓨터 시스템의 시스템 상태를 확인하는 단계와,상기 시스템 상태를 상기 고정 디스크 저장 장치에 저장하는 단계와, 시스템 전력을 전원으로부터 상기 중앙 처리 장치, 상기 메모리, 상기 고정 디스크 저장 장치로 운반하는 것을 중지하는 단계를 포함하는 전력 사용 관리 방법.The computer system includes a central processing unit, a memory, a fixed disk storage device, a power source, wherein the power source selectively supplies system power to the central processing unit, the memory, the fixed disk storage device from an external source, and the computer The step of transitioning a system to a power saving state includes: identifying a system state of the computer system, storing the system state in the fixed disk storage device, and storing system power from a power source to the central processing unit and the memory. And stopping delivery to the fixed disk storage device. 적어도 세개의 전력 관리 상태, 즉,(i) 컴퓨터 시스템에 의해 코드가 정상적으로 실행되는 정상 동작 상태와,(ii) 상기 컴퓨터 시스템에 의한 코드실행이 계속되며 상기 컴퓨터 시스템은 상기 정상 동작 상태에 있는 것보다 더 적은 전기 전력을 소모하는 대기 상태와,(iii) 상기 컴퓨터 시스템에 의한 코드 실행이 인터럽트되고, 상기 컴퓨터 시스템의 상태가 전기 기계적 비휘발성메모리에 저장되고, 상기 컴퓨터 시스템은 상기 대기 상태에 있는 것보다 더 적은 전기 전력을 소모하는 중지 상태를 갖는 컴퓨터 시스템에서, 상기 컴퓨터시스템에 의한 전력 사용을 관리하는 방법에 있어서,At least three power management states, i.e., a normal operating state in which code is normally executed by the computer system, and (ii) code execution by the computer system continues and the computer system is in the normal operating state. A standby state that consumes less electrical power, and (iii) code execution by the computer system is interrupted, the state of the computer system is stored in an electromechanical nonvolatile memory, and the computer system is in the standby state. A computer system having a suspended state that consumes less electrical power than the method of managing power usage by the computer system, the method comprising: (a) 전력 관리 드라이버를 갖는 운영 체제를 상기 컴퓨터 시스템 상에서 실행시키는 단계 - 상기 운영 체제는 소정의 응용 프로그램의 실행을 주기적으로 인터럽트하고, 전력 관리 감독 루틴이 실행되도록 하며, 상기 운영 체제 특정 조건 하에서 전력 관리 감독 루틴이 실행되도록 하는 것을 중단함 -와,(a) running an operating system on the computer system having a power management driver, the operating system periodically interrupting the execution of a given application, causing a power management supervision routine to run, and under the operating system specific conditions Stops the power management supervision routine from running-and, (b) 제 1 사전 선택된 시간 구간 뒤에 만료하는 비활동 대기 타이머를 개시하는 단계와,(b) starting an inactivity wait timer that expires after a first preselected time period; (c) 제 2 사전 선택된 시간 구간 뒤에 만료하는 비활동 중지 타이머를 개시하는 단계와,(c) starting an inactivity stop timer that expires after a second preselected time period; (d) 제 3 사전 선택된 시간 구간 뒤에 만료하는 백업 중지 타이머를 개시하는 단계와,(d) starting a backup stop timer that expires after a third preselected time period; (e) 정상 동작 상태에서 상기 컴퓨터 시스템을 동작시키는 단계와,(e) operating the computer system in a normal operating state; (f) 상기 컴퓨터 시스템이 정상 동작 상태에 있는 동안 사용자 활동이 일어나는 것에 응답하여 상기 비활동 대기 타이머 및 비활동 중지 타이머를 재개시키는 단계와,(f) resuming the inactivity wait timer and the inactivity stop timer in response to user activity occurring while the computer system is in a normal operating state; (g) 전력 관리 감독 루틴에 의해 상기 비활동 중지 타이머가 만료했는지 테스트하는 단계와,(g) testing, by a power management oversight routine, whether the inactivity stop timer has expired; (h) 전력 관리 감독 루틴의 실행에 응답하여 백업 중지 타이머를 재개시키는 단계와,(h) resuming a backup stop timer in response to the execution of a power management oversight routine; (i) 상기 컴퓨터 시스템이 대기 상태에 있는 동안 사용자 활동이 일어나는 것에 응답하여 상기 컴퓨터 시스템의 상태를 대기 상태로부터 정상 동작 상태로 변환시키는 단계와,(i) transitioning a state of the computer system from a standby state to a normal operating state in response to user activity occurring while the computer system is in a standby state; (j) 상기 컴퓨터 시스템의 동작동안 상기 제 1 시간 구간의 만료에 응답하여 상기 컴퓨터 시스템을 대기 상태로 전이시키는 단계와,(j) transitioning the computer system to standby in response to expiration of the first time period during operation of the computer system; (k) 상기 제 2 시간 구간의 만료에 응답하여, 전력 관리 드라이버 및 전력 관리 감독 루틴 중 적어도 하나의 실행에 의해 상기 컴퓨터 시스템을 중지 상태로 전이시키는 단계와,(k) in response to expiration of the second time interval, transitioning the computer system to a suspended state by executing at least one of a power management driver and a power management supervision routine; (l) 상기 제 3 시간 구간의 만료에 적어도 부분적으로 응답하여, 운영체제가 전력 관리 감독 루틴을 실행하도록 함이 없이, 상기 컴퓨터 시스템을중지 상태로 전이시키는 단계를 포함하는 전력 사용 관리 방법.(l) transitioning the computer system to a stopped state, at least partially in response to expiration of the third time interval, without causing an operating system to execute a power management supervision routine. 제 1 항에 있어서,The method of claim 1, 상기 백업 중지 타이머의 만료에 응답하여, 상기 비활동 중지 타이머가 만료에 대해 테스트되고, 상기 비활동 중지 타이머가 만료되었으면, 상기 컴퓨터 시스템이 상기 중지 상태로 전이되는 컴퓨터 시스템.In response to the expiration of the backup suspend timer, the inactivity suspend timer is tested for expiration, and if the inactivity suspend timer has expired, the computer system transitions to the suspend state. 적어도 두개의 전력 관리 상태, 즉,(i) 컴퓨터 시스템에 의해 코드가 정상적으로 실행되는 정상 동작 상태와,(ii) 컴퓨터 시스템이 상기 정상 동작 상태에 있을 때보다 더 적은 전력을 소모하는 절전(power conservation) 상태를 갖는 컴퓨터 시스템에 있어서,At least two power management states: (i) a normal operating state in which code is normally executed by the computer system, and (ii) a power conservation that consumes less power than when the computer system is in the normal operating state. In a computer system having (a) 상기 컴퓨터 시스템 상에서 전력 관리 드라이버를 갖는 운영 체제를 실행시키는 수단 - 상기 운영 체제는 소정의 응용 프로그램의 실행을 주기적으로 인터럽트하고, 전력 관리 감독 루틴이 실행되도록 하며, 정상 동작 상태에서 상기 운영 체제는 특정 조건 하에서 전력 관리 감독 루틴이 실행되도록하는 것을 중단함 - 와,(a) means for running an operating system having a power management driver on the computer system, the operating system periodically interrupting the execution of a given application, causing a power management supervision routine to run, and operating the operating system in a normal operating state. The system ceases to allow the power management supervision routine to run under certain conditions. (b) 제 1 사전 선택된 시간 구간 뒤에 만료하는 비활동 타이머를 개시하는 수단과,(b) means for starting an inactivity timer that expires after the first preselected time period; (c) 제 2 사전 선택된 시간 구간 뒤에 만료하는 백업 비활동 타이머를 개시하는 수단과,(c) means for starting a backup inactivity timer that expires after a second preselected time period; (d) 정상 동작 상태에서 상기 컴퓨터 시스템을 동작시키는 수단과,(d) means for operating the computer system in a normal operating state; (e) 상기 컴퓨터 시스템이 정상 동작 상태에 있는 동안 사용자 활동이 일어나는 것에 응답하여 비활동 타이머를 재개시키는 수단과,(e) means for resuming an inactivity timer in response to user activity occurring while the computer system is in a normal operating state; (f) 전력 관리 감독 루틴에 의해 비활동 타이머가 완료했는지 테스트하는 수단과,(f) means for testing whether the inactivity timer has completed by the power management supervision routine, (g) 전력 관리 감독 루틴의 실행에 응답하여 백업 비활동 타이머를 재개시키는 수단과,(g) means for resuming a backup inactivity timer in response to the execution of a power management oversight routine; (h) 제 1 시간 구간의 만료에 응답하여, 전력 관리 드라이버 및 전력 관리 감독 루틴 중 적어도 하나의 실행에 의해 컴퓨터 시스템을 절전 상태로 전이시키는 수단과,(h) means for transitioning the computer system to a power saving state by execution of at least one of a power management driver and a power management supervision routine in response to expiration of the first time interval; (i) 제 2 시간 구간의 만료에 적어도 부분적으로 응답하여, 운영 체제가 전력 관리 감독 루틴을 실행하도록 함이 없이, 상기 컴퓨터 시스템을 절전 상태로 전이시키는 수단을 포함하는 컴퓨터 시스템.(i) means for transitioning said computer system to a power saving state, at least partially in response to expiration of a second time interval, without causing an operating system to execute a power management supervision routine.
KR1019950028935A 1994-09-07 1995-09-05 Automatic backup system for advanced power management Expired - Fee Related KR100190736B1 (en)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US08/301,943 US5560023A (en) 1994-09-07 1994-09-07 Automatic backup system for advanced power management
US08/301,943 1994-09-07
US8/301,943 1994-09-07

Publications (2)

Publication Number Publication Date
KR960011766A KR960011766A (en) 1996-04-20
KR100190736B1 true KR100190736B1 (en) 1999-06-01

Family

ID=23165572

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1019950028935A Expired - Fee Related KR100190736B1 (en) 1994-09-07 1995-09-05 Automatic backup system for advanced power management

Country Status (7)

Country Link
US (1) US5560023A (en)
EP (1) EP0701192B1 (en)
JP (1) JP3188826B2 (en)
KR (1) KR100190736B1 (en)
CN (1) CN1158591C (en)
CA (1) CA2156540C (en)
DE (1) DE69519461D1 (en)

Families Citing this family (66)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
AU4519596A (en) * 1994-12-22 1996-07-10 Intel Corporation Power budgeting with device specific characterization of power consumption
KR0139985B1 (en) * 1995-01-06 1998-07-01 김광호 Hibernation system of option card
US6393584B1 (en) * 1995-04-26 2002-05-21 International Business Machines Corporation Method and system for efficiently saving the operating state of a data processing system
US5758171A (en) * 1995-07-05 1998-05-26 Cirrus Logic, Inc. Apparatus and method for reading back socket power status information
US5638541A (en) * 1995-08-25 1997-06-10 Intel Corporation System and method for managing power on desktop systems
US5867718A (en) * 1995-11-29 1999-02-02 National Semiconductor Corporation Method and apparatus for waking up a computer system via a parallel port
US5765001A (en) 1996-04-29 1998-06-09 International Business Machines Corporation Computer system which is operative to change from a normal operating state to a suspend state when a power supply thereof detects that an external source is no longer providing power to said power supply at a predetermined level
KR100219608B1 (en) * 1996-07-23 1999-10-01 윤종용 Signal modulation method adopted in digital channels such as digital recording media and digital communication
KR19980044732A (en) * 1996-12-07 1998-09-05 김광호 Display and Display Method of DPMS Mode in Computer System
KR100281535B1 (en) * 1997-02-12 2001-02-15 윤종용 Computer system and its control method
KR19980073522A (en) * 1997-03-15 1998-11-05 김광호 Semiconductor memory device supporting power down mode, computer system having same and control method thereof
US5978912A (en) * 1997-03-20 1999-11-02 Phoenix Technologies Limited Network enhanced BIOS enabling remote management of a computer without a functioning operating system
KR19980074058A (en) * 1997-03-21 1998-11-05 윤종용 Computer with power cutoff function and power cutoff method
US5835366A (en) * 1997-06-24 1998-11-10 Telxon Corporation Secondary battery boost circuit
JP3943665B2 (en) 1997-09-01 2007-07-11 株式会社東芝 Sleep control method and event notification method
US6145068A (en) * 1997-09-16 2000-11-07 Phoenix Technologies Ltd. Data transfer to a non-volatile storage medium
US6115813A (en) * 1998-03-05 2000-09-05 Compaq Computer Corporation Selectively enabling advanced configuration and power interface BIOS support
US6230274B1 (en) * 1998-11-03 2001-05-08 Intel Corporation Method and apparatus for restoring a memory device channel when exiting a low power state
US6226729B1 (en) 1998-11-03 2001-05-01 Intel Corporation Method and apparatus for configuring and initializing a memory device and a memory channel
US6378056B2 (en) 1998-11-03 2002-04-23 Intel Corporation Method and apparatus for configuring a memory device and a memory channel using configuration space registers
JP3594505B2 (en) 1999-02-05 2004-12-02 松下電器産業株式会社 In-vehicle computer with car battery protection function
US6523124B1 (en) * 1999-04-23 2003-02-18 Palm, Inc. System and method for detection of an accessory device connection status
KR100640359B1 (en) * 1999-07-07 2006-10-31 삼성전자주식회사 How to Disconnect a Management System from a Transport System
JP3798199B2 (en) 1999-09-29 2006-07-19 株式会社ニデック Ophthalmic equipment
JP3696041B2 (en) 2000-03-30 2005-09-14 株式会社ニデック Ophthalmic equipment
KR100424484B1 (en) * 2001-07-05 2004-03-24 엘지전자 주식회사 A power supply for central processing unit
US6922787B2 (en) * 2001-08-14 2005-07-26 International Business Machines Corporation Method and system for providing a flexible temperature design for a computer system
US7181510B2 (en) * 2002-01-04 2007-02-20 Hewlett-Packard Development Company, L.P. Method and apparatus for creating a secure embedded I/O processor for a remote server management controller
JP3777136B2 (en) * 2002-04-01 2006-05-24 インターナショナル・ビジネス・マシーンズ・コーポレーション Computer device, data dead copy method, program, and computer device operating method
US20040190554A1 (en) * 2003-03-26 2004-09-30 Galloway William C. Fair multilevel arbitration system
TW591372B (en) 2003-05-15 2004-06-11 High Tech Comp Corp Power control method of portable electronic device, portable electronic device and electronic system
CN1329795C (en) * 2003-11-24 2007-08-01 佛山市顺德区顺达电脑厂有限公司 Power supply status automatic test method for computer apparatus
KR100560751B1 (en) 2003-12-17 2006-03-13 삼성전자주식회사 Power failure detection device
US7177782B2 (en) * 2004-06-18 2007-02-13 Lenovo (Singapore) Pte. Ltd. Methods and arrangements for capturing runtime information
US8286018B2 (en) 2004-06-29 2012-10-09 Seagate Technology Llc Power management in data storage device determining utilization of a control circuit by its rate of command processing
US7360106B2 (en) * 2004-08-05 2008-04-15 Matsushita Electric Industrial Co., Ltd. Power-saving processing unit, power-saving processing method and program record medium
JP4341542B2 (en) * 2004-12-15 2009-10-07 セイコーエプソン株式会社 Information processing apparatus and information processing method
JP4692318B2 (en) * 2005-04-20 2011-06-01 株式会社デンソー Electronic control unit
KR100736748B1 (en) * 2005-09-14 2007-07-09 삼성전자주식회사 Computer and its control method
WO2007067699A2 (en) * 2005-12-08 2007-06-14 Nvidia Corporation Emergency data preservation services
US9122643B2 (en) * 2005-12-08 2015-09-01 Nvidia Corporation Event trigger based data backup services
US8402322B2 (en) * 2005-12-08 2013-03-19 Nvidia Corporation Emergency data preservation services
KR100776751B1 (en) * 2006-06-09 2007-11-19 주식회사 하이닉스반도체 Voltage supply and method
US7930564B2 (en) * 2006-07-31 2011-04-19 Intel Corporation System and method for controlling processor low power states
KR100897767B1 (en) * 2007-02-07 2009-05-15 삼성전자주식회사 Microcontroller units and methods to increase data retention time
EP2043308B1 (en) * 2007-09-27 2012-01-25 Hitachi, Ltd. GMPLS in optical networks
US9087102B2 (en) * 2007-10-09 2015-07-21 International Business Machines Corporation Adaptive query processing infrastructure
US8510560B1 (en) 2008-08-20 2013-08-13 Marvell International Ltd. Efficient key establishment for wireless networks
CN102160035A (en) 2008-09-18 2011-08-17 马维尔国际贸易有限公司 Preloading applications onto memory at least partially during boot up
US8127154B2 (en) * 2008-10-02 2012-02-28 International Business Machines Corporation Total cost based checkpoint selection
WO2010077787A1 (en) * 2009-01-05 2010-07-08 Marvell World Trade Ltd. Method and system for hibernation or suspend using a non-volatile-memory device
US9098970B2 (en) * 2011-06-17 2015-08-04 Wms Gaming Inc. Wagering game machine hibernation
US9436629B2 (en) 2011-11-15 2016-09-06 Marvell World Trade Ltd. Dynamic boot image streaming
US10193358B2 (en) * 2012-04-23 2019-01-29 Hewlett Packard Enterprise Development Lp Deep-charging power resources of power resource group having identifier corresponding to range within which modulo falls based on charging time
US9218234B2 (en) * 2012-04-27 2015-12-22 Marvell World Trade Ltd. Memory dump and analysis in a computer system
US9405526B2 (en) * 2012-08-07 2016-08-02 Microsoft Technology Licensing, Llc Initiating update operations
US9904559B2 (en) * 2012-10-25 2018-02-27 Canon Kabushiki Kaisha Information processing apparatus and activation method therefor for processing data of a hibernation image
US9736801B1 (en) 2013-05-20 2017-08-15 Marvell International Ltd. Methods and apparatus for synchronizing devices in a wireless data communication system
US9521635B1 (en) 2013-05-21 2016-12-13 Marvell International Ltd. Methods and apparatus for selecting a device to perform shared functionality in a deterministic and fair manner in a wireless data communication system
CN105518621B (en) 2013-07-31 2019-09-17 马维尔国际贸易有限公司 By the method for guidance operation parallelization
US9454424B2 (en) * 2014-08-27 2016-09-27 Freescale Semiconductor, Inc. Methods and apparatus for detecting software inteference
US10979412B2 (en) 2016-03-08 2021-04-13 Nxp Usa, Inc. Methods and apparatus for secure device authentication
CN106897192B (en) * 2017-02-27 2020-08-25 苏州浪潮智能科技有限公司 A monitoring plug-in control method and device based on delay classification
WO2021188106A1 (en) * 2020-03-19 2021-09-23 Hewlett-Packard Development Company, L.P. Feature modification in standby mode based on power source capacity
CN113703557B (en) * 2020-05-21 2024-08-02 杭州海康威视数字技术股份有限公司 Method for clearing CMOS information, electronic equipment and clearing chip
CN115543055B (en) * 2022-11-28 2023-03-14 苏州浪潮智能科技有限公司 Power management control right transfer method, device, equipment and storage medium

Family Cites Families (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5012406A (en) * 1988-04-19 1991-04-30 Power Card Supply Line of power interruption in predetermined area of internal permanent memory
US5241680A (en) * 1989-06-12 1993-08-31 Grid Systems Corporation Low-power, standby mode computer
US5167024A (en) * 1989-09-08 1992-11-24 Apple Computer, Inc. Power management for a laptop computer with slow and sleep modes
US5396635A (en) * 1990-06-01 1995-03-07 Vadem Corporation Power conservation apparatus having multiple power reduction levels dependent upon the activity of the computer system
US5230074A (en) * 1991-01-25 1993-07-20 International Business Machines Corporation Battery operated computer power management system
US5410711A (en) * 1991-02-14 1995-04-25 Dell Usa, L.P. Portable computer with BIOS-independent power management
DE69233393T2 (en) * 1991-05-17 2005-08-11 Packard Bell NEC, Inc., Woodland Hills PERFORMANCE MANAGEMENT FUNCTION FOR A BACKWARD COMPATIBLE MICROPROCESSOR
JPH06236284A (en) * 1991-10-21 1994-08-23 Intel Corp Method for preservation and restoration of computer-system processing state and computer system
US5410713A (en) * 1992-01-02 1995-04-25 Smith Corona/Acer Power-management system for a computer
US5423045A (en) * 1992-04-15 1995-06-06 International Business Machines Corporation System for distributed power management in portable computers
US5513359A (en) 1993-07-23 1996-04-30 International Business Machines Corporation Desktop computer having a single-switch suspend/resume function
US5497494A (en) 1993-07-23 1996-03-05 International Business Machines Corporation Method for saving and restoring the state of a CPU executing code in protected mode
US5548763A (en) 1993-07-26 1996-08-20 International Business Machines Corporation Desk top computer system having multi-level power management
US5511202A (en) 1993-07-26 1996-04-23 International Business Machines Corporation Desktop computer system having zero-volt system suspend and control unit for ascertaining interrupt controller base address

Also Published As

Publication number Publication date
US5560023A (en) 1996-09-24
CA2156540A1 (en) 1996-03-08
CN1158591C (en) 2004-07-21
KR960011766A (en) 1996-04-20
EP0701192B1 (en) 2000-11-22
CN1140272A (en) 1997-01-15
CA2156540C (en) 2000-01-11
JPH08194561A (en) 1996-07-30
JP3188826B2 (en) 2001-07-16
DE69519461D1 (en) 2000-12-28
EP0701192A1 (en) 1996-03-13

Similar Documents

Publication Publication Date Title
KR100190736B1 (en) Automatic backup system for advanced power management
KR100218613B1 (en) Power management processor for suspend systems
KR100196893B1 (en) Computer system
KR100196883B1 (en) Computer systems
KR100232314B1 (en) Multifunction power switch and feedback led for suspend systems
JP4028605B2 (en) Computer system and method having a SORM session
US5551043A (en) Standby checkpoint to prevent data loss
KR0167810B1 (en) Desktop computer system having system suspend
US5758174A (en) Computer system having a plurality of stored system capability states from which to resume
KR0128275B1 (en) Desktop computer system having multi-level power management
US6081752A (en) Computer system having power supply primary sense to facilitate performance of tasks at power off
US5603038A (en) Automatic restoration of user options after power loss
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
JP3341970B2 (en) Computer system
KR100188501B1 (en) Computer system based on multiple users and windows and method for providing computer system based on multiple users
US5513359A (en) Desktop computer having a single-switch suspend/resume function
US5581692A (en) Automatic clearing of power supply fault condition in suspend system
EP0749063A2 (en) Method and apparatus for suspend/resume operation in a computer
KR100207884B1 (en) Computer system, code execution control method, and computer system power management method

Legal Events

Date Code Title Description
A201 Request for examination
PA0109 Patent application

Patent event code: PA01091R01D

Comment text: Patent Application

Patent event date: 19950905

PA0201 Request for examination

Patent event code: PA02012R01D

Patent event date: 19950905

Comment text: Request for Examination of Application

PG1501 Laying open of application
E902 Notification of reason for refusal
PE0902 Notice of grounds for rejection

Comment text: Notification of reason for refusal

Patent event date: 19980727

Patent event code: PE09021S01D

E701 Decision to grant or registration of patent right
PE0701 Decision of registration

Patent event code: PE07011S01D

Comment text: Decision to Grant Registration

Patent event date: 19981130

GRNT Written decision to grant
PR0701 Registration of establishment

Comment text: Registration of Establishment

Patent event date: 19990121

Patent event code: PR07011E01D

PR1002 Payment of registration fee

Payment date: 19990122

End annual number: 3

Start annual number: 1

PG1601 Publication of registration
PR1001 Payment of annual fee

Payment date: 20011107

Start annual number: 4

End annual number: 4

PR1001 Payment of annual fee

Payment date: 20021108

Start annual number: 5

End annual number: 5

PR1001 Payment of annual fee

Payment date: 20031119

Start annual number: 6

End annual number: 6

PR1001 Payment of annual fee

Payment date: 20041110

Start annual number: 7

End annual number: 7

FPAY Annual fee payment

Payment date: 20051223

Year of fee payment: 8

PR1001 Payment of annual fee

Payment date: 20051223

Start annual number: 8

End annual number: 8

LAPS Lapse due to unpaid annual fee
PC1903 Unpaid annual fee

Termination category: Default of registration fee

Termination date: 20071210