본문 바로가기
IT

[컴퓨터 구조] cpu 작동 원리 (기본편)

by 내일은교양왕 2023. 10. 26.

요약

0과 1를 다루는 2진법으로 덧셈으로만 연산

0과 1은 스위치 on/off를 말하며, 스위치를 병렬로 두어 조금 더 큰 수를 연산

32bit cpu라면은 전구를 32개 병렬로 두어 연산한다는 의미이고 2^32 이므로 최대 4,294,967,296 숫자만큼 한번에 처리가 가능하다. 

 

2진수를 어떻게 더하나?

논리회로의 조합

기본적인 논리회로(NOT, AND, OR, XOR)를 조합하여, 반가산기와 전가산기를 이용해서 더한다.

출처: https://m.blog.naver.com/daewiko/221777473666

전가산기

1bit 단위로 계산한다. 

A,B는 input이고 S는 결과, C는 올림 수 이다.

덧셈으로만 가능한 이유

사칙연산은 더하기, 빼기, 곱하기, 나누기로 이루어 진다.

곱하기

곱하기는 n번 더하면 되기에 이해하기 쉽다. 

ex) 3 * 5 = 3 + 3  + 3  + 3  + 3

 

빼기

빼기는 2의 보수(Complement)를 취하고 더하면 된다.

 - 2의 보수: 1의 보수 + 1

 - 1의 보수는 flip (0 → 1, 1 → 0)

 

ex) 5 - 3 = 2

5 === 0101

3 === 0011

3의 2의 보수 ===  1101

0101 + 1101 = 10010 → 자리 넘어가는건 버리고 0010이니 2가 됨

 

나누기

나누기는 피제소룰 제소로 여러 번 빼면 된다.

(몫이 0이거나 나누는 대상보다 작을 때 까지 N번 빼면 된다. N이 몫)

0으로 나누면 무한루프가 걸리기에 아마 0으로 애초에 나눌 순 없게 설계되어 있을 듯

 

 

2를 곱하거나 나눌 때

2진수 값을 왼쪽 또는 오른쪽으로 그대로 shift하면 된다.

padding이 존재 시 삭제 한다.

 

ex) 5 * 2 = 10

0101 → 1010 → 10

 

6 / 3 = 3

0110 → 0011 → 3

 

 

 

'IT' 카테고리의 다른 글

[컴퓨터 구조] CPU > Program Counter  (1) 2023.10.28
[운영체제] 인터럽트  (0) 2023.10.28
web > popstate  (0) 2023.09.25
[nextjs] router.beforePopState  (0) 2023.09.25
CSS > inline, block, inline-block  (0) 2023.08.28