컴퓨터구조 및 설계/3장. Arithmetic for Computers

3.4 Division

leehyeon-dv 2024. 11. 18. 20:20

🔑Table of Contents

  1. Division
  2. Division Hardware (First version)   - 나눗셈알고리즘(초기버전)
  3. Optimized Divider (Sequencial version)
  4. Left Shift and Subtract Division Hardware
  5. 궁금한점 

📌Division

  • divisor(제수)가 0인지 확인한다
  • 긴 나눗셈의 접근법
    • 현재까지의 dividend(피제수) 자릿수가 divisor(제수) 자릿수보다 크거나 같으면
      • 몫의 현재 비트에 1을 넣고, 피제수에서 제수만큼 뺀다
    • 아닐경우
      • 몫의 현재 비트에 0을 넣고, 피제수의 비트자리를 한단계 뒤로 추가한다
  • 복원(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를 사용한다 

 

'컴퓨터구조 및 설계 > 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