어릴 때부터 컴퓨터를 접해왔고 한 평생 사용해왔지만 컴퓨터란 무엇인지 모르는 나를 위해
코드를 돌릴 줄은 알지만 코드가 어떤 방식으로 돌아가는 지 알지 못하는 나를 위해
이 책을 바칩니다.
혼자 공부하는 컴퓨터 구조 공부..
지금 시작합니다
서론
컴퓨터 구조란 무엇일까?
어디서 많이 들어본 말이지만 정확한 의미를 답하라고 하면 지금의 나는 되게 어물쩍거리면서 한두 마디 답을 할 수 있을 것 같다.
"컴퓨터를 이루는 것들에 대한 것입니다."
틀린 답은 아닐 것이다. 하지만 질문자의 의도와는 사뭇 다른 표현이라고 생각한다.
학부 시절 컴퓨터 구조를 배우기도 전에 파이썬 코딩을 배웠다. 물론 그 때는 코드만 돌아가게 만들면 되었으니까 코드를 해석하는데에 많이 집중했었다.
하지만, 이제 컴퓨터를 메인으로 다루는 일을 하며 기본적인 지식을 알지 못하고 코드만 치는 것은 의미가 없다는 생각이 들었다.
그리고 지금까지 내가 생각했던 것들이 이 책의 첫 장에 쓰여있었다.
코드만 돌릴 줄 알면 된다?
NO!
분명히 같은 코드로 실행하더라도 누군가는 돌아가지만 누군가는 오류를 맞닥뜨린다. 이 때 컴퓨터를 제대로 이해하지 못한다면 본질적인 문제를 해결할 수 없다.
글을 읽으며 내 해석대로 정리한 문장이지만, 이 문장은 내가 최근 느꼈던 감정과 매우 비슷하다.
Github에 있는 동일한 코드를 Clone해 오더라도 어떤 친구의 환경에서는 돌아가고, 또 다른 친구의 환경에서는 오류가 발생한다. 그 차이는 OS에서, 가상 환경에서, 패키지의 버전, 경로 설정 등 수많은 경우의 수에서 비롯된다.
결국 나는 근본적인 문제를 해결하지 못한다면 이를 풀 수 없는 것이다.
반대로 근본적인 문제를 풀 수 있는 능력을 갖췄다면, 어떠한 상황에서든 문제를 해결 할 수 있는 것이다.
문제를 해결할 수 있는 개발자가 되기 위해
한걸음 더 공부를 시작해보도록 하겠다.
컴퓨터 구조 시작하기
컴퓨터 구조 지식은 크게 2가지로 나눌 수 있다.
- 컴퓨터가 이해하는 정보
- 컴퓨터의 4가지 핵심 부품
우리는 어려서부터 컴퓨터는 0과 1로 이루어져있다는 말을 수도 없이 들어왔으며 그에 대한 내용이 첫번째 지식인 컴퓨터가 이해하는 정보이다. 이 정보도 크게 데이터와 명령어 2가지로 나눌 수 있다.
데이터 : 0과 1로 표현되는 숫자, 문자, 이미지, 동영상 등
명령어 : 데이터를 움직이고 컴퓨터를 작동시키는 정보
두번째 지식인 컴퓨터의 4가지 핵심 부품은 CPU, 메모리, 보조기억장치, 입출력장치이다.
메모리 : 현재 실행되는 프로그램의 명령어와 데이터를 저장
- 메모리 : 현재 실행되는 프로그램의 명령어와 데이터를 저장
- 메모리에 저장된 값의 위치를 알기 위해 주소 개념을 사용
- CPU : 메모리에 저장된 명령어를 읽어들인 후 실행하는 부품(산술논리연산장치(ALU), 레지스터, 제어장치)
- 산술논리연산장치(ALU) : 계산기의 역할
- 레지스터 : CPU 내부의 작은 임시 저장 장치로 프로그램을 실행하는 데 필요한 값들을 임시로 저장
- 제어장치 : 제어 신호라는 전기 신호를 내보내어 명령어를 해석(메모리 읽기, 메모리 쓰기)
예시 1
1. 메모리에 저장된 명령어를 읽기 위해 CPU 제어장치에서 메모리에 "메모리 읽기" 제어 신호를 보냄
2. 메모리는 해당 주소에 저장된 명령어를 CPU로 전달 -> CPU 레지스터에 저장됨
3. 이 때 제어 장치가 읽어들인 명령어를 해석하고, 만약 데이터가 더 필요할 경우 메모리에 추가적인 제어 신호를 보냄
4. ALU는 읽어들인 데이터를 활용해 연산을 수행 -> 계산 결과는 레지스터에 저장
5. 계산 결과를 저장하기 위해 제어장치에서 "메모리 쓰기" 제어 신호를 보냄
- 보조기억장치
- 메모리보다 크기가 크고 전원이 꺼져도 저장된 내용을 잃지 않음(SSD/HD/USB 등)
- 입출력장치(I/O)
- 컴퓨터 외부에 연결되어 컴퓨터 내부와 정보를 교환하는 장치
- 마이크, 스피커, 마우스, 키보드 등
메인보드
위에 설명한 컴퓨터의 핵심 부품들을 부착하여 연결하는 판(=마더보드)
메인보드에 연결된 부품들은 정보를 서로 주고 받을 수 있으며 메인보드 내부에 존재하는 버스라는 통로를 사용함. 이 때 4가지 컴퓨터의 핵심 부품을 연결하는 버스는 시스템 버스이다.
시스템 버스는 주소 버스, 데이터 버스, 제어 버스로 구성
- 주소 버스 : 주소를 주고받는 통로
- 데이터 버스 : 명령어와 데이터를 주고받는 통로
- 제어 버스 : 제어 신호를 주고받는 통로
예시 2
예시 1의 첫번째 과정에서 CPU가 메모리 속 명령어를 읽을 때 제어장치에서 "메모리 읽기" 신호를 보낸다고 했는데, 이를 자세히 살펴보면 신호는 제어 버스로, 주소는 찾고자 하는 주소 버스로 요청하고, 메모리는 해당 주소에 있는 내용을 데이터 버스를 이용해 CPU로 다시 보내준다.
출처
강민철, 『혼자 공부하는 컴퓨터 구조 + 운영체제』, 한빛미디어, 2022
'AI & CS 지식 > 컴퓨터구조' 카테고리의 다른 글
[혼공컴운] 4. CPU의 작동 원리 (0) | 2024.07.30 |
---|---|
[혼공컴운] 3. 명령어 (0) | 2024.07.21 |
[혼공컴운] 2. 데이터 (3) | 2024.07.14 |
댓글