ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 4. 레지스터 전송과 마이크로 연산
    전공공부/컴퓨터시스템구조 2020. 3. 25. 12:50
    728x90
    반응형

    목차

    1. 레지스터 전송 언어

    2. 레지스터 전송

    3. 버스와 메모리 전송

    4. 산술 마이크로 연산

    5. 논리 마이크로 연산

    6. 시프트 마이크로 연산

    7. 산술 논리 시프트 장치

     

    4.1 레지스터 전송 언어

    레지스터에 저장된 데이터를 가지고 실행되는 동작을 마이크로 연산(micro-operation)이라고 하며, 이것은 하나의 클럭 펄스 동안에 실행되는 기본적인 동작으로서 예를들어 시프트(shift), 카운트(count), 클리어(clear), 로드(load)등이 있다.

     

    디지털 컴퓨터의 구조를 정의하기 위하여

    1. 레지스터의 종류와 그 기능

    2. 레지스터에 저장된 이진 정보를 가지고 수행되는 일련의 마이크로 연산들

    3. 일련의 마이크로 연산을 시작시키는 제어 기능

    등을 규정해야 하는데 레지스터간의 마이크로 연산 전송을 보다 간단하고 명료하게 표시하기 위하여 사용하는 기호들을 레지스터 전송 언어라고 하며, 이것은 디지털 컴퓨터의 내부 조직을 상세하게 나타내는 수단으로도 이용되는 한편 디지털 시스템의 설계도 편리하게 해준다.

     

    4.2 레지스터 전송

    레지스터는 그 기능을 나타내기 위하여 머릿글자들을 대문자로 표시한다. 예를들어 MAR은 메모리 주소 레지스터(memory address register)를 나타낸다. 다른 예로서 PC(program counter), IR (명령어 레지스터, instruction register) 등이 있다. n비트 레지스터의 각 플립플롭들은 맨 오른쪽의 것을 0으로 하여 n-1까지 번호가 매겨져 있다. 레지스터를 나타내는 가장 일반적인 방법은 그림 4-1(a)에서와 같이 사각형 테두리 안에 이름을 적는 방법이다. 각각의 비트들은 (b)와 같이 나타내며 (c)에서는 16비트 레지스터에 번호를 붙이는 방법을 보여주고 있다. (d)에서는 16비트 레지스터가 두 부분으로 나뉘어져 있는데, 비트 0에서 7까지는 하위 바이트로 L이라고 하고, 비트 8에서 15까지는 상위바이트로 H라고 표시한다.

     

    레지스터들 사이의 정보 전송은 치환 연산자를 이용하여 다음과 같이 나타낸다.

    R2← R1

    제어 함수는 0 또는 1의 값을 갖는 부울 변수로서, 이것을 이용하여 다음과 같이 쓸 수 있다. 이 문장에서 제어조건의 끝은 콜론으로 인식되며, P=1일 때 전송 동작이 수행됨을 의미한다.

     

    • Ex) if (P=1) then (R2← R1)
    • P: R2← R1

     

    그림 4-2는 R1에서 R2로의 전송을 설명하는 블럭도로서, R1레지스터의 n출력이 R2레지스터의 n입력으로 연결되어 있음을 보여준다. 여기서 n은 비트 수를 의미한다. 

    P는 시간 t에서 클럭 펄스의 상승 모서리와 동기되어 시작한다. t+1시점에서 클럭 펄스와 로드가 모두 활성화 되어 있으므로 이때 R2의 데이터 입력이 병렬적으로 레지스터에 적재된다.

    P: R2← R1 에서 처럼 화살표는 전송의 방향을 나타내며, T: R2← R1, R1← R2와 같이 쉼표는 동시에 일어나는 여러 개의 동작을 나타낸다. 이 문장은 T=1일 때, 두 레지스터의 내용이 동시에 교체되는 것을 의미한다.

     

    4.3 버스와 메모리 전송

    전형적인 디지털 컴퓨터는 많은 레지스터와 레지스터들 사이의 정보 전송을 위한 경로를 가지고 있다. 그런데 각각의 레지스터들이 모두 독립된 전송 라인을 사용한다면 그 숫자가 너무 많아지기 때문에, 공통의 버스(bus) 시스템이라는 보다 효율적인 방법을 사용한다. 버스에서는 한 번에 하나의 전송만이 이루어지도록 제어 신호를 이용하여 전송에 사용된 레지스터를 선택한다. 공통 버스를 구성하는 한 가지 방법으로 그림 4-3에서와 같이 멀티플렉서를 이용하는 것이 있다. 각 레지스터는 0에서 3까지  네 개의 비트를 가지고 있으며, 버스는 네 개의 데이터 입력과 두 개의 선택 입력(S1,S0)을 가지는 네 개의 4x1 멀티플렉서로 구성되어 있다. 각 레지스터에서 동일한 위치의 비트들은 모두 하나의 멀티플렉서에 연결되어 하나의 버스 라인을 형성하게 된다.

    S1S0가 00일 때는 레지스터 A의 내용이 버스에 전달되며 01일때는 B가 전달된다. 버스의 정보를 많은 목적 레지스터 중에서 하나로 전송하기 위해서는 버스라인을 모든 레지스터에 연결하고 로드 제어를 통해 특정한 목적 레지스터를 선택하면 된다. 버스 전송에 대한 기호 표현에 있어서 버스를 레지스터 전송문에 포함하게 되면 다음과 같이 표현된다.

    BUS ← C, R1← BUS or R1← C

     

    3- 상태 버스 버퍼

    버스 시스템은 멀티플렉서 대신 3-상태 게이트를 이용하여 구성할 수도 있다. 세 가지 상태 중에서 두 개는 보통의 게이트에서와 같은 논리 0과 1상태이고, 세번쨰 상태는 고저항 상태이다. 고저항 상태는 개회로와 같은 상태이기 때문에 출력이 차단되어 아무런 논리적 값을 갖지 못한다. 3-상태 게이트는 주로 버퍼가 많이 사용된다. 3-상태 버퍼 게이트에 대한 그림 기호는 그림 4-4에 나와있다.

     

    3- 상태 버퍼를 이용한 버스 시스템의 구현이 그림 4-5에 나타나 있다. 제어 입력을 통해 버스 라인에 연결될 버퍼를 선택한다. 이때 디코더를 이용하여 한순간에 오직 하나의 3-상태 버퍼만이 활성화되어 버스에 연결되고, 나머지 버퍼는 모두 고저항 상태에 있도록 제어한다.

     

    메모리 전송

    메모리 워드로부터 외부 세계로의 정보 전송은 읽기(read) 동작을 통해서 이루어지고, 메모리로 새로운 정보를 저장하는 것은 쓰기(write)동작에 의해 이루어진다. 메모리 워드는 M으로 나타내며, 주소는 M 다음의 각괄호 안에 표시한다. 메모리 주소를 주소 레지스터(address register, AR)로부터 받고 데이터를 데이터 레지스터 (data register, DR)에 전송하는 읽기 동작을 기호로 나타내면 다음과 같다.

    Read : DR ← M[AR]

     

    레지스터 R1에 있는 데이터를 AR에서 지정된 메모리 주소로 전송하는 쓰기 동작은 다음과 같이 나타낼 수 있다.

    Write: M[AR] ← R1

     

    4.4 산술 마이크로 연산

    마이크로 연산은 레지스터에 저장된 데이터에 대해 수행되는 기본적인 연산으로 디지털 컴퓨터에서 흔히 사용되는 마이크로 연산은 다음과 같이 네 가지로 분류된다.

    1. 레지스터 사이에서 이진 정보를 전송하는 레지스터 전송 마이크로 연산

    2. 레지스터에 저장된 수치 데이터에 대해 산술 연산을 수행하는 산술 마이크로 연산

    3. 레지스터에 저장된 비수치 데이터에 대해 비트 조작 연산을 수행하는 논리 마이크로 연산

    4. 레지스터에 저장된 데이터에 대해 시프트 연산을 수행하는 시프트 마이크로 연산

     

    기본적인 산술 마이크로 연산에는 덧셈, 뺄셈, 인크리멘트, 디크리멘트, 시프트 등이 있으며, 이중에서 산술 마이크로 연산은 다음과 같은 문장으로 정의된다.

     

    R3← R1+ R2

    레지스터 R1과 R2 내용의 합을 R3로 전송하는 이 문장을 구현하기 위해서는 세 개의 레지스터와 덧셈 연산을 위한 하드웨어가 필요하다. 다른 기본 산술 마이크로 연산은 표 4-3에 나와있다. 뺄셈 연산은 보통 보수와 덧셈을 이용하기 때문에

    표 4-3의 5번째와 같이 표현한다.

     

    표 4-3

     

     

     

    이진 가산기

    두 비트와 이전 캐리의 산술 합을 게산하는 디지털 회로를 전가산기(full-adder)라고 하며, 임의의 길이를 가진 두 이진수에 대한 덧셈을 수행하는 회로를 이진 가산기(binary adder)라고 한다. 이진 가산기는 여러 개의 전가산기들을 직렬로 연결하여 이전 것의 캐리 출력이 다음 것의 캐리로 입력되도록 구성한다.  그림 4-6

    C0 ~ C4는 입력과 출력 캐리를 나타내며, S출력은 합에 대한 각 비트를 나타낸다.

     

    이진 가감산기

    그림 4-7에서 보는 것과 같이 각 전가산기에 exclucive OR 게이트를 추가하면 덧셈과 뺄셈 연산은 하나의 동일한 회로로 구현될 수 있다. 이 회로는 모드 입력인 M이 0이면 가산기로 동작하고, M이 1이면 감산기로 동작한다.

     

     

    이진 인크리멘터

    인크리멘트 마이크로 연산은 레지스터의 값에 1을 더하는 것이다. 이것은 앞서 그림 2-10에서와 같은 이진 카운터를 이용하여 쉽게 구현할 수 있다.

    https://goodmilktea.tistory.com/122?category=844134

     

    2. 디지털 부속품

    목차 1. 집적 회로 2. 디코더 3. 멀티플렉서 4. 레지스터 5. 시프트 레지스터 6. 이진 카운터 7. 메모리 장치 2.1 집적 회로 집적 회로(IC)는 디지털 게이트를 구성하는 전자 부품들을 포함하는 실리콘 반도체 (ch..

    goodmilktea.tistory.com

    그림 4-8의 회로는 n개의 반가산기를 포함하여 n비트 이진 인크리멘터로 확장될 수 있다.

    반가산기 Half adder

     

    산술 회로

    표 4-3에 나열되어 있는 산술 마이크로 연산들은 병렬 가산기를 기본으로 하는 하나의 회로에 의해 모두 구현이 가능하다. 즉 가산기에 대한 데이터 입력을 제어함으로써 여러 가지 연산을 수행할 수 있다.

    4비트 산술 회로
    산술 회로의 함수표

     

    4.5 논리 마이크로 연산

    논리 마이크로 연산표

    두 개의 이진 변수로 수행될 수 있는 논리 연산은 모두 16가지가 있는데, 각각은 표 4-5의 진리표에 의해 결정된다. F0에서 F15까지 두 변수 x,y사이에 가능한 부울 함수 각각에 대한 진리표를 나타내는 것으로, 이 함수들에 대한 대수적인 표현은 표 4-6에 나타내고 있다.

     

    하드웨어 구현

    논리 회로의 한 단

    응용

    논리 마이크로 연산은 레지스터에 저장된 각 비트나 한 워드의 일부분을 처리하는 데 매우 유용하다. 즉 각 비트를 변경시키거나, 비트묶음을 제거하거나 새로운 비트값을 삽입할 수가 있다.

    예를들어 mask연산은 B의 1에 대응되는 A의 비트만 저장하는 연산으로 AND마이크로 연산과 같다.

    insert연산은 비트묶음 속에 새로운 값을 삽입하는 연산으로서 우선 원하는 위치 비트를 마스크시킨 후 원하는 값에 OR시킨다.

     

    4.6 시프트 마이크로 연산

    시프트 마이크로 연산은 데이터의 직렬 전송을 위하여 사용된다. 레지스터의 내용은 왼쪽 및 오른쪽으로 시프트될 수 있으며, 비트들이 시프트될 때 첫번째 플립플롭은 직렬 입력을 통하여 새로운 이진 정보를 받아들일 수 있다. 직렬 입력을 통하여 입력되는 정보에 따라 시프트의 종류가 나뉘어지며 논리, 순환, 산술 등의 세 가지 종류가 있다.

    논리적 시프트 : 왼쪽 혹은 오른쪽으로 비트를 한 칸씩 이동(빈자리는 0으로 채워짐)

     

    순환 시프트: 끝 값이 첫 값으로 돌아감 (역순가능)

     

    산술적 시프트 : 계산 <<, >>, 부호는 그대로, 수의 크기를 나타내는 비트만 시프트

    1 1 1 0 (-2) : 초기 상태 (2의 보수)

    1 1 0 0 (-4) : 산술적 좌측-시프트 결과

    1 1 1 0 (-2) : 산술적 우측-시프트 결과

    1 1 1 1 (-1) : 산술적 우측-시프트 결과 

     

    조합 회로 시프터는 그림 4-12에서처럼 멀티플렉서들을 이용하여 구현된다. 예를들어 선택 입력 S=0이면, 입력 데이터가 오른쪽(그림에서 아랫방향)으로 시프트되고, S=1이면, 입력 데이터는 왼쪽 (그림에서 윗방향)으로 시프트 된다. 그림 4-12의 함수표는 시프트에 의해 각 출력에 어떤 입력이 나오는지를 보여준다.

     

    4.7 산술 논리 시프트 장치

     

    컴퓨터에서는 각 마이크로 연산마다 독립된 레지스터를 두는 대신에 산술 논리 장치(ALU)라고 하는 공용 연산 장치에 연결된 레지스터 그룹을 사용한다. 이러한 경우에 마이크로 연산을 수행하기 위해서는 먼저 지정된 레지스터의 내용을 ALU의 입력에 올려놓는다. 다음에 ALU가 정해진 연산을 수행하고 결과가 나오면 그것을 목적 레지스터로 전송한다. ALU는 조합 회로로 구성되어 있기 때문에 근원 레지스터에서 ALU를 통하여 목적 레지스터까지의 데이터전송이 하나의 클럭펄스 기간 동안에 수행된다. 일반적으로 시프트 마이크로 연산은 별도의 장치에서 수행되지만 가끔은 ALU의 한 부분으로 구현되기도 한다.

    표 4-8은 그림 4-13의 회로가 제공하는 8개의 산술 연산, 4개의 논리연산, 그리고 2개의 시프트 연산을 나열해 놓은 표이다.

    728x90
    반응형

    '전공공부 > 컴퓨터시스템구조' 카테고리의 다른 글

    6. 기본 컴퓨터 프로그래밍  (0) 2020.03.26
    5. 기본 컴퓨터의 구조와 설계  (2) 2020.03.25
    3. 데이터의 표현  (0) 2020.03.23
    2. 디지털 부속품  (0) 2020.03.23
    1. 디지털 논리 회로  (0) 2020.03.23

    댓글

Designed by Tistory.