3.3 논리 연산
기본적인 논리 연산들
하드웨어의 구성
- 입력 비트들은 모든 논리 게이트들을 통과
- 선택 신호들에 의하여 멀티플렉서의 네 입력들 중 하나를 출력
N-비트 논리 연산장치 : N-비트 데이터들을 위한 논리 연산장치
- 기본 논리 모듈들을 병렬로 접속
AND 연산 : 두 데이터 단어들의 대응되는 비트들 간에 AND 연산을 수행
OR 연산 : 두 데이터 단어들의 대응되는 비트들 간에 OR연산 수행
XOR 연산 : 두 데이터 단어들의 대응되는 비트들 간에 exclusive-OR 연산을 수행
NOT 연산 : 데이터 단어의 모든 비트들을 반전(invert)
선텍적-세트 (selective-set) 연산 : B레지스터의 비트들 중에서 1로 세트 된 비트들과 같은 위치에 있는 A레지스터의 비트들을 1로 세트 < OR 1 >
선택적-보수 (selective-complement) 연산 : B레지스터의 비트들 중에서 1로 세트 된 비트들에 대응되는 A레지스터의 비트들을 보수로 변환 < XOR 1 >
마스크(mask) 연산 : B레지스터의 비트들 중에서 값이 0인 비트들과 같은 위치에 있는 A레지스터의 비트들을 0으로 바꾸는(clear하는) 연산 < AND 0 >
- 용도 : 단어 내의 원하는 비트들을 선택적으로 clear하는 데 사용
삽입(insert) 연산 : 새로운 비트 값들을 데이터 단어내의 특정 위치에 삽입
- 방법 : 1. 삽입할 비트 위치들에 대하여 마스크(AND)연산 수행
2. 새로이 삽입할 비트들과 OR 연산을 수행
비교(compare) 연산 : A와 B레지스터의 내용을 비교 < A XOR B >
- 만약 대응되는 비트들의 값이 같으면, A레지스터의 해당 비트를 '0'으로 세트
- 만약 서로 다르면, A레지스터의 해당 비트를 '1'로 세트
- 모든 비트들이 같으면 (A=00000000), Z Flag를 1로 세트
3.4 시프트(shift) 연산
논리적 시프트 (logical shift) : 레지스터 내의 데이터 비트들을 왼쪽 혹은 오른쪽으로 한 칸씩 이동
- 좌측 시프트 (left shift)
> 모든 비트들은 좌측으로 한 칸씩 이동
> 최하위 비트로는 '0'이 들어오고, 최상위 비트는 버림
- 우측 시프트 (right shift)
> 모든 비트들이 우측으로 한 칸씩 이동
> 최상위 비트로 '0'이 들어오고, 최하위 비트는 버림
시프트 기능을 가진 레지스터의 내부 회로
좌측 시프트 시 : 제어신호 (L) = 1, (R) = 0
우측 시프트 시 : 제어신호 (R) = 1, (L) = 0
순환 시프트(circular shift) : 회전(rotate)이라고도 부르며, 최상위 혹은 최하위에 있는 비트를 버리지 않고 반대편 끝에 있는 비트 위치로 이동
- 순환 좌측-시프트 (circular shift-left) : 최상위 비트가 최하위 비트로 이동
- 순환 우측-시프트 (circular shift-right) : 최하위 비트가 최상위 비트로 이동
직렬 데이터 전송 : 시프트 연산을 데이터 비트 수만큼 연속적으로 수행함으로써 두 레지스터들 사이에 한 개의 선을 통하여 전체 데이터를 이동하는 동작
산술적 시프트(arithmetic shift) : 수(number)를 나타내는 데이터에 대한 시프트
> 방법 : 시프트 과정에서 부호 비트는 그대로 유지시키고, 수의 크기를 나타내는 비트들만 시프트
- 산술적 좌측-시프트(arithmetic shift-left)
- 산술적 우측-시프트(arithmetic shift-right)
C Flag를 포함한 좌측-시프트 (SHLC : shift left with carry)
C Flag를 포함한 우측-시프트 (SHRC : shitf right with carry)
C Flag를 포함한 좌측 순환 시프트 연산 (RLC : rotate left with carry)
C Flag를 포함한 우측 순환 시프트 연산 (RRC : rotate right with carry)
03. 컴퓨터 산술과 논리 연산 (4) [부동소수점 수의 표현/연산] (0) | 2020.04.17 |
---|---|
03. 컴퓨터 산술과 논리 연산 (3) [정수의 산술 연산] (0) | 2020.04.08 |
03. 컴퓨터 산술과 논리 연산 (1) [ALU의 구성 요소, 정수의 표현] (0) | 2020.04.08 |
02. CPU의 구조와 기능 (3) [명령어 세트] (0) | 2020.04.03 |
02. CPU의 구조와 기능 (2) [명령어 파이프라이닝] (0) | 2020.04.03 |
댓글 영역