컴퓨터일반 - 3. 연산
<연산>
연산이란 기억장치 내에 있는 자료를 중앙처리장치(cpu)를 이용하여 처리하는 것
ALU - 산술 논리 장치
1. 자료의 성질에 따른 분류
비수치적 연산(논리) : 논리적shift, rotate, move, AND, OR, complement
수치적 연산(산술) : 고정 소수점 연산(정수), 부동 소수점 연산(실수), Pack연산(10진), 산술shift(*,/)
산술연산 + - / 논리연산 AND, OR, NOT, XOR / 관계연산 > <
2. 자료의 수에 따른 분류
단항연산 : 하나의 입력자료에 대한 연산으로 shift, rotate, complement 등이 있다.
이항연산 : 두개의 입력자료에 대한 연산으로 AND, OR, 사칙연산 등이 있다.
3. 비 수치적 연산
ALU에 의해 수행되는 연산에는 논리연산, rotate 및 shift 연산 등이 있다.
비 수치적 연산중 대표적인 논리연산은 move, AND, OR 그리고 complement
move - 컴퓨터 내부의 하나의 레지스터에 저장된 자료를 다른 레지스터로 옮기려고 할 때 사용
AND - binary 연산자로서 비 수치적 자료중에서 필요없는 부분을 삭제할 때(1과 AND불변, 0과 AND 삭제)
OR - 필요한 부분에 내용을 삽입하기 위한 연산
shift 연산 - 입력자료의 모든 비트들을 서로 이웃한 비트의 자리로 옮기는 것, 우측shift, 좌측shift, padding되는 자리의 값은 언제나 0
XOR - 비교와 부분적 반전을 시키고자 할 때 사용
(1) 비교 XOR : 결과가 0이면 두 스트링은 같다. 결과가 0이 아니면 두 스트링은 다르다.
(2) 부분반전(selective complement) XOR : 반전시키고자 하는 부분은 1과 XOR
(3) Selective set OR : 1로 set하고 싶으면 1과 OR
4. 수치적 연산
컴퓨터의 자료 처리에서 기본이 되는 것
부호화된 1의 보수, 부호화된 2의 보수로 표시된 고정소수점 2진 연산(정수연산), 부동 소수점 연산(16진 연산, 실수 연산), pack연산(10진 연산), 3초과 code에 의한 연산, 산술 shift등
4.1 고정 소수점 2진 연산
최 좌측의 1bit는 부호비트
덧셈은 부호비트를 포함하여 더한다. 이 때 부호비트로부터 나오는 캐리는 1의 보수의 경우 최우측비트에 더한다 - END AROUND CARRY(EAC), 2의 보수의 경우 carry는 무시한다.
뺄셈은 감수를 보수로 취하여 이 수를 피감수에 더하면 된다.
덧셈하고자 하는 두 수가 모두 양수이거나 음수이면 오버플로가 발생할 수 있다.
4.2 부동 소수점 연산(실수연산) - 느리다
부호, 지수, 소수부로 구성
(1) 덧셈과 뺄셈 : 지수의 값이 같도록 맞춘다. 가수를 조정해서 맞춘다(큰 지수쪽으로 맞춰야 정확도 up, 가장 우측부터 비교하면서 먼저 유효비트 1이 나타나는 쪽이 큰 지수쪽)
0인지 여부 조사(0에 대한 부동소수점수의 표현을 표준화 할 수 없기 때문) -> 가수 위치 조정 -> 가수에 대한 덧셈 or 뺄셈 -> 정규화
(2) 곱셈
0인지 여부 조사 -> 지수끼리 더한다 -> 가수끼리 곱한다 -> 결과의 정규화
(3) 나눗셈
0인지 여부 조사 -> 부호결정 -> 피젯수의 위치조정 -> 지수의 뺄셈 -> 가수의 나눗셈
4.3 BCD연산(pack연산, 10진 연산)
4비트 2진 가산기에 입력시키면 범위는 0~19(9+9+1(캐리))
결과가 1001보다 크면 0110(6)을 더해 보정해준다(10~15->Don't care). 또한 carry가 발생할 경우에도 보정(16~19)(시간 길다)->2진수 4자리 16진수, 10진수 10개 차이나기 때문
속도 : 2진수(1번에) > 3초과코드(2번에) > BCD(2번이상)
4.4 3초과 연산
BCD 연산의 단점을 보완, 자기보수코드
carry가 발생한 곳은 0011(3)을 더하고, 발생하지 않은 곳은 0011(3)을 뺀다
4.5 곱셈 및 나눗셈
산술적 shift 방법에 의해 수행
오른쪽으로의 산술 shift는 나눗셈, 왼쪽으로의 산술 shift는 곱셈
계속 산술 shift하면 나눗셈에서는 truncation(소수 이하가 짤리는 현상)이 곱셈에서는 overflow가 발생한다
padding되는 값은 알고리즘에 따라 다르다
부호비트는 이동의 대상이 아니다!
(1) 곱셈 : 1bit 왼쪽으로 산술 shift할 때마다 2를 곱하는 의미, 기억장치의 크기로 인하여 overflow발생 가능성
①부호 절대치에 의한 표현 : padding은 0, 잃어버리는 비트가 0이면 정상, 1이면 overflow
②부호화된 1의 보수에 의한 표현 : padding은 부호bit, 부호bit와 잃어버리는 bit가 다른경우 overflow
③부호화된 2의 보수에 의한 표현 : padding은 0, 부호bit와 잃어버리는 bit가 다른경우 overflow
(2) 나눗셈 : 소수이하의 값을 짤라버리는 현상 truncation
①부호 절대치에 의한 표현 : padding은 0, 잃어버리는 비트가 0이면 정상, 1이면 truncation, 양수는 0.5작고, 음수는 0.5크다.
②부호화된 1의 보수에 의한 표현 : padding은 부호bit, 부호bit와 잃어버리는 bit가 다른경우 truncation, 양수는 0.5작고, 음수는 0.5크다.
③부호화된 2의 보수에 의한 표현 : padding은 부호bit, 잃어버리는 bit가 1인경우 truncation, 양수, 음수 모두 0.5작다.
[출처] 유레카 컴퓨터일반 - 이재환, 이정식
교재를 개인 공부 목적으로 정리한 것입니다. 틀린부분이 있을 수 있습니다.
문제가 될 시 알려주시면 바로 조치하겠습니다.
무단배포나 복사는 금지합니다.