Multiplication
첫 번째 피연산자는 multiplicand(피승수)라 부르고, 두 번째 피연산자는 multiplier(승수)라고 부른다.
💡multiplier가 1이면 multiplicand를 더하고 multiplier가 0이면 0을 더한다. (즉, 덧셈을 하지 않는다.)
1️⃣곱셈 하드웨어
매 단계마다 multiplicand를 왼쪽으로 한 자리씩 이동시키고 필요하면 중간 결과에 더해주는 식으로 계산되어야 한다.
* 32비트 muliplicand가 왼쪽으로 32번 이동해야 하기 때문에 64비트 레지스터가 필요한 것이다.
2️⃣Second version 하드웨어
첫 번째 하드웨어와의 다른 점은 multiplicand 레지스터, multiplier 레지스터, ALU 전부 32비트이고, 곱 레지스터만이 64비트이다.
multiplier의 비트가 1이면 multiplicand가 곱 레지스터의 상위 32비트에 더해지고,
이번에는 곱 레지스터가 오른쪽으로 자리이동(shift right)하며, multiplier도 오른쪽으로 자리이동(shift right)한다.
여기서 보면 Product의 오른쪽 부분이 낭비가 되는 것을 볼 수 있다. 그래서 Multiplier를 Product의 오른쪽 부분을 채운 수정된 버전도 있다. 다음과 같다.
3️⃣Refined version 하드웨어
위의 하드웨어를 통해 별도의 multiplier 레지스터는 없어진 것을 볼 수 있다.
(대신 multiplier를 곱 레지스터의 오른쪽 절반에 넣는다.)
4️⃣부호 있는 곱셈
Booth’s Algorithm: 부호가 있는 숫자의 계산
부호가 있기 때문에 arithmetic shift를 해야 한다.
음수인지, 양수인지에 따라서 1이 들어갈지, 0이 들어갈지가 결정난다.
- 00, 01: 계산 없음
- 01: 더하기
- 10: 빼기
2개의 비트씩 검사를 해야 하는데 위의 예시에서는 4비트짜리 곱하기기 때문에 0을 뒤에 하나 더 붙여서 4번 검사를 할 수 있게 만든다.
'2-2 학기 > Computer Organization' 카테고리의 다른 글
[컴퓨터구조] Lec15 Pipelining (1) | 2023.11.01 |
---|---|
[컴퓨터구조] Lec12 Datapath Design (0) | 2023.10.30 |
[컴퓨터구조] Lec10 Floating Point (1) | 2023.10.30 |
[컴퓨터구조] Lecture 4 Machine Instructions (1) | 2023.09.30 |
[컴퓨터구조] Lecture 3 MIPS Instructions (0) | 2023.09.30 |