KR930005840B1 - 프로세서 구별방법 - Google Patents

프로세서 구별방법 Download PDF

Info

Publication number
KR930005840B1
KR930005840B1 KR1019900019438A KR900019438A KR930005840B1 KR 930005840 B1 KR930005840 B1 KR 930005840B1 KR 1019900019438 A KR1019900019438 A KR 1019900019438A KR 900019438 A KR900019438 A KR 900019438A KR 930005840 B1 KR930005840 B1 KR 930005840B1
Authority
KR
South Korea
Prior art keywords
register
data value
memory
value
recorded
Prior art date
Application number
KR1019900019438A
Other languages
English (en)
Other versions
KR920010425A (ko
Inventor
이규응
Original Assignee
현대전자산업 주식회사
정몽헌
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 현대전자산업 주식회사, 정몽헌 filed Critical 현대전자산업 주식회사
Priority to KR1019900019438A priority Critical patent/KR930005840B1/ko
Publication of KR920010425A publication Critical patent/KR920010425A/ko
Application granted granted Critical
Publication of KR930005840B1 publication Critical patent/KR930005840B1/ko

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Executing Machine-Instructions (AREA)

Abstract

내용 없음.

Description

프로세서 구별방법
제1도는 본 발명에 관련된 프로세서의 블럭도.
제2A도 및 2B도는 80486 및 80386프로세서의 플래그 레지스터에 대하여 구성적 차이점을 설명하기 위한 모형도.
제3도는 제 1도의 작동설명을 위한 플로우 챠트도.
* 도면의 주요 부분에 대한 부호의 설명
1 : 플래그 레지스터
2 : 어큐뮬레이터(Accumulator : A Register)
3 : 임시 레지스터
4 : ALU(산술논리 연산장치 : Arithmetic and Logical Unit )
5 : 명령레지스터(Instruction Register) 6 : 디코더(Decoder)
7: 제어회로(Control Circuit) 8 : 레지스터군
9 : 데이터 버퍼(Data Buffer) 10 : 어드레스버퍼(Address Buffer)
11 :메모리(램)
본 발명은 IBM 퍼스널 컴퓨터 XT, AT 및 PS/2 호환기종과 EISA호환기종 퍼스널 컴퓨터에서 사용하는 8086, 80286, 80386, 80486(이하 8086,286,386,486이라 칭)등의 프로세서를 명확히 구별하여 인식하는 프로세서 구별방법에 관한 것이다.
일반적으로, 프로세서 종류를 구별하기 위한 종래의 방법으로는 8086,286,386까지만 구별이 가능하므로 486프로세서도 386으로 인식하게 된다. 따라서 종전의 방법을 사용하여 486시스템에서 실행할때 문제가 야기된다. 486시스템은 속도와 성능이 뛰어나기 때문이다.
따라서 본 발명의 기존의 8086,286,386으로부터 486프로세서를 명확히 구별하며, 이로 인하여 응용 소프트웨어의 범용성을 확장하는데 그 목적이 있다.
본 발명은 각프로세서들 간에 플래그 레지스터(FLAG Register)의 구성적 차이점을 이용하여 프로세서를 구별하며, 또한 486 프로세서의 32비트 플레그 레지스터(EFLAGS)를 억세스하기 위하여 기존의 8086이나 286프로세서의 인스트럭션(Instruction)을 사용하는 선을 넘어서 486프로세서 인스트럭션을 사용함을 특징으로 한다.
이하, 첨부된 도면을 참조하여 본 설명을 상세히 설명하기로 한다.
제1도는 본 발명에관련된 프로세서의 블럭도로서, 어큐뮬레이터(Accumulatior)(2)가 16비트로 작동될때를 "AX"레지스터라고 하며, 32비트로 작동될 때를 " EAX"레지스터, 또한 플래그 레지스터가 32비로 작동될때를 EFLAG 레지스터라고 칭하므로 제 3도를 설명할 때는 이 명칭을 사용하기로 한다.
우선 명령처리 방법을 살펴보면, 제어회로(7)에 의해 메모리 (11)에 "판독" 신호를 보내고, 레지스터군(8)에 의해 계산된 메모리 번지의 명령을 읽어서 데이터 버퍼(9)를 경유하며 명령 레지스터(5)에 기록한다. 이것을 "펫치(Fetch)"라고 말한다. 명령 레지스터의 내용은 디코더(6)로 전송되며, 디코더(6)는 그 명령이 어떤 내용인지 분석하여 제어회로(7)에 전송한다. 그러면 제어회로(7)에서는 제어신호들을 종류별로 분류해서 각각 필요한 블럭으로 전송하여 그 블럭을 제어한다. 이를테면, 제어회로(7)는 콘트롤 버스를 통해 메모리의 판독/기록 동작을 제어하며 각 블럭의 게이트를 개폐시킨다.
어떤 데이터의 연산을 행하려는 명령인 경우, 임시 레지스터(3)에 기록된 데이터와 어큐뮬레이터(2)의 데이터를ALU(4)가 연산하여 그 결과를 데이터 버스를 경유하여 다시 어큐뮬레이터(2)로 전송한다. 이때 연산 결과에 따라서 플래그 레지스터(1)의 해당 비트가 "1"로 세트된다. 예를들어서 연산결과가 영(Zero)이면 제2a도의 ZF(비트(6,제로 플래그)가 "1"로 세트된다. 이 플래그 레지스터(1)의 값은 명령에 의해 데이터 버스를 경유하여 직접 메모리(11)영역에 기록(write)할 수 있다.
데이터 버퍼와 어드레스 버퍼(10)는 데이터 전송중 다른 블럭에 영향을 주지 않도록 하기 위해 완충작용을 한다.
이상의 설명과 같이 메모리(11)로부터 명령을 "팻치"해서 디코더(6)로 "분석"하여 제어회로를 통해 제어하는 일련의 과정은 매번 반복되는 부분이므로 제 3도에서는 설명을 생략하고 ALU(4)와 어큐뮬레이터(2), 임시레지스터(3), 플래그 레지스터(1) 및 메모리(11)의 작동관계를 중점 설명하기로 한다.
제2a 및 b도는 제 1도의 플래그 레지스터(1)가 486프래서와 386프로세서사이에 구성적 차이점이 있음을 보여주는 모형도이다.
제3도는 제1도의 작동설명을 위한 플로우 챠트도로서, 시작신호로부터 단계(101)에서 플래그 레지스터(1)의 값(예를들어 16비트)을 메모리(11)의 스택(Stack) 영역에 기록하여 저장하고 단계(102)로 진행되어 이단계(102)에서 16비트로 작동되는 어큐뮬레이터(2), 즉 AX 레지스터에 OOOOh라는 16비트 데이터를 기록하고 이 AX 레지스터(2)의 값을 메모리(11)의 스택영역에 기록한후 스택영역에 있는 데이터를 플래그 레지스터(1)에 기록한다. 이 과정이 AX 레지스터(2)로부터 플래그 레지스터(1)에 데이터를 옮기는 순서이다. 또한, 역순으로 방금 기록된 플래그 레지스터(1)의 값을 메모리(11)의 스택영역에 기록하고, 스택영역에 기록된 데이터를 AX 레지스터(2)에 다시 기록한다. 이제는 임시 레지스터(3)에 OFOOOh라는 값을 기록하고, ALU(4)에 의해 AX 레지스터(2)와 임시 레지스터(3)의 값에 대하여 "논리연산 AND"를 실시한 후 그 결과를 AX 레지스터로 전송하고 단계(103)로 진행된다.
상기 단계(103)에서는 임시 레지스터(3)에 OFOOOh라는 값을 기록하고, ALU(4)는 상기 단계(102)에서 논리연산한 AX 레지스터(2)의 값과 임시 레지스터(3)의 값이 동일한 가를 비교하여, 동일하면 단계(104)로 진행되고, 동일하지 않으면 단계(105)로 진행된다. 상기 단계(104)에서는 AX 레지스터(2)에 "0186h"라는 값을 기록하고 단계(115)로 진행되는데, 이 값은 프로세서가 8086이나 8088임을 의미한다.
상기 단계(105)에서는 상기 단계(102)와 같은 원리로 이번에는 OFOOOh라는 값을 AX 레지스터(2)에 기록하고, 이것을 메모리(11)의 스택영역에 기록한 후 플래그 레지스터(1)에 기록한다. 역순으로, 플래그 레지스터(1)의 값을 메모리(11)의 스택영역을 경유하여 AX 레지스터(2)에 다시 기록한다. 이제는 임시 레지스터(3)에 OFOOOh라는 값을 기록하고 ALU(4)에 의해 AX 레지스터(2)와 임시레지스터(3)의 값에 대하여 상호간에 "논리연산 AND"를 실시한 후 그 "결과"를 AX레지스터(2)로 전송하고 단계(106)로 진행된다.
상기 단계(106)에서는, 상기 단계(103)와 같은 원리로 임시 레지스터(3)에 OOOOh라는 값을 기록하고, ALU(4)는 상기 단계(105)의 논리연산 결과인 AX 레지스터(2)값과 임시 레지스터(3) 값이 같은가를 비교하여 같으면 단계(107)로 진행되고, 같지 않으면 단계(108)로 진행된다.
상기단계(107)에서는 AX 레지스터(2)에 "0286h"라는 값을 기록하고 단계(115)로 진행되는데, 이값은 286프로세서가 장착되었음을 의미한다.
상기 단계(108)에서는 32비트 플래그 레지스터(1), 즉 EFLAG 레지스터(1)의 현재 값을 메모리(11)의 스택영역에 기록하여 저장하고 단계(109)로 진행된다.
상기 단계(109)에서는 32비트 어큐뮬레이터(2) 즉 EAX 레지스터(2)에 "OFFFFFFFFh"라는 32 Bits 데이터를 기록하고, 이 EAX 레지스터(2)의 값을 메모리(11)의 스택영역에 저장한 후 그것을 EFLAG 레지스터(1)에 기록하고 단계(110)로 진행되는데, 이때 제 2도에서 보는 바와같이 사용하지 않는 예비 비트(Reserved Bit)는 영 (Zero)으로 기록된다. 중요한 것은 오직 486 프로세서만인 AC 비트(비트 18)를 갖고 있으므로 486프로세서일 때만 비트 18이 "1"로 세트된다는 것이다. 역순으로 방금 기록된 EFLAG 레지스터(1)의 값을 메모리(11)의 스택영역에 기록하고, 스택영역에 기록된 데이터를 다시 EAX 레지스터(2)에 기록한다. 결국, 여기서 EAX 레지스터(2)의 값은 EFLAG 레지스터(1)의 값을 그대로 옮겨온 것이므로 오직 486 프로세서만 비트 18이 "1"로 세트되어 있다.
상기 단계(110)에서는 ALU(4) EAX 레지스터(2)의 각 비트를 16회 오른쪽으로 이동시킴으로써 EAX의 비트 18이 비트 2로 이동된다. 즉 486 프로세서만 현재 EAX 레지스터의 비트 2를 "1"로 세트시키고 단계(111)로 진행된다.
상기 단계(111)에서는 상기 단계(109)의 작동에 의해 EFLAG 레지스터(1)의 본래 값이 변경되었으므로 상기 단계(108)에서 저장한 본래의 EFLAG 레지스터(2)의 값을 메모리(11)의 스택영역으로 부터 읽어서 다시 기록함으로써 본래의 EFLAG 레지스터(2)의 값을 복귀시키고 단계(112)로 진행된다.
상기 단계(112)에서는 상기 단계(110)의 작동에 의해 AX 레지스터(2)의 비트2, 즉 EFLAG 레지스터(1)의 입장에서 볼때 AC비트(비트18)가 "1"로 세트되었는가를 판단하여 "예"이면 단계(114)로 진행되고, "아니오"이면 단계(113)로 진행되는데, 이를 위하여 먼저 임시 레지스터(3)에 04h라는 8비트 데이터를 기록하고, ALU(4)는 상기 단계(110)의 결과치인 AX 레지스터(2)의 하위 8비트(AL) 레지스터와 임시 레지스터(3)의 값에 대하여 상호간에 "논리연산 AND"를 실시한다. 이때 플래그 레지스터(1)를 읽어서 ZF(비트 6, 제로 플래그)가 "0"(영)으로 세트되었는가 확인한다.
상기 단계(113)에서는 ZF 가 "0"이면 AX 레지스터(2)의 비트 2가 "0"이라는 뜻이므로 AX 레지스터(2)에 "0386h"라는 값을 기록하고 단계(115)로 진행되는데, 이 값은 386프로세서가 장착되었음을 의미한다.
상기 단계(114)에서는, ZF가 "0"이면 AX 레지스터(2)의 비트 2가 "1"이라는 뜻이므로 AX 레지스터(2)에 " 0486h"라는 값을 기록하고 단계(115)로 진행되는데, 이값은 바로 486 프로세서가 장착되었음을 의미한다.
상기 단계(115)에서는 상기 단계(104),(107),(113)및 (114)에서 기록된 AX 레지스터(2)의 상위 8비트(AH레지스터) 값을 메모리(11)의 번지에 저장하고 단계(116)으로 진행되는데, 그 메모리 번지를 읽으므로써 현재 마이크로 프로세서의 종류를 언제든지 인식할 수 있다. 그 메모리 번지에 기록된 값을 예로들어 표시하면 다음과 같다. 즉,
8088 : 01h
8086이나 80286 : 02h
80386 : 03h
80486 : 04h
상기단계(116)에서는 상기 단계(102), (105), (109)의 작동에 의해 본래의 플래그 레지스터 값이 변경되었으므로, 상기 단계(101)에서 저장한 본래의 플래그 레지스터(1)값을 메모리(11)의 스택영역에서 읽어서 복귀시키고 작동을 종료한다.
상술한 바와같이 본 발명에 의하면 각종 응용프로그램이나 진단프로그램에서 필요로 하는 프로세서의 인식을 언제든지 종류별로 명확히 구별할 수 있는 탁월한 효과가 있다.

Claims (4)

  1. 프로세서 구별 방법에 있어서, (a) 현재 플래그 레지스터(1)의 데이터 값을 메모리(11)의 스택영역에 저장하는 단계와, (b) AX 레지스터(2)에 기록된 제 1데이터 값을 상기 메모리(11)의 스택영역에 기록한다. 음, 그기록된 제 1데이터 값을 상기 플래그 레지스터(1)에 기록하는 단계와, (c) 상기 플래그 레지스터(1)에 기록된 제 1데이터 값을 상기 메모리(11)의 스택영역에 기록하고, 그 기록된 제 1데이터값을 상기 AX레지스터(2)에 기록하는 단계와, (d) 임시 레지스터(3)에 제 2데이터 값을 기록하고, ALU(4)에 의해 상기 AX 레지스터(2) 및 임시 레지스터(3)의 제 1 및 제 2데이터 값을 논리연산한후 그 결과를 상기 AX 레지스터(2)에 전송하는 단계와, (e) 상기 임시 레지스터(3)에 기록된 제 2데이터 값과 상기 AX 레지스터(2)의 제 1데이터 값이 동일한가를 판단하는 단계와, (f) 상기 단계(b)와 동일한 방법으로 상기 플래그 레지스터(1)에 제 3데이터 값을 기록하는 단계와, (h) 상기 임시 레지스터(3)에 제 4데이터 값을 기록하고, 상기 ALU(4)에 의해 상기 AX 레지스터(2) 및 임시레지스터(3)의 제 3 및 제 4 데이타 값을 논리연산한후 그결과를 상기 AX 레지스터(2)에 전송하는 단계와, (i) 상기 제 3 및 제 4데이타 값이 동일한가를 판단하는 단계와, (j) EFLAG 레지스터(3)의 현재 데이터 값을 상기 메모리(11)의 스택영역에 저장하고, EFLAG 레지스터(3)에 제 5데이터 값을 기록한다음, 이 제5데이터 값을 상기 메모리(11)의 스택영역을 통해 상기 EFLAG 레지스터(3)에 기록하는 단계와, (k) 상기 EFLAG레지스터(3)에 기록된 제 5데이터 값을 상기메모리(11)의 스택영역을 통해 상기 EAX 레지스터(2)에 기록하는 단계와,(l) 상기 ALU(4)에 의해 상기 EAX 레지스터(2)에 기록된 제 5 데이터 값의 각 비트를 우측으로 자리이동시키는 단계와, (m) 상기 (j)단계에서 상기 메모리(11)의 스택영역에 저장된 상기 EFLAG 레지스터(3)의 원래 데이터 값을 다시 상기 EFLAG 레지스터(3)에 복귀시키는 단계와, (n) 상기 EFLAG 레지스터(1)의 AC비트가 "1"로 세트되었는지를 판단하는 단계와, (o) 상기 AX 레지스터(2)에 제 6데이터 값을 기록하는 단계와, (p) 상기 메모리(11)의 임의의 번지에 상기 AX 레지스터(2)의 AH 레지스터 값을 기록하는 단계와, (g) 상기 (a) 단계에서 상기 메모리(11)의 스택영역에 저장시킨 플래그 레지스터(1)의 데이터 값을 다시 상기 플래그 레지스터(1)에 복귀 저장시키는 단계로 구성되는 것을 특징으로 하는 프로세서 구별방법.
  2. 제 1항에 있어서, 상기 단계(e)에서 상기 임시 레지스터(3) 및 AX 레지스터(2)의 제 2 및 제 1데이터 값이 동일한 경우, 상기 AX 레지스터(2)에 제 7데이타 값을 기록하는 단계를 포함하는 것을 특징으로 하는 프로세서 구별방법.
  3. 제 1항에 있어서, 상기 단계(i)에서 제 3 및 제4데이터 값이 동일한 경우, 상기 AX 레지스터(2)에 제 8데이터 값을 기록하는 단계를 포함하는 것이 특징으로 하는 프로세서 구별방법.
  4. 제 1항에 있어서, 상기 단계(n)에서 AC비트가 "1"로 세트되었을 경우, 상기 AX 레지스터(2)에 제 9데이터 값을 기록하는 단계를 포함하는 것을 특징으로 하는 프로세서 구별방법.
KR1019900019438A 1990-11-29 1990-11-29 프로세서 구별방법 KR930005840B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1019900019438A KR930005840B1 (ko) 1990-11-29 1990-11-29 프로세서 구별방법

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1019900019438A KR930005840B1 (ko) 1990-11-29 1990-11-29 프로세서 구별방법

Publications (2)

Publication Number Publication Date
KR920010425A KR920010425A (ko) 1992-06-26
KR930005840B1 true KR930005840B1 (ko) 1993-06-25

Family

ID=19306717

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1019900019438A KR930005840B1 (ko) 1990-11-29 1990-11-29 프로세서 구별방법

Country Status (1)

Country Link
KR (1) KR930005840B1 (ko)

Also Published As

Publication number Publication date
KR920010425A (ko) 1992-06-26

Similar Documents

Publication Publication Date Title
US5043868A (en) System for by-pass control in pipeline operation of computer
US4679140A (en) Data processor with control of the significant bit lengths of general purpose registers
EP0135844B1 (en) A data processor with a branch target instruction storage
US3728693A (en) Programmatically controlled interrupt system for controlling input/output operations in a digital computer
US3328768A (en) Storage protection systems
KR960700479A (ko) 호스트 인터럽트 및 지시운용을 가지는 네트워크 어댑터(network adapter with host interrupt and indication management)
US4167779A (en) Diagnostic apparatus in a data processing system
GB1478504A (en) Data processing system including a micro-programmable switch
EP0087785A2 (en) Microprogram controlled data processing apparatus
US4630192A (en) Apparatus for executing an instruction and for simultaneously generating and storing related information
GB1493448A (en) Memory access control in data processing systems
US4385365A (en) Data shunting and recovering device
EP0098172B1 (en) Register control processing system
US4314332A (en) Memory control system
KR900007135B1 (ko) 우선 선택회로를 갖는 바퍼 스토리지 제어 시스템
KR840003859A (ko) 데이터 처리장치
KR930005840B1 (ko) 프로세서 구별방법
US4451883A (en) Bus sourcing and shifter control of a central processing unit
CA2060137C (en) Circuit for executing conditional branch instructions in pipeline process
US4747039A (en) Apparatus and method for utilizing an auxiliary data memory unit in a data processing system having separate program and data memory units
RU2066067C1 (ru) Центральный процессор для многопроцессорной вычислительной системы
GB2325764A (en) Layering cache and architectural-specific functions to permit generic interface definition
KR900002436B1 (ko) 컴퓨터의 파이프라인 처리시의 바이패스 제어를 위한 시스템
EP0365186A2 (en) Apparatus for enhanced tagged data processing in a generalized computer execution unit
JPS5833584B2 (ja) 情報処理装置

Legal Events

Date Code Title Description
A201 Request for examination
G160 Decision to publish patent application
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20020517

Year of fee payment: 10

LAPS Lapse due to unpaid annual fee