🔑Table of Contents
- Division
- Division Hardware (First version) - 나눗셈알고리즘(초기버전)
- Optimized Divider (Sequencial version)
- Left Shift and Subtract Division Hardware
- 궁금한점
📌Division
- divisor(제수)가 0인지 확인한다
- 긴 나눗셈의 접근법
- 현재까지의 dividend(피제수) 자릿수가 divisor(제수) 자릿수보다 크거나 같으면
- 몫의 현재 비트에 1을 넣고, 피제수에서 제수만큼 뺀다
- 아닐경우
- 몫의 현재 비트에 0을 넣고, 피제수의 비트자리를 한단계 뒤로 추가한다
- 현재까지의 dividend(피제수) 자릿수가 divisor(제수) 자릿수보다 크거나 같으면
- 복원(Restoring) division
- 피제수에서 제수만큼 뺐는데 음수가 된다면, 다시 제수를 더해 복원해줘야한다
- Signed(부호) division
- 절댓값(부호없는)을 써서 나눗셈을 해야한다
- 그리곤 몫과 나머지의 부호를 조정한다
📌 Division Hardware (First version)
📌Optimized Divider (Sequencial version)
최적화된 나눗셈기 ( 순차적인 버전)
- partial-remainder 뺄 때마다 하나의 싸이클이 진행된다
- 하드웨어적으로 곱셈과 나눗셈 모두에 사용 할 수 있다
📌Left Shift and Subtract Division Hardware
간단히 설명하기 위해, 4 bit 두 수를 나누는 예시
8bit인 dividend 상위 4비트가 나머지로 하위4비트가 몫으로 작동한다.
📌 Faster Divider
💡multiple quotient알고리즘 알고있기
- multiplier(승수)처럼 병렬적(parallel)인 하드웨어를 사용할 수 없다
- 나눗셈에서는 remainder에 divisor를 뺀(subtraction)결과가 음수인지 아닌지에 따라 다르게 동작하기 때문
- 더 빠른 나눗셈기는 단계마다 동시에 여러 개의 quotient(몫) 비트를 구할 수 있다
- SRT division은 새로운 알고리듬
- 그래도 여전히 여러 번의 단계는 필요하다
📌 MIPS Division
- 결과용으로 HI/LO의 2개의 레지스터를 사용한다
- HI : 32-bit의 나머지
- LO: 32-bit의 몫
- Instructions
- div rs, rt / divu rs, rt
- 오버플로우는 발생하지 않는지, 0으로 나누는지확인한다
- 결과에 접근하기위해 mfhi , mflo를 사용한다
- div rs, rt / divu rs, rt
'컴퓨터구조 및 설계 > 3장. Arithmetic for Computers' 카테고리의 다른 글
3.7 실례: x86의 SSE와 AVK (1) | 2024.11.20 |
---|---|
3.5 Floating Point (0) | 2024.11.20 |
3.3 Multiplication (1) | 2024.11.18 |
3.2 Addition and Subtraction (0) | 2024.11.17 |
3.1 Introduction (0) | 2024.11.17 |