<요약>
- 덧셈
- 회로
- 반가산기
- 전가산기
- 병렬가산기
- 플래그
- v, z, s, c
- 플래그
- 회로
- 뺼셈
- 회로
- 병렬 가감산기
- 회로
- 오버플로우 검증
- C4 XOR C3(맨 왼쪽, 맨 왼쪽 + 1 비트)
- 곱셈
- 부호없는 곱셈
- 부호있는 곱셈
- Booth 알고리즘
- 우측 시프트 시, 최상단 비트는 부호 유지
- 2의 보수 사용
- Booth 알고리즘
1) 덧셈
1. 반가산기
- 역할
- 더하기
- 회로
<요약>
- 덧셈
- 회로
- 반가산기
- 전가산기
- 병렬가산기
- 플래그
- v, z, s, c
- 플래그
- 회로
- 뺼셈
- 회로
- 병렬 가감산기
- 회로
- 오버플로우 검증
- C4 XOR C3(맨 왼쪽, 맨 왼쪽 + 1 비트)
- 곱셈
- 부호없는 곱셈
- 부호있는 곱셈
- Booth 알고리즘
- 우측 시프트 시, 최상단 비트는 부호 유지
- 2의 보수 사용
- Booth 알고리즘
1) 덧셈
1. 반가산기
- 역할
- 더하기
- 회로
2. 전가산기
- 역할
- 더하기(아랫자리에서 올라온 올림수도 고려함)
- 진리표
회로
3. 병렬 가산기
- 역할
- 덧셈 수행하는 전체 모듈
- 비트 개수만큼 전가산기를 이어 붙임
- 플래그 종류
- V 플래그(오버 플로우)
- 데이터 표현 크기를 벗어나면 1로 설정(=error)
- Z 플래그(0)
- 연산 결과값이 0이면 1
- 용도
- 반복문 사용 시, 카운트가 0이 되는 지점 찾기 쉬움
- S 플래그(부호)
- C 플래그(올림수)
- 맨 왼쪽 비트에서 올림수 발생하면 1
- 올림수는 버릴 수도 있으므로, C 플래그가 있어도 오버플로우로 판단 불가
- V 플래그(오버 플로우)
- 예시(4비트 병렬 가산기)
4. 덧셈 오버플로우
- 의미
- 표현 범위를 벗어나서 데이터 값이 틀린 상태
- 검출 방법
- C4 XOR C3
- 이유
- C3에서만 캐리 발생
- C3가 부호 비트로 넘어가서 값을 바꾸기 때문에 값의 부호가 바뀌어버림
- C4에서만 캐리 발생
- C4에서 발생한다는 것은 부호비트의 값이 0이 된다는 것
- 따라서, 음수 + 음수(1)를 더했는데 0(양수)가 되므로 값의 오류 발생
- C3,C4 둘다 캐리 발생 시, 오버플로우 X
- C4에서 부호가 반대로 바뀌었는데, C3가 다시 원래 부호로 바꿔줌
- C3에서만 캐리 발생
2) 뺄셈
- 따로 회로가 존재하지 않음
- 음수는 보수 취해서 덧셈 회로를 쓰면 되기 때문
1. 뺄셈 오버플로우
- 검출 방법
- C4 XOR C3
2. 4비트 병렬 가감산기
- 역할
- 덧셈, 뺄셈 모두 수행하는 회로
- 2의 보수 기반으로 계산해보면 계산 결과가 일치함
- 회로
3) 곱셈
1. 양수끼리의 곱셉
- 방법
- 시프트 연산 + 더하기 연산을 수행하면 됨
- 동작 과정
- 피승수 : 곱함을 당하는 수
- 승수 : 곱하는 수
2. +,- 부호를 고려한 곱셉
- Booth 알고리즘(곱셈 최적화 기법) 적용
- 예시
- 주의
- 우측 시프트 시, A의 최상단 비트는 부호를 유지해야됨.
- 주의
'CS > 컴퓨터 구조' 카테고리의 다른 글
2장 : 컴퓨터 산술/논리 - (4) 부동소수점 (0) | 2024.11.20 |
---|---|
2장 : 컴퓨터 산술/논리 - (3) 산술 연산 (0) | 2024.11.18 |
2장 : 컴퓨터 산술/논리 - (1) 논리 연산 (0) | 2024.11.13 |
1장 : CPU - (5) 주소 지정 방식 (0) | 2024.11.11 |
1장 : CPU - (4) 명령어 세트 (0) | 2024.11.08 |