- 세상의 모든 계산기 계산기 뉴스/정보
전자 계산기의 원리, 구조
"계산기에 대해 다루는 사이트이니, 계산기에 대한 원리를 알아보는 글은 있어야겠구나".... 싶었습니다. 그래서 잘 모르는 내용임에도 불구하고, 이것저것 찾아서 글을 작성합니다. 틀린 내용이 있다면 지적하여 주시면 감사하겠습니다.
1. 전자 계산기란?
전자 계산기란, '펌웨어'나 '연산 알고리즘' 을 이용하여 수학적 계산을 빠르고(!) 정확하게(?) 수행하도록 만든 장치"를 이르는 말입니다.
일반 계산기나 보급형 공학용 계산기에는 운영 체제랄 것이 없으며, 간단한 펌웨어가 하드웨어와 직접적으로 작동해 연산을 처리하지만,
고급형 전자 계산기는 작은 컴퓨터로 보셔도 될 정도로 복잡한 장치가 결합되어 있습니다.
* 정확하게에 물음표가 붙은 이유는, 어떠한 경우에는 정확한 답을 찾기보다는 과정과 결과에서 근사값을 이용하는 경우가 많기 때문입니다.
2. 계산기의 역사
전기/전자 이용 전 |
손가락 내지 돌맹이? 나뭇가지? 주판 톱니바퀴 계산기 (by 블래즈 파스칼) 차차식 계산기 (by 고트프리트 라이프니츠) 차분기관 (by 찰스 배비지) |
전기/전자 이용 후 |
ABC (최초의 진공관 계산기) EDSAC (최초의 실용적! 프로그램 내장형 전자 계산기) TX-O (최초의 트랜지스터 계산기) 집적회로(IC)를 이용한 현재의 컴퓨터 |
주판은 사람의 동작에 의존하기 때문에 속도의 한계가 있을 수밖에 없고, 오류발생 확률도 높습니다. 그리고 사칙연산 이외의 다른 계산이 어렵죠. 그러한 한계들을 극복하기 위해 기계 장치들이 개발되었고, 기계 장치들의 한계를 극복하고자 전자 장치를 이용한 계산기까지 발전을 하게 된 것입니다.
3. 원리
주판이나, 전자 계산기나 개발 목적이 같기 때문에, 도구를 사용하여 수학적인 연산을 수행하고 저장하고 표시한다는 본질에 있어서는 공통적입니다.
차이가 있다면 아래와 같습니다.
주판 | 전자 계산기 | |
진법 | 10진법 | 2진법 |
명령주체 | 사람의 뇌 | 내장 프로그램 |
동작주체 | 사람의 손가락 | 전자 부품 |
전자부품은 2진법 계산에 적합합니다. 이는 0과 1의 두 가지 상태를 전자의 흐름으로 쉽게 구현할 수 있기 때문입니다.
따라서 전자계산기의 계산 원리를 이해하려면 2진법을 먼저 이해해야 하고, 전자부품에서 2진법이 어떻게 구현되는지를 이해해야 합니다.
4. 논리회로 Arithmetic Logic Unit
계산기에서는 위에서 살펴본 바와 같이 2진법으로 모든 계산을 수행합니다.
계산을 수행하는 가장 작은 단위는 논리 회로이고, 논리 회로는 논리 게이트로 구성됩니다.
ㄴ 논리 게이트는 불 대수를 계산할 수 있는 전자 소자입니다.
따라서 전자계산기의 작동방식을 이해한다는 것은, 논리회로를 이해한다는 것과 동일한 의미를 같습니다.
가장 기본적인 논리 회로는 가산기(adder)로, 덧셈을 포함해 다양한 논리 연산과 곱셈, 나눗셈도 처리하는 Arithmetic Logic Unit(ALU)의 일부입니다.
아래와 같은 구조를 갖습니다.
ㄴ 전가산기 회로도
전자계산기는 위와 같은 논리 회로들을 이용하여, 입력된 숫자들을 (2진법) '가(+)/감(-)/승(×)/제(÷)' 하고 수학적 결과를 얻는 장치라고 말할 수 있습니다.
* 자세한 내용은 웹에서 "논리회로"로 검색해서 찾아보세요. 내용이 방대합니다.
ALU(Arithmetic Logic Unit)는 기본적인 산술 연산과 논리 연산을 처리하는 CPU의 핵심 구성 요소 중 하나로, 다양한 논리 회로들로 구성되어 있습니다.
ALU가 처리하는 작업의 종류에 따라 여러 종류의 회로가 결합되어 있습니다.
ALU의 주요 구성 요소:
1. 가산기(Adder) :
- 덧셈을 수행하는 회로로, ALU의 기본적인 구성 요소입니다. 뺄셈은 2의 보수를 이용해 가산기로 처리할 수 있습니다.
2. 뺄셈기(Subtractor):
- 직접적으로 뺄셈을 수행하는 회로로, 보수법을 사용해 가산기와 함께 뺄셈을 처리할 수 있습니다. 실제로는 가산기를 활용하여 처리되는 경우가 많습니다.
3. 논리 연산기(Logical Unit):
- 논리 연산을 처리하는 회로로, 기본적으로 AND, OR, NOT, XOR 같은 논리 연산을 수행합니다.
- 이 연산기들은 논리 게이트로 구성되어 있습니다.
4. 시프트 레지스터(Shift Register):
- 데이터를 왼쪽이나 오른쪽으로 시프트(이동)하는 회로로, 곱셈과 나눗셈을 효율적으로 처리하는 데 사용됩니다.
- 좌측 시프트는 2의 배수를 곱하는 효과를 내며, 우측 시프트는 나눗셈과 같은 효과를 냅니다.
5. 곱셈기(Multiplier):
- 곱셈을 처리하는 회로로, 덧셈과 시프트 연산을 반복해 곱셈을 처리하는 방식으로 동작합니다. 일부 복잡한 ALU에는 빠른 곱셈을 처리하기 위한 별도의 곱셈기가 포함될 수 있습니다.
6. 나눗셈기(Divider):
- 나눗셈을 처리하는 회로입니다. 나눗셈도 뺄셈과 시프트 연산을 통해 처리되며, 일부 고성능 ALU에는 나눗셈을 처리하기 위한 별도의 하드웨어 회로가 포함될 수 있습니다.
7. 상태 레지스터(Flags/Condition Codes):
- 연산의 결과에 따라 조건 플래그를 설정하는 레지스터입니다. 예를 들어, 연산의 결과가 0인지, 음수인지, 오버플로우가 발생했는지 등을 기록합니다.
- 상태 레지스터는 연산의 결과에 따라 CPU가 후속 동작을 결정할 때 활용됩니다.
ALU의 기능:
- 산술 연산: 덧셈, 뺄셈, 곱셈, 나눗셈
- 논리 연산: AND, OR, NOT, XOR 등의 비트 단위 연산
- 시프트 연산: 좌우 시프트 연산으로 곱셈/나눗셈 효과를 내는 연산
- 비교 연산: 두 값의 크기를 비교해 상태 플래그를 설정하는 연산
이렇게 ALU는 다양한 논리 회로들이 결합되어 수학적 연산과 논리 연산을 수행하며, 중앙처리장치(CPU)의 필수적인 역할을 담당합니다.
5. 실제 모습
일반 계산기를 분해해 보면 https://allcalc.org/16563
회로에 그려진 선하고 배터리 빼면 별다른게 없어 보입니다만, 저기 가운데 검은 껌딱지같은 것 안에 집적 회로(IC)가 숨어 있습니다.
집적 회로(IC) 안에는 수많은 트랜지스터, 저항, 다이오드 같은 전자 소자가 포함되어 있으며, 이 소자들이 논리 연산을 처리하는 역할을 합니다.
매우 작고 정밀한 부품인데, 노출되어 있으면 손상 위험이 크기 때문에
COB(Chip on Board) 방식으로, 회로 기판에 직접 칩을 부착한 후, 그 위에 검정색 에폭시 수지를(주로 레진) 덮어 칩을 보호합니다.
레진을 뜯어내면 이런 식으로 내부에 IC가 숨어 있습니다. (라디오 시계)
https://www.kaibader.de/exposing-a-chip-on-board/
6. 자료 출처
http://ko.wikipedia.org/wiki/%EA%B3%84%EC%82%B0%EA%B8%B0
https://ko.wikipedia.org/wiki/%EB%85%BC%EB%A6%AC_%ED%9A%8C%EB%A1%9C
https://ko.wikipedia.org/wiki/%EB%B6%88_%EB%8C%80%EC%88%98
https://ko.wikipedia.org/wiki/%EA%B0%80%EC%82%B0%EA%B8%B0
댓글 5
-
-
ㄴ 조지 불 탄생 200주년 Google 대문화면
-
-
-
ALU(Arithmetic Logic Unit)는 곱셈을 수행할 때, 모두 덧셈으로 계산하나?
3*3 같은 것은 3+3+3 으로 계산해도 문제가 없지만, 숫자가 커지면 이런 방식은 너무 비효율적입니다.
대신, ALU는 곱셈을 위한 효율적인 알고리즘을 사용하여 빠르게 계산합니다.
곱셈의 기본 원리:
ALU는 보통 이진수 곱셈(Binary Multiplication) 알고리즘을 사용하여 곱셈을 처리합니다.
이 알고리즘은 우리가 배운 문자식 곱셈과 비슷한 방식으로 작동합니다.
즉, 각 비트를 곱하고, 그 결과를 더하는 방식입니다. 이 과정은 일종의 시프트(Shift) 연산과 덧셈을 결합한 것입니다.
1234 * 1234의 계산 과정(이진수):
1. 이진수로 변환: 먼저 1234를 이진수로 변환합니다. 1234(10진수)는, 이진수로는 `10011010010`입니다.
2. 비트별 곱셈: 두 이진수`10011010010`와 `10011010010`를 곱할 때, 각 비트를 비교해 곱(AND)하고 결과를 적절히 시프트(Shift)하여 더합니다.
3. 덧셈과 시프트: 각 비트 곱셈 결과는 자리값에 맞게 왼쪽으로 시프트한 후, 그 결과를 모두 덧셈하여 최종 값을 구합니다.
이 과정에서 곱셈은 덧셈과 시프트 연산을 기반으로 하지만, 이를 1234번 더하는 것이 아니라 효율적인 비트 연산을 통해 빠르게 수행됩니다.
하드웨어적으로는?
- 곱셈기(Multiplier): ALU에는 곱셈을 빠르게 수행하는 하드웨어 곱셈기가 내장되어 있습니다. 이 곱셈기는 병렬 처리와 시프트 연산을 활용하여 곱셈을 매우 빠르게 수행합니다.
- 곱셈기는 단순히 덧셈을 반복하지 않고, 곱셈 알고리즘을 기반으로 하드웨어 수준에서 최적화된 연산을 수행합니다.
결론:
ALU는 1234를 1234번 더하는 방식으로 곱셈을 처리하지 않으며, 대신 시프트와 덧셈을 결합한 효율적인 이진 곱셈 알고리즘을 사용해 빠르게 계산합니다.
-
-
-
계산기가 빠른 이유
숫자 계산은 순차적인 논리적 과정입니다.
2진수 각 비트를 처리(계산)하는 것은 논리 1회에 해당하며 1 클럭이 들어간다고 볼 수 있습니다.
예를 들어, 1234 × 1234의 경우:
- 논리곱: 11 클럭 사이클
- 시프트: 11 클럭 사이클
- 덧셈: 10 클럭 사이클이러한 계산을 모두 합치면 총 32 클럭 사이클이 필요합니다.
또한, 1234 + 345 - 432 ÷ 456 × 345 - √24 - 3의 경우:
- 나눗셈: 10 클럭 사이클
- 곱셈: 5 클럭 사이클
- 제곱근: 10 클럭 사이클
- 덧셈 및 뺄셈: 1 + 1 + 2 = 4 클럭 사이클따라서 이 계산에는 총 29 클럭 사이클이 소요됩니다.
일반 계산기는 제품마다 성능이 다르겠지만, 최~소 1KHz 정도는 되는 것 같습니다.
이는 대략 1초에 1,000 클럭을 처리할 수 있다는 뜻입니다.
* "1MHz 에 못미치는 수준이다"는 주장도 있는데, 거기까지는 안갈 것 같습니다. 배터리 문제 때문에요. 좀 더 찾아봐야 할 듯.
30 클럭 사이클이면 대략 0.03초 (30 mS) 가 필요합니다.
이러한 이유로 계산기가 빠른 속도로 연산을 수행할 수 있다는 점을 이해할 수 있습니다.
* 눈으로 본 정보가 뇌에 도착하는데 수십 밀리초 가 필요하다고 하죠?
눈으로 보는 순간 계산은 끝나있다고 봐도 무방하겠습니다.
-
-
-
고급 공학용 계산기는 클럭이 중요해서 스펙에 클럭이 나오는 경우가 많습니다만,
- HP 50g = 75MHz ARM9
- TI 89Titanium = 12MHz MC68000
- CASIOf fx-9860 (?) = 13.5MHz
- CASIO Prizm = 29.5MHz (For Apps 58MHz)
일반 계산기는 그렇지가 않아서 클럭 조사가 쉽지 않네요.오실로스코프같은걸로 찍어보면 나오나?
-
-
-
https://www.emc.com.tw/emc/en/Product/Product/Microcontrollers/Calculator
에서 Calculator ASIC 항목을 보면 품목이 두개 있는데
[8 Digits] EMPCD081A
https://www.emc.com.tw/emc/en/Product/Product/detail/75
https://www.emc.com.tw/upload/2019_01_14(0_0)b2/EMPCD081A.pdf
평균 200kHz (Min120 ~ Max280)
[10, 12 Digits] EM34014A
https://www.emc.com.tw/emc/en/Product/Product/detail/74
https://www.emc.com.tw/upload/2019_01_14(0_0)b2/EM34014A.pdf
평균 200kHz (Min120 ~ Max280)
-