목차
*마이크로-오퍼레이션
레지스터 전송과 마이크로 동작
레지스터 전송
논리 마이크로 연산
시프트 마이크로 연산
레지스터 전송과 마이크로 동작
레지스터 전송
논리 마이크로 연산
시프트 마이크로 연산
본문내용
운터를 이용하여 구현하는 것도 가능
- <그림 1-16>의 반가산기를 이용하여 구현하면 <그림 4-8>로 구현된다
그림 4-8 4-비트 2진 인크리먼트
○ 4비트 조합회로 인크리먼트
- <그림 4-8>
- 최하위 비트에 해당하는 반가산기의 한쪽 입력은 항상 1이다
- 다른 한쪽 입력은 증가되어야 할 숫자의 최하위 비트에 연결된다
- 반가산기의 캐리출력은 다음 반가산기의 한 입력에 연결
- A0~A3를 증가시킨 출력은 S0~S3이다
◎ 산술회로
○ 4비트 산술 가산회로
▷ <그림 4-9>
- 4개의 전가산기와 멀티플렉서로 구성
- 두개의 4비트 입력 A, B 그리고 출력 D
- 입력 A는 2진 가산기의 X입력에 연결
- B는 멀티플렉서의 데이타 입력측에 연결
- 멀티플렉서는 B, B\', 0, 1을 입력 데이타로 받아들여 두개의 선택입력 S1S0에 의해 선택된 한개가 출력된다
- 입력캐리 Cin은 최하위 전가산기의 캐리입력에 연결되고 출력캐리는 다음 단의 입력캐리에 연결된다
그림 4-9 4-비트 산술연산회로
▷ 2진 가산기의 출력
D = A + Y + Cin
▷ 회로의 동작결과는 <표 4-4>에 보여진다
논리 마이크로 연산
◎ 논리 마이크로연산
- 레지스터에 저장된 비트열에 대한 2진 연산으로서 각 비트를 독립된 2진 변수로 가정하여 연산을 수행
- 예) XOR연산은 제어변수 P가 1일 때 R1과 R2의 각 비트를 연산
P : R1 ← R1 R2
- 주로 2진 데이타의 비트조작이나 논리적 결정을 내릴 때 사용
○ 부울대수의 논리연산
- AND, OR, NOT
◎ 논리 마이크로 연산표
- 2개의 2진변수로 수행할 수 있는 논리연산은 16가지
- <표 4-5>에서 F0~F15까지 변수 x, y 사이에 가능한 부울함수의 진리표를 표시
- <표 4-6>은 16개의 함수표시
◎ 하드웨어 구현
○ 논리 마이크로연산을 하드웨어로 구현
▷ 각 비트마다 논리 게이트가 필요
▷ 4개의 논리연산 AND, OR, NOT, XOR만을 사용
▷ <그림 4-10(a)>은 4가지의 기본 마이크로연산을 수행하는 회로의 한 단계
- 4개의 게이트와 하나의 멀티플렉서로 구성
- 각 게이트가 정해진 논리연산을 수행하고 이 결과들 중에서 하나를 멀티플렉서로 선택하여 최종 출력값 결정
- <그림 4-10(b)>
그림 4-10 논리회로의 한 단계
◎ 응용
- 논리연산은 레지스터에 저장된 각 비트나 한 워드의 일부분을 처리하는 데 유용하다
- 각 비트의 값을 변경, 비트묶음을 제거, 새로운 비트값 삽입 등의 동작
○ 레지스터 A의 비트를 논리연산에 의하여 B레지스터의 기능으로서 처리되는 결과
▷ Selective-set 동작
- B의 1에 대응되는 부분의 A의 비트를 1로 세트시키고 0에 대응되는 부분의 A에는 영향을 주지 않는다
1010 A before A←A∨B
1100 B
1110 A after
▷ Selective Complement 연산
- B의 1에 대응되는 부분의 A의 비트를 보수로 만드는 작용
1010 A before A←A B
1100 B
0110 A after
▷ Selective Clear 연산
- B의 1에 대응되는 A의 비트만 클리어시키는 연산
1010 A before A←A∧B\'
1100 B
0010 A after
▷ Mask 연산
- B의 0에 대응되는 A의 비트만 클리어시키는 연산
1010 A before A←A∧B
1100 B
1000 A after
▷ Insert 연산
- 비트 묶음속에 새로운 값을 삽입하는 연산으로서 원하는 위치의 비트를 마스크시킨 후 원하는 값에 OR 시킨다
마스크(Mask) 0110 1010 A before
0000 1111 B (mask)
0000 1010 A after masking
인서트(Insert) 0000 1010 A before
1001 0000 B (insert)
1001 1010 A after
▷ 클리어 연산
- A와 B를 비교하여 두값의 워드가 일치하면 A를 0으로 세트하는 연산
1010 A before A←A B
1010 B
0000 A after
시프트 마이크로 연산
◎ 시프트 마이크로연산
- 데이타의 직렬전송을 위해 사용
- 산술이나 논리연산 및 다른 데이타 처리동작과 연계하여 사용
- 비트들이 좌우측으로 시프트될 때 첫번째 플립플롭은 직렬입력을 통해 새로운 2진 정보를 받아들인다
○ 논리 시프트(Logical Shift)
- 출렬입력으로 0이 전송된다
- 기호로는 Shl, Shr로 표시
R1←Shl R1
R2←Shr R2
○ 순환 시프트(Circulation)
- 시프트 레지스터의 직렬출력을 직렬입력에 연결
- 기호로는 Cil, Cir로 표시
○ <표 4-7>은 시프트 마이크로 연산을 표시
○ 산술 시프트(Arithmetic Shift)
- 부호가 있는 2진수를 시프트하는 동작
- 왼쪽 산술 시프트는 2진수에 2를 곱하는 동작
- 우측 산술 시프트는 2진수에 2를 나누는 동작
- 산술 시프트에서 2진수의 맨왼쪽 비트인 부호비트는 시프트되지 않으므로 변화가 없다
- <그림 4-11>은 전형적인 n비트 레지스터의 우측 산술 시프트의 동작을 표현
- 좌측 산술 시프트에서는 R0에 0을 삽입하고 나머지는 좌측으로 시프트
그림 4-11 오른쪽 산술 시프트
- 좌측 산술 시프트에서 원래 Rn-1과 Rn-2가 다른 값이었다면 부호부터의 반전이 발생하게 되고 이것은 원래 레지지스터의 값에 2를 곱하여 오버플로가 발생했음을 의미
- 오버플로 탐지방법
Vs = Rn-1 Rn-2
여기서 Vs가 1이면 오버플로 발생
◎ 하드웨어 구현
○ 시프트 장치
▷ <그림 2-9>와 같은 병렬로드를 가진 양방향 시프트 레지스터를 사용할 수도 있다
▷ 조합회로로 구현된 시프트장치
- <그림 4-12>
- A0~A3는 회로의 입력
- H0~H3는 회로의 출력
- IR, IL은 직렬입력
- 회로의 동작표는 Function table에 보여진다
그림 4-12 4-비트 조합회로 시프트
- <그림 1-16>의 반가산기를 이용하여 구현하면 <그림 4-8>로 구현된다
그림 4-8 4-비트 2진 인크리먼트
○ 4비트 조합회로 인크리먼트
- <그림 4-8>
- 최하위 비트에 해당하는 반가산기의 한쪽 입력은 항상 1이다
- 다른 한쪽 입력은 증가되어야 할 숫자의 최하위 비트에 연결된다
- 반가산기의 캐리출력은 다음 반가산기의 한 입력에 연결
- A0~A3를 증가시킨 출력은 S0~S3이다
◎ 산술회로
○ 4비트 산술 가산회로
▷ <그림 4-9>
- 4개의 전가산기와 멀티플렉서로 구성
- 두개의 4비트 입력 A, B 그리고 출력 D
- 입력 A는 2진 가산기의 X입력에 연결
- B는 멀티플렉서의 데이타 입력측에 연결
- 멀티플렉서는 B, B\', 0, 1을 입력 데이타로 받아들여 두개의 선택입력 S1S0에 의해 선택된 한개가 출력된다
- 입력캐리 Cin은 최하위 전가산기의 캐리입력에 연결되고 출력캐리는 다음 단의 입력캐리에 연결된다
그림 4-9 4-비트 산술연산회로
▷ 2진 가산기의 출력
D = A + Y + Cin
▷ 회로의 동작결과는 <표 4-4>에 보여진다
논리 마이크로 연산
◎ 논리 마이크로연산
- 레지스터에 저장된 비트열에 대한 2진 연산으로서 각 비트를 독립된 2진 변수로 가정하여 연산을 수행
- 예) XOR연산은 제어변수 P가 1일 때 R1과 R2의 각 비트를 연산
P : R1 ← R1 R2
- 주로 2진 데이타의 비트조작이나 논리적 결정을 내릴 때 사용
○ 부울대수의 논리연산
- AND, OR, NOT
◎ 논리 마이크로 연산표
- 2개의 2진변수로 수행할 수 있는 논리연산은 16가지
- <표 4-5>에서 F0~F15까지 변수 x, y 사이에 가능한 부울함수의 진리표를 표시
- <표 4-6>은 16개의 함수표시
◎ 하드웨어 구현
○ 논리 마이크로연산을 하드웨어로 구현
▷ 각 비트마다 논리 게이트가 필요
▷ 4개의 논리연산 AND, OR, NOT, XOR만을 사용
▷ <그림 4-10(a)>은 4가지의 기본 마이크로연산을 수행하는 회로의 한 단계
- 4개의 게이트와 하나의 멀티플렉서로 구성
- 각 게이트가 정해진 논리연산을 수행하고 이 결과들 중에서 하나를 멀티플렉서로 선택하여 최종 출력값 결정
- <그림 4-10(b)>
그림 4-10 논리회로의 한 단계
◎ 응용
- 논리연산은 레지스터에 저장된 각 비트나 한 워드의 일부분을 처리하는 데 유용하다
- 각 비트의 값을 변경, 비트묶음을 제거, 새로운 비트값 삽입 등의 동작
○ 레지스터 A의 비트를 논리연산에 의하여 B레지스터의 기능으로서 처리되는 결과
▷ Selective-set 동작
- B의 1에 대응되는 부분의 A의 비트를 1로 세트시키고 0에 대응되는 부분의 A에는 영향을 주지 않는다
1010 A before A←A∨B
1100 B
1110 A after
▷ Selective Complement 연산
- B의 1에 대응되는 부분의 A의 비트를 보수로 만드는 작용
1010 A before A←A B
1100 B
0110 A after
▷ Selective Clear 연산
- B의 1에 대응되는 A의 비트만 클리어시키는 연산
1010 A before A←A∧B\'
1100 B
0010 A after
▷ Mask 연산
- B의 0에 대응되는 A의 비트만 클리어시키는 연산
1010 A before A←A∧B
1100 B
1000 A after
▷ Insert 연산
- 비트 묶음속에 새로운 값을 삽입하는 연산으로서 원하는 위치의 비트를 마스크시킨 후 원하는 값에 OR 시킨다
마스크(Mask) 0110 1010 A before
0000 1111 B (mask)
0000 1010 A after masking
인서트(Insert) 0000 1010 A before
1001 0000 B (insert)
1001 1010 A after
▷ 클리어 연산
- A와 B를 비교하여 두값의 워드가 일치하면 A를 0으로 세트하는 연산
1010 A before A←A B
1010 B
0000 A after
시프트 마이크로 연산
◎ 시프트 마이크로연산
- 데이타의 직렬전송을 위해 사용
- 산술이나 논리연산 및 다른 데이타 처리동작과 연계하여 사용
- 비트들이 좌우측으로 시프트될 때 첫번째 플립플롭은 직렬입력을 통해 새로운 2진 정보를 받아들인다
○ 논리 시프트(Logical Shift)
- 출렬입력으로 0이 전송된다
- 기호로는 Shl, Shr로 표시
R1←Shl R1
R2←Shr R2
○ 순환 시프트(Circulation)
- 시프트 레지스터의 직렬출력을 직렬입력에 연결
- 기호로는 Cil, Cir로 표시
○ <표 4-7>은 시프트 마이크로 연산을 표시
○ 산술 시프트(Arithmetic Shift)
- 부호가 있는 2진수를 시프트하는 동작
- 왼쪽 산술 시프트는 2진수에 2를 곱하는 동작
- 우측 산술 시프트는 2진수에 2를 나누는 동작
- 산술 시프트에서 2진수의 맨왼쪽 비트인 부호비트는 시프트되지 않으므로 변화가 없다
- <그림 4-11>은 전형적인 n비트 레지스터의 우측 산술 시프트의 동작을 표현
- 좌측 산술 시프트에서는 R0에 0을 삽입하고 나머지는 좌측으로 시프트
그림 4-11 오른쪽 산술 시프트
- 좌측 산술 시프트에서 원래 Rn-1과 Rn-2가 다른 값이었다면 부호부터의 반전이 발생하게 되고 이것은 원래 레지지스터의 값에 2를 곱하여 오버플로가 발생했음을 의미
- 오버플로 탐지방법
Vs = Rn-1 Rn-2
여기서 Vs가 1이면 오버플로 발생
◎ 하드웨어 구현
○ 시프트 장치
▷ <그림 2-9>와 같은 병렬로드를 가진 양방향 시프트 레지스터를 사용할 수도 있다
▷ 조합회로로 구현된 시프트장치
- <그림 4-12>
- A0~A3는 회로의 입력
- H0~H3는 회로의 출력
- IR, IL은 직렬입력
- 회로의 동작표는 Function table에 보여진다
그림 4-12 4-비트 조합회로 시프트
소개글