Computer Science/컴퓨터 구조

4. 명령어의 형식과 CPU구조 ( 0-3주소 )

728x90
반응형

명령어 형식에서 주소필드수, 즉 몇주소 형식인가는 컴퓨터의 레지스터 구성에따라 다르다. 컴퓨터의 cpu구조는 '단일누산기구조', '범용레지스터구조', '스택구조' 중 하나이다.

명령어 형식

1) 0 - 주소 명령형식

 동작코드

동작코드만 존재하고 주소가 없는 형식이다. 이 형식은 스택을 이용하게 된다. 데이터를 기억시킬때 PUSH나 껴낼때 POP을사용한다. (PUSH,POP명령어는 스택에만 존재)

동작방식은 바이너리 연산의 경우 스택의 상단부 데이터 두개로 이루어지며, 연산 수 결과는 top이 지정하는 곳의 하단에 기억된다. 스택 구조 컴퓨터에서 수식을 계산하려면 우선 수식을 역polish표현으로 변환해야 한다.

ex) 계산기

 

2) 1 - 주소 명령형식

동작코드

 주소

연산대상이 되는 두개중 하나면 표현하고 나머지하나는 누산기(AC)를 사용하는 것이다.

동작방식은 주기억장치 내의 데이터(주소에서 표현한 번지에 잇는 데이터)와 AC 내의 데이터로 연산이 이루어지며 , 연산결과는 AC에 저장된다.

ex) PDP계열

 

3) 2 - 주소 명령형식

 동작코드

주소1 

주소2 

연산대상이 되는 두개의 주소를 표현하고 연산결과를 그중 한곳에 저장한다.  동작특성상 한 곳의 내용이 연산결과 저장으로 소멸된다.

연산결과를 기억시킬 곳의 주소를 인스트럭션 내에 표시할 필요가 없다. 또한 주소1과 중양처리내의 AC에 동시에 기억시키도록 할 수 도 있으며 이렇게 하면 계산결과를 시험할 필요가 있을때 중앙처리 장치 내에서 직접 시험이 기능하므로 시간을 절약할 수 있다.

ex) pc용, smartphone

 

4) 3 - 주소 명령형식

 동작코드

주소1

주소2

주소3 (결과)

연산 대상이 두개의 주소와 연산결과를 저장하기 위한 결과주소를 표현한다.

여러개의범용 레지스터를 가진 컴퓨터에서 사용할 수 있는 형식이다. 하나의 인트트럭션을 수행하기 위해서 최소한 4 번 기억장치에 접근하여야 하므로 수행기간이 길어서 특수목적 이외에는 잘 사용하지 않는다. 연산 후에 입력자료가변하지 않고 보존된다.

ex) 서버용


X = ( A+B )*( C+D )

0 주소 명령 

1 주소 명령 

PUSH    A

PUSH    B

ADD               

PUSH     C

PUSH     D

ADD       

MUL         

POP     X 



TOS ← A

TOS ← B

TOS ← (A+B)

TOS ← C

TOS ← D

TOS ← (C+D)

TOS ←(C+D)*(A+B)

M[X] ← TOS


TOS(Top of Stack)

LOAD     A 

ADD        B

STORE     T

LOAD     C

ADD        D

MUL       T

STORE     X



AC ← M[A]

AC ←AC + M[B]

M[T] ← AC

AC ← M[C]

AC ← AC + M[D]

AC ← AC * M[T]

M[X] ← AC




 2 주소 명령

3 주소 명령 

MOV    R1,  A

ADD    R1,  B

MOV    R2,  C

ADD    R2,  D

MUL    R1, R2

MOV    X, R1 

R1 ← M[A]

R1   R1+B

R2 ← M[C]

R2   R2+D

R1  R1*R2

M[X]  R1

ADD    R1, A, B

ADD    R2, C, D

MUL    X, R2, R2 

R1  A + B

R2 ← C + D

← R2 * R2


Z = (B+C)*A

0번지 명령 

1번지 명령 

2번지 명령 

3번지 명령 

PUSH    B

PUSH    C

ADD       

PUSH    A

MUL       

POP     Z

LOAD     B 

ADD        C

MUL       A

STORE     Z

MOV    R1,  B

ADD     R2, C

MUL     R1, A

MOV     Z, R1

ADD    R1, C, Z

MUL    Z, A, R1

 

 

4번지나 5번지 명령은 없다. 명령어를 보면 어셈블리 언어로 되어잇는 것을 확인할 수 있는데 그 다음부터는 컴푸일러가 너무 발달이 잘되어서 어셈블리를 쓸 필요가 없어졋다. 저급언어라고 불리우는 어셈블리언어는 요즘에 거의 쓰기지 않고 C기반언어JAVA같은 고급언어를 많이 쓰기때문에 3번지 이후 더 만들필요가 사리진 것이다.

그렇지 않더라도 사실  명령어를 표한하기위한 충분조건은 3개이고 필요조건은 2개이다. 0-2주소도 알고보면 3가지(2개의 목적어)를 표현한 것이다.


CPU 구조

1) 단일누산기 구조 (1주소)

ㅋ모든 명령은 누산기에서 실행되며 이 형식의 명령은 ADD X 와ㅏ 같이 주소필드가 하나 필요하다.

 이 가산명령은 AC<- AC+M[X]를 실행한다.  ( M[X] : 주소X에 잇는 기억장치내용 )

 

2) 범용 레지스터 구조 (2,3주소)

명령 형식은 3개의 주소필드가 필요하다 이경우 가산명령은 ADD.

....

 

.

3) 스택구조 (0주소)

 push와  pop명령은 주소필드가 한 필요하나 연산 명령은 스택의 top에 잇는 두값으루 연산에 사용하므로 주소 필드없이 동작코드만으로 표현한다.

㉠ 스택

㉡ 스택의 구성

㉢ push 및 pop 동작

㉣ 스택의 응용

728x90
반응형

'Computer Science > 컴퓨터 구조' 카테고리의 다른 글

6. 명령 사이클  (0) 2012.10.20
5. 주소지정 방식(Adressing mode)  (0) 2012.10.15
3. 명령어의 종류  (0) 2012.10.13
2. 명령어의 구조  (0) 2012.10.13
1. 중앙처리장치(Centural Processing Unit : CPU)  (0) 2012.10.13