상세 컨텐츠

본문 제목

03. 컴퓨터 산술과 논리 연산(2) [논리 연산, 시프트 연산]

Computer Science/Computer Architecture

by RACC8N 2020. 4. 8. 18:21

본문

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)

 

관련글 더보기

댓글 영역