컴퓨터 내부 구조 : 메모리, I/O, CPU

EOH·2023년 5월 19일
0

<CS> Hello, Computer World!

목록 보기
12/12
post-thumbnail

🦈 컴퓨터 내부 구조

이때까지 비트와 비트를 조작하는 전자 부품들을 배웠다. 전자회로를 다양하게 조합해 만든 비트를 조작하는 회로를 컴퓨터라고 한다. 컴퓨터 하드웨어의 내부고조는 크게 1️⃣ 메모리(memory : 기억장치) 2️⃣ 입력과 출력(I/O : Input and Output) 3️⃣ CPU(central processing unit: 중앙처리장치) 세 가지 부분으로 나눌 수 있다. 먼저 메모리에 대해 알아보도록하자.

🐟 메모리(Memory)

1️⃣ 메모리

앞 장에서 배운대로 메모리는 비트를 저장하는 기억장치이다. 메모리는 중앙처리장치인 cpu로 가는 메모리길과 데이터를 저장하는 집들로 이루어져있다. 이 집들에는 각각 데이터 주소가 부여되고 비트가 저장된 위치를 주소로 알 수 있다.
32비트 컴퓨터는 4바이트씩, 64비트 컴퓨터는 8바이트씩 묶어서 저장한다. 미리 데이터주소를 묶어 놓기 때문에 미리 끊어놓은 정렬대로 접근해야하며 한 번에 두 묶음에 걸쳐있는 데이터를 읽는 경우 정렬이 맞지 않는 접근(nonaligned access)라고 부른다.
메모리는 종류에 따라 가격과 성능이 다른데 보통 데이터에 접근하는 속도의 차이가 크다.
아래그림을 보면 메모리를 시각적으로 이해할 수 있을 것이다.

2️⃣ 메모리주소를 읽는 방식

한 워드 안의 메모리 주소를 읽을 때 읽는 순서에 따라 리틀 엔디안, 빅 엔디안 방식이라고 부른다.
리틀 엔디안 방식은 큰 수가 왼쪽에 와서 바이트3-바이트2-바이트1-바이트0 순서로 정렬이 되고
빅 엔디안 방식은 작은 수가 왼쪽에 와서 바이트1-바이트2-바이트3-바이트4 의 순서로 정렬이 된다.

🐠 입력과 출력(I/O : Input/Output)

입력과 출력은 외부 세계와 통신하는 방법이다. 컴퓨터에 연결되 입력과 출력을 해주는 장치를 I/O장치, 주변장치(peripheral(퍼리퍼럴))이라고 부른다. 처음에는 중앙처리장치와 I/O를 연결해주는 경로가 따로 있었는데 메모리의 용량이 넉넉해진 지금은 메모리와 I/O를 같은 길로 연결한다. 그리고 컴퓨터의 설계상 표준 입력/출력 슬롯을 나눠놓기도 한다.

🐡 중앙처리장치(CPU, Central Processing Unit)

실제 계산을 처리하는 컴퓨터 부품이다. 모든 컴퓨터의 동작은 cpu를 거쳐서 실행된다고 볼 수 있다.
산술논리장치 (ALU, arithmetic logic unit)은 cpu의 핵심 부품이다. ALU는 이름대로 산술 계산, 불리언 대수 및 기타 연산을 수행한다.
ALU를 간단하게 표현하면 이런식으로 구성되어 있다.

피연산자 A와 B가 들어오면 연산코드를 적용해 결과를 나타내고 결과에 대한 추가 정보인 조건 코드(condition code)를 함께 내보내다. 이 조건 코드에는 음수인지, 0인지, 오버플로나 언더플로인지 표시하는 비트가 각각 있다.

이렇게 컴퓨터의 핵심구조에 대해서는 다 알아봤는데 연산을 하고 실행을 어떻게 하는지는 아직 의문으로 남아있을 것이다. 실행은 실행장치에서 담당한다.

🐬 실행장치(Execution unit)

1️⃣ 실행장치의 역할

실행장치는 제어 장치(control unit)라고도 알려져 있으며 실행장치가 없다면 ALU가 단독적으로 유용하게 쓰이기는 어렵다.
실행장치는 메모리에서 피연산자와 어떤 연산을 수행할지 ALU에게 알려주고, ALU가 결과값을 내면 그 결과를 메모리에 돌려주는 역할을 한다.

실행장치가 이런 역할을 할 수 있는 것은 컴퓨터를 만들 때 '주소 1에 있는 수와 주소 3에 있는 수를 더해서 주소 5에 저장해라'같은 내용의 명령어 목록을 미리 메모리에 저장해둔다. 이런 방식의 컴퓨터를 프로그램 저장 방식 컴퓨터라고 부른다.
다시 말해 명령어(instruction)는 컴퓨터에게 어떤 일을 해야하는지 알려주는 비트패턴이며 공통 표준이 없어 CPU마다 고유한 설계를 가진다.

2️⃣ 실행장치가 명령어의 위치를 알아내는 방법

실행장치가 명령어를 ALU에 전달해주는 것 까지는 알아냈다. 그럼 실행장치는 명령어의 위치를 어떻게 찾는 것일까? 명령어의 위치를 알아내기 위해 프로그램 카운터(Program Counter) 를 이용한다.
프로그램 카운터는 명령어의 메모리 주소를 담고있다. 실행장치는 프로그램 카운터가 가지고 있는 주소를 참조하여 카운터가 가리키는 주소에서 명령어를 읽어온다. 명령어를 실행한 후 프로그램 카운터는 값이 증가되면서 다음 위치에서 다음 명령어를 가져오게 된다.

profile
에-오

0개의 댓글