ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 7. 마이크로 프로그램된 제어
    전공공부/컴퓨터시스템구조 2020. 3. 28. 14:17
    728x90
    반응형

    목차

    1. 제어 메모리

    2. 주소 시퀀싱

    3. 마이크로 프로그램의 예

    4. 제어 장치의 설계

     

    7.1 제어 메모리

    데이터 처리 동작을 수행하는 부분인 중앙 처리 장치인 CPU는 산술논리 연산장치라는 (ALU), 제어 장치 (CU), 레지스터로 구성되어 있다.

    레지스터 집합은 명령어를 실행하는 데 필요한 중간 데이터를 보관하고, 산술 논리 장치 (ALU)는 명령어를 실행하기 위한 마이크로 연산을 수행한다. 그리고 제어 장치는 레지스터 사이의 정보 전송을 감시하거나 ALU에서 수행할 동작을 지시한다.

    이 장에서는 어떤 데이터를 어떤 연산을 수행하고 어떤 레지스터에 저장할지 제어를 하는 제어장치(Control unit)에 대해 다룬다고 할 수 있다.

    이 제어장치는 Hard-wired 된 방법과 micro program으로 구성된 제어 방법이 있다.

    hard-wired는 5장에서 다룬 방법으로 ADD라는 연산을 수행하기 위해 반도체 위에 add라는 연산의 회로를 디코더, 멀티플렉서, 플립플롭 등을 사용하여 직접 회로를 구성하여 직접 계산하기 위한 방법이다. 이 방법은 회로 구성이 복잡하고 한번 회로가 설계되면 수정할 수 없지만 모든 과정이 직접 계산되기 때문에 빠르다는 장점이 있다.

     

    반대로 7장에서 다룰 마이크로 프로그램된 제어는 연산, 저장 등의 제어를 여러 프로그래밍 된 프로그램들을 조합하여 실행한다는 뜻이다. 그래서 6장에서 프로그램을 어떻게 실행하는지 어셈블리어에 대해 배운 것이고 이 어셈블리어를 활용하여 마이크로 프로그램에 의한 동작에 대해 다룰 수 있게 된다. 마이크로 프로그램은 제어메모리에 저장되는데 이는 ROM에서 저장된다고 할 수 있다. 초창기에는 오직 읽기만 가능하여 프로그램 수정이 불가능 했지만 최근에WCM(writable control memory)라는 메모리를 사용하여 마이크로 프로그램을 수정하고 저장할 수 있다. (hard-wired에 비해 속도는 느림-> 하나의 연산을 위해 여러 프로그램들을 해석하고 참조해야 되기 떄문)

     

    마이크로 프로그램된 제어 장치의 일반적인 구성과 과정

    1.제어 메모리(control memory)

    마이크로프로그램을 저장

     

    2. 제어 주소 레지스터(Control Address Register)

    제어 메모리로부터 읽어올 마이크로 명령어 주소를 지정

     

    3. 시퀀서(sequencer=next address generator)

    제어 메모리로부터 제어 명령어를 읽어올 주소 시퀀스를 생성

    다음 마이크로 명령어의 주소는 입력에 따라 여러 가지 방법으로 결정할 수 있다.

     

    4. 제어 데이터 레지스터(control data register)

    제어 메모리에서 읽어 온 마이크로 명령어를 저장

    매 클럭 펄스마다 데이터 레지스터의 제어 워드에서 지정하는 마이크로 연산과 다음 마이크로 명령을 읽어오는 동작을 동시에 수행한다.

     

    즉 시퀀서 수행 후 제어 주소 레지스터에 제어 메모리로부터 읽어올 마이크로 명령어 주소를 지정하고 제어 메모리에서 끄집어와서 제어 데이터 레지스터에서 연산수행하고 다음 명령 읽어오는 동작 동시 수행한다.

    7.2 주소 시퀀싱

    주소 시퀀싱

    제어 메모리에 대한 일련의 접근 주소를 생성

     

    7.2.1 루틴(Routine)

    제어 메모리에 저장된 마이크로 명령어 그룹

    각 기계어 명령어는 명령어를 수행하는 루틴을 갖는다.

    예를들어 ADD라는 동작을 수행하기 위해 필요한 동작 4줄,

    이런게 하나의 루틴이라고 할 수 있다.

     

    7.2.2 맵핑(Mapping)

    OP code (Instruction Code)를 가지고 오면 이 명령어가 어디에 있는지 control memory에 결정한다. 이것을 맵핑이라 하고 제어 메모리 접근 주소 결정 방법은 다음과 같다.

    1. 제어 주소 레지스터를 하나 증가

    2. 무조건 분기와 상태 비트 조건에 따른 조건부 분기

    3. 명령어 비트(op-code)들로부터 제어 메모리 주소 맵핑

    4. 서브루틴을 호출하고 복귀

     

    우리는 일반적으로 ADD연산을 하기 위해 Op code 가 0000인 것을 읽고 0000주소에 있는 ADD 루틴 동작을 통해 연산을 수행하는 것이 일반적으로 알고 있던 방법이었다. 하지만 매핑이라는 개념을 적용하여 루틴 안에 있는 여러 줄의 동작이 어떻게 수행되는 지에 대해 알 수 있게 된다. 그림 7-2를 보자.

     

    명령어 코드 4비트(0000)가 들어왔다고 가정해보자. 멀티플렉서에 들어간다고 하면 Control memory에 들어가게 된다. (즉 멀티플렉서의 모든 입력값은 Control memory의 주소값)

    어쨌든 CAR에서 어떤 주소를 가져올까를 보게 되는데 맨 처음 명령어의 주솟값인 ADD 명령어의 주솟값을 가져오게 된다. ADD루틴에 4가지의 명령어가 있는데 그 중 첫번째 명령어를 읽는다는 의미. 그 후 루틴의 첫번째 명령어 수행을 위해 Microoperations로 보내진다. 그리고 incrementer 수행으로 인해 두번째 명령어 주소가 멀티플렉서 입력으로 다시 들어가게 된다. 이때 MUX의 select값은 incrementer값이 오게 해당 입력 값을 넣어줘야된다. 이 과정을 반복하며 3번째 명령어 동작까지 마치게 된다.

    SBR의 동작: 만약 ADD루틴 동작이 위 과정을 통해 끝났을 경우 해당 루틴이 끝났기 때문에 다음 주소로 Incrementer주소를 가지고 오면 안된다. 따라서 ADD루틴의 첫번째 동작을 실행할때 SBR에 처음 주소를 저장하게 되고 모든 루틴을 마치면 SBR값을 불러와서 그 다음 명령을 수행할 수 있게 도와준다.

    조건부 분기

    분기 논리에 의해 선택적인 분기 동작을 하여 마이크로 프로그램 동작을 한다는 뜻, 그림 7-2의 멀티플렉서에에 의한 선택적인 동작

     

    제어 메모리의 주소 생성 하드웨어

    명령어 맵핑

    명령어 코드를 확인한 후 Microinstruction address인 7비트 코드로 변환 후 Control storage 인 CAR로 이동한다.  (그림 7-2에서 명령어 코드가 맵핑에 의해 7비트로 변환되고 CAR로 이동하는 과정)

    따라서 그림 7-3에서 1011이라는 명령은 0101100 으로 맵핑이 되고 이것이 해당 명령어 루틴의 시작 주소가 된다. 그리고 이 루틴은 0101100, 0101101, 0101110, 0101111 이렇게 4가지까지 구성할 수 있고, 명령어의 갯수는 명령어 비트인 4비트 즉 16개의 명령어를 구성할 수 있다.  총 control memory 크기는 7비트이므로 2^7=128 이라고 할 수 있다.

     

    7.3 마이크로 프로그램의 예

    매핑 후 CAR에서 명령어 코드가 7비트 코드로 변환이 되고나면 Control memory에서 해당 명령어에 해당하는 루틴을 찾게되고 그 루틴안에서 DR의 값을 AC에 넣고 이런 동작들을 통해 해당 명령어 연산을 수행하게 된다. 이것이 그림 7-4 컴퓨터 하드웨어 구성에 나와있다.

     

    일반적인 컴퓨터 명령어 형식과 4개의 컴퓨터 명령어가 그림 7-5에 나와있다. opcode가 4비트이므로 16개의 명령어 표시가 가능하지만 해당 그림에는 4가지의 예만 나와있다.

     

    7.3.1 마이크로 명령어 형식

    마이크로 명령어 형식은 20비트로 네 개의 필드로 나뉘어져 있다. F1, F2, F3로 표시되는 필드는 컴퓨터의 마이크로 연산을 지정하고 CD필드는 상태 비트 조건을 선택한다. BR 필드는 분기의 종류를 지정하고, AD필드는 분기 주소를 가지고 있다. 마이크로 연산을 지정하는 세 개의 필드는 세 비트로 구성되어져 표 7-1에 나타낸 바와 같이 각각 서로 다른 일곱 가지 동작으로 해석된다. 그러므로 모두 21개의 마이크로 연산을 표시할 수 있지만, 하나의 마이크로 명령어에는 세 개의 동작만 지정할 수 있다. 세 개 동작을 모두 사용하지 않을 때에는 해당 필드의 값을 이진수 000으로 지정해준다 예를 들어 F1, F2, F3에 000 100 101의 값을 줌으로써 다음과 같이 두 개의 마이크로 연산을 동시에 지정할 수 있다.

    DR ← M[AR] (F2=100)

    PC ← PC + 1 (F3=101)

     

     

    7.3.2 기호로 표시된 마이크로 명령어

    표 7-1 에 정희된 기호는 마이크로 명령어를 기호 형태로 나타내는 데 사용된다. 기호로 표시된 마이크로 프로그램은 어셈블러를 통하여 이진 코드로 바꿀 수 있다. 

     

    7.3.3 이진 마이크로 프로그램

    기호로 된 마이크로 프로그램은 읽거나 이해하기에 쉽게 쓰여 있지만, 실제 메모리에 저장되는 형태가 아니다. 따라서 이는 어셈블러나, 또는 사람이 직접 이진 코드로 바꾸어야 한다. 표 7-3은 표 7-2의 마이크로 프로그램을 이진 코드화한 것이다. 이 이진 코드는 표 7-1에 정의한 바를 따른다.

     

    7.4 제어 장치의 설계

    마이크로 명령어는 각각 독립된 기능을 가지는 여러 개의 필드로 구성되어 있다. 각 필드는 마이크로 연산을 구동시키기 위한 제어 비트를 포함하거나, 다음 실행될 마이크로 명령어의 주소를 결정하는 방법을 지시하거나 분기를 위한 주소를 포함하고 있다. 동시에 수행되는 마이크로 연산들은 함께 모아서 인코딩하여 나타낼 수 있기 때문에 제어 비트의 수를 줄일 수 있다. 그림 7-7은 마이크로 연산 필드의 디코딩 과정을 나타낸다.

     

    7.4.1 마이크로 프로그램 시퀀서

    따라서 제어 메모리를 위한 마이크로 프로그램 시퀀서는 그림 7-8과 같은 동작에 의해 실행된다고 할 수 있다.

     

    728x90
    반응형

    댓글

Designed by Tistory.