곱셈기
"오늘의AI위키"의 AI를 통해 더욱 풍부하고 폭넓은 지식 경험을 누리세요.
1. 개요
곱셈기는 두 숫자를 곱하는 연산을 수행하는 하드웨어 또는 소프트웨어 장치이다. 초기 컴퓨터에서는 곱셈 명령어가 없어 곱셈 루틴을 사용했지만, 기술 발전으로 인해 곱셈 명령어를 가진 마이크로프로세서가 등장했다. 곱셈은 이진 곱셈, 부호 없는 정수 곱셈, 부호 있는 정수 곱셈, 부동 소수점 곱셈 등 다양한 방식으로 구현되며, 부분 곱을 계산하고 더하는 방식으로 작동한다. 하드웨어 구현은 부분 곱 생성, 축소, 최종 곱 계산의 세 단계로 이루어지며, 속도 향상을 위해 다양한 알고리즘과 압축기를 사용한다. 곱셈기는 아날로그 곱셈을 수행하는 회로에서도 활용되며, 주파수 변환 등에 사용된다.
더 읽어볼만한 페이지
- 곱셈 - 구구단
구구단은 곱셈을 간편하게 계산하도록 곱셈 결과를 표로 정리한 것이며, 1단부터 9단까지 외우는 곱셈 구구가 일반적이고, 덧셈, 뺄셈, 나눗셈 구구 등 다양한 형태가 존재하며, 수학적 개념 이해의 기초가 되고 실생활에도 응용된다. - 곱셈 - 네이피어의 뼈
네이피어의 뼈는 존 네이피어가 1617년에 발명한 계산 도구로, 곱셈을 덧셈으로 변환하여 계산을 간편하게 하고 나눗셈과 제곱근 계산에도 활용되며, 계산 기반과 막대 세트로 구성되어 막대에 표시된 숫자를 이용하여 복잡한 곱셈을 단순화한다. - 디지털 회로 - 클럭 신호
클럭 신호는 디지털 회로의 동작을 동기화하는 주기적인 신호로, 수정 발진기나 위상동기회로를 통해 생성되며 마이크로프로세서의 동작 속도를 결정하고 전력 효율을 위한 동적 주파수 변경 기술과 잡음 감소를 위한 사인파 클럭이 사용되기도 하며, 칩 내부 분배 효율성이 중요하다. - 디지털 회로 - 타이머
타이머는 시간 간격을 측정하거나 제어하는 장치 또는 기능으로, 기계식부터 전자식, 디지털, 소프트웨어 방식 등 다양한 형태로 존재하며, 독립적으로 사용되거나 시스템 내부에 내장되어 폭넓게 활용되고, 작동 방식과 구현 방식에 따라 여러 종류로 나뉘며, 최근에는 모바일 기반 타이머와 인공지능 기술을 활용한 효율적인 시간 관리 기능으로 발전하고 있다. - 컴퓨터 산술 - IEEE 754
IEEE 754는 부동소수점 숫자를 표현하고 처리하기 위한 국제 표준으로, 다양한 형식과 연산, 반올림 규칙, 예외 처리 등을 정의한다. - 컴퓨터 산술 - 1의 보수
1의 보수는 이진수에서 양수는 일반적인 이진수로, 음수는 양수의 각 비트를 반전시켜 표현하며, 덧셈 시 자리올림수가 발생하면 결과값에 더해야 하고, 0을 중복 표현하는 단점으로 현대에는 2의 보수가 주로 사용된다.
곱셈기 |
---|
2. 역사
1947년부터 1949년까지 아서 알렉 로빈슨(Arthur Alec Robinson)은 잉글리시 일렉트릭(English Electric)에서 학생 견습생 및 개발 엔지니어로 일하며 초기 맨체스터 마크 1 컴퓨터의 하드웨어 곱셈기 설계를 연구했다.[1]
이진 곱셈은 학교에서 배우는 십진수 곱셈 방법과 유사하게, 부분 곱을 계산하고, 왼쪽으로 이동시킨 다음, 함께 더하는 방식으로 동작한다. 디지털 곱셈기를 구현하기 위해서는 다양한 기술이 사용된다. 대부분의 기술은 분할된 부분의 곱을 계산하고, 이를 더하여 최종 결과를 얻는 방식으로 구현된다. 이 방식은 초등학교에서 배우는 십진 정수의 필산에 의한 곱셈과 유사하지만, 곱셈기에서는 이를 이진수로 구현한다.[6]
1970년대 후반까지 대부분의 미니컴퓨터는 곱셈 명령어가 없었고, 프로그래머들은 "곱셈 루틴"[1][2][3]을 사용했다. 이 루틴은 부분 결과를 반복적으로 시프트하고 누산하는 방식으로, 종종 루프 언와인딩을 사용하여 작성되었다. 메인프레임 컴퓨터는 곱셈 명령어를 가지고 있었지만, 미니컴퓨터의 "곱셈 루틴"과 동일한 종류의 시프트와 덧셈을 수행했다.
초기 마이크로프로세서도 곱셈 명령어가 없었다. 1978년에 출시된 모토로라 6809와 1980년에 개발된 인텔 MCS-51 제품군, 그리고 Atmel AVR 8비트 마이크로프로세서에 곱셈 명령어가 포함되었다.[4]
대규모 집적 회로(LSI) 기술 발전으로 칩 내 트랜지스터 수가 증가하면서, 단일 칩에 더 많은 가산기를 집적하는 것이 가능해졌다. 모든 부분 곱을 한 번에 더할 수 있을 만큼 충분한 가산기를 집적하여 고속 곱셈이 가능해졌다.
일부 일반적인 디지털 신호 처리 알고리즘은 곱셈에 대부분의 시간을 할애하기 때문에, 디지털 신호 프로세서 설계자들은 곱셈을 최대한 빠르게 만들기 위해 칩 면적을 많이 사용한다. 단일 사이클 곱셈-누산 장치는 초기 DSP 칩 면적의 대부분을 차지하는 경우가 많았다.
3. 이진 곱셈
3. 1. 부호 없는 정수 곱셈
두 개의 부호 없는 정수형 8비트 ''a''[7:0]와 ''b''[7:0]을 곱하는 경우를 예로 들어 설명한다. 피승수 ''a''의 각 비트에 대해 1비트 곱셈을 여덟 번 수행하여 여덟 개의 부분 곱을 생성한다. 각 부분곱은 다음과 같이 계산된다.
:
즉, ''a''의 각 비트와 ''b''[7:0]를 논리곱(AND) 연산하여 부분 곱을 구한다.
최종 곱 ''P''[15:0]은 생성된 여덟 개의 부분 곱을 모두 더하여 계산한다. 이때, 각 부분 곱은 해당 비트 위치에 맞게 왼쪽으로 시프트(shift)하여 더한다.
결과적으로, ''P''[15:0]은 ''p''0 + (''p''1 << 1) + (''p''2 << 2) + ... + (''p''7 << 7)과 같이 계산되며, 최종적으로 부호 없는 16비트 곱셈 결과를 얻는다.
3. 2. 부호 있는 정수 곱셈
2의 보수 표현법을 사용하면 부호 있는 정수의 곱셈을 처리할 수 있다. 이 경우, 다음과 같은 사항을 고려해야 한다.- 피승수(b)가 부호 있는 정수인 경우: 부분 곱을 계산하기 전에 곱셈 결과의 비트 수까지 부호 확장을 해야 한다.
- 승수(a)가 부호 있는 정수인 경우: 마지막 부분 곱 p7은 최종 결과에 더하는 대신 빼야 한다.
아래는 수정된 배열 곱셈기의 형태로, 2의 보수 부호 있는 숫자를 지원한다.
1 | -p0[7] | p0[6] | p0[5] | p0[4] | p0[3] | p0[2] | p0[1] | p0[0] | |||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
-p1[7] | +p1[6] | +p1[5] | +p1[4] | +p1[3] | +p1[2] | +p1[1] | +p1[0] | 0 | |||||||
-p2[7] | +p2[6] | +p2[5] | +p2[4] | +p2[3] | +p2[2] | +p2[1] | +p2[0] | 0 | 0 | ||||||
-p3[7] | +p3[6] | +p3[5] | +p3[4] | +p3[3] | +p3[2] | +p3[1] | +p3[0] | 0 | 0 | 0 | |||||
-p4[7] | +p4[6] | +p4[5] | +p4[4] | +p4[3] | +p4[2] | +p4[1] | +p4[0] | 0 | 0 | 0 | 0 | ||||
-p5[7] | +p5[6] | +p5[5] | +p5[4] | +p5[3] | +p5[2] | +p5[1] | +p5[0] | 0 | 0 | 0 | 0 | 0 | |||
-p6[7] | +p6[6] | +p6[5] | +p6[4] | +p6[3] | +p6[2] | +p6[1] | +p6[0] | 0 | 0 | 0 | 0 | 0 | 0 | ||
1 | +p7[7] | -p7[6] | -p7[5] | -p7[4] | -p7[3] | -p7[2] | -p7[1] | -p7[0] | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
P[15] | P[14] | P[13] | P[12] | P[11] | P[10] | P[9] | P[8] | P[7] | P[6] | P[5] | P[4] | P[3] | P[2] | P[1] | P[0] |
여기서,
- `~p`는 `p`의 보수(반대 값)를 나타낸다.
- 각 부분 곱에서 최상위 비트(MSB)는 부호 확장을 피하기 위해 반전된다.
- p7은 뺄셈으로 처리되므로 다른 부분 곱과 달리 최상위 비트를 제외한 모든 비트가 반전된다.
- 첫 번째 부분 곱 항의 왼쪽에 1이 추가된다.
이러한 방식을 통해 2의 보수 연산의 특징을 활용하여 부호 있는 정수의 곱셈을 올바르게 처리할 수 있다.[6]
3. 3. 부동 소수점 곱셈
이진 부동 소수점 수는 부호 비트, 유효 숫자 비트(가수), 지수 비트를 포함한다(단순화를 위해 밑수 및 결합 필드는 고려하지 않음). 각 피연산자의 부호 비트는 XOR 연산을 통해 결과의 부호를 얻는다. 그런 다음, 두 지수를 더하여 결과의 지수를 구한다. 마지막으로, 각 피연산자의 가수를 곱하면 결과의 가수가 반환된다. 그러나 이진 곱셈의 결과가 특정 정밀도(예: 32, 64, 128)의 총 비트 수를 초과하면 반올림이 필요하며, 지수가 적절하게 변경된다.4. 하드웨어 구현
곱셈 과정은 부분곱 생성, 부분곱 축소, 최종 곱 계산의 3단계로 나뉜다.[7][8] 과거에는 시프터와 누산기를 사용하여 부분 곱을 순차적으로 더하는 방식이 사용되었으나, 속도가 느렸다. 현대에는 바우-울리 알고리즘,[10][12][11][13] 월리스 트리, 다다 곱셈기 등을 사용하여 모든 부분 곱을 한 번에 더하는 방식으로 속도를 향상시켰다. 부스 인코딩을 통해 부분 곱의 수를 줄여 성능을 더욱 향상시킬 수 있다.
고속 곱셈기는 조합 논리 회로로 구현되며, 자리올림 저장 가산기(Carry-Save Adder)와 빠른 가산기를 사용하여 지연 시간을 최소화한다. 부분곱 축소 과정은 일반적으로 곱셈기의 지연, 전력 소비, 면적에 가장 큰 영향을 미친다.[7]
1970년대 후반까지 대부분의 미니컴퓨터는 곱셈 명령어가 없었고, 프로그래머들은 부분 결과를 반복적으로 시프트하고 누산하는 방식의 곱셈 루틴을 사용했다.[1][2][3] 초기 마이크로프로세서에도 곱셈 명령어가 없었으나, 1978년 모토로라 6809와 1980년 인텔 MCS-51 제품군 등 일부 8비트 프로세서에 곱셈 명령어가 탑재되기 시작했다.[4]
디지털 신호 처리 알고리즘은 곱셈 연산에 많은 시간을 할애하므로, 디지털 신호 프로세서 설계자들은 곱셈 속도를 높이기 위해 많은 노력을 기울였다. 단일 사이클 곱셈-누산 장치는 초기 DSP 칩 면적의 대부분을 차지하기도 했다.
5. 곱셈기 종류
디지털 곱셈기는 연산 장치의 일종으로, 디지털 곱셈을 실행하는 회로이다. 디지털 곱셈기를 구현하는 데에는 다양한 기술이 사용되는데, 대부분 분할된 부분의 곱을 계산하고 이를 더하여 최종 결과를 얻는 방식으로 구현된다. 이 방식은 초등학교에서 배우는 십진 정수의 필산에 의한 곱셈과 유사하지만, 곱셈기에서는 이진수로 구현된다.
아날로그 곱셈기는 아날로그 곱셈을 수행하는 회로로, 주파수 대역의 변환 등에 사용된다. 일반적인 구현 방법은 라는 등식을 이용하는 것이다. 기본적인 원리는 다음과 같다.
1. 바이폴라 트랜지스터에서 가 되는 것을 이용하여, 입력 신호의 대수를 얻는다.
2. 연산 증폭기로 가산한다.
3. 1과 마찬가지로 를 이용하여 2에서 얻은 합의 지수를 취한다(이것이 두 수의 곱).
(단, 아날로그 회로이므로 실제로는 각 단계는 거의 순간적으로 진행된다.)
2의 부분을 감산으로 변경하면, 동일한 원리로 나눗셈도 가능하다.
6. 응용 분야
현대의 곱셈기는 바우-울리 알고리즘, 월리스 트리, 다다 곱셈기를 사용하여 한 클럭에 부분적인 곱을 모두 더한다. 월리스 트리 실행의 성능은 가끔 두 개의 피승수 중 하나의 부스 인코딩에 의하여 향상되어, 합계해야 할 부분적 곱의 개수를 감소시킨다.[1]
7. 한국의 곱셈기 연구 개발
이 섹션은 주어진 원본 소스(`source`)의 내용을 직접적으로 다루고 있지 않으므로, 요약(`summary`)에 기반하여 내용을 작성해야 합니다.
다음은 수정 및 보완된 내용입니다.
대한민국의 여러 대학과 연구기관에서 고성능, 저전력 곱셈기 설계에 대한 연구가 활발하게 이루어지고 있다. 특히, 인공지능과 딥러닝 기술의 빠른 성장에 발맞춰 이 분야에 특화된 곱셈기 개발에 대한 필요성이 커지고 있다. 삼성전자, SK하이닉스와 같은 주요 반도체 기업들은 곱셈기 기술을 포함한 첨단 프로세서 개발에 많은 노력을 기울이고 있다.
참조
[1]
서적
History of programming languages---II
Association for Computing Machinery
1996
[2]
간행물
Interfacing a hardware multiplier to a general-purpose microprocessor
https://dx.doi.org/1[...]
[3]
서적
Fundamentals of Digital Logic and Microcomputer Design
Wiley
[4]
서적
[5]
서적
Microprocessors and Microcontrollers: Architecture, Programming and System Design 8085, 8086, 8051, 8096
PHI Learning
[6]
서적
Computer Arithmetic: Algorithms and Hardware Designs
Oxford University Press
[7]
웹사이트
A New Design for 7:2 Compressors
http://www.dl.edi-in[...]
[8]
웹사이트
Performance Comparison Review of 8-3 compressor on FPGA
https://www.research[...]
[9]
기타
A Reconfigurable Digital Multiplier and 4:2 Compressor Cells Design
https://scholar.uwin[...]
2008
[10]
간행물
A Two's Complement Parallel Array Multiplication Algorithm
1973-12
[11]
웹사이트
Baugh–Wooley Multiplier
http://www.ece.uvic.[...]
University of Victoria, CENG 465 Lab 2
2003
[12]
간행물
A 70-MHz 8-bit×8-bit parallel pipelined multiplier in 2.5-μm CMOS
https://www.research[...]
1986
[13]
서적
Ultra-Low-Voltage Design of Energy-Efficient Digital Circuits
Springer
2015
본 사이트는 AI가 위키백과와 뉴스 기사,정부 간행물,학술 논문등을 바탕으로 정보를 가공하여 제공하는 백과사전형 서비스입니다.
모든 문서는 AI에 의해 자동 생성되며, CC BY-SA 4.0 라이선스에 따라 이용할 수 있습니다.
하지만, 위키백과나 뉴스 기사 자체에 오류, 부정확한 정보, 또는 가짜 뉴스가 포함될 수 있으며, AI는 이러한 내용을 완벽하게 걸러내지 못할 수 있습니다.
따라서 제공되는 정보에 일부 오류나 편향이 있을 수 있으므로, 중요한 정보는 반드시 다른 출처를 통해 교차 검증하시기 바랍니다.
문의하기 : help@durumis.com