KR930005840B1 - 프로세서 구별방법 - Google Patents
프로세서 구별방법 Download PDFInfo
- 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
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements 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)
- 프로세서 구별 방법에 있어서, (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)에 복귀 저장시키는 단계로 구성되는 것을 특징으로 하는 프로세서 구별방법.
- 제 1항에 있어서, 상기 단계(e)에서 상기 임시 레지스터(3) 및 AX 레지스터(2)의 제 2 및 제 1데이터 값이 동일한 경우, 상기 AX 레지스터(2)에 제 7데이타 값을 기록하는 단계를 포함하는 것을 특징으로 하는 프로세서 구별방법.
- 제 1항에 있어서, 상기 단계(i)에서 제 3 및 제4데이터 값이 동일한 경우, 상기 AX 레지스터(2)에 제 8데이터 값을 기록하는 단계를 포함하는 것이 특징으로 하는 프로세서 구별방법.
- 제 1항에 있어서, 상기 단계(n)에서 AC비트가 "1"로 세트되었을 경우, 상기 AX 레지스터(2)에 제 9데이터 값을 기록하는 단계를 포함하는 것을 특징으로 하는 프로세서 구별방법.
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) |
-
1990
- 1990-11-29 KR KR1019900019438A patent/KR930005840B1/ko not_active IP Right Cessation
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 |