- 컴퓨터 시스템의 주요 구성요소
- 컴퓨터 하드웨어의 구성
CPU
중앙처리장치
연산을 담당
메인 메모리
램(RAM)이라는 저장장치로 구성되는 메인 메모리는 컴파일이 완료된 프로그램 코드가 올라가서 실행되는 영역
프로그램 실행을 위해 존재하는 메모리
입출력 버스(Input/Output Bus)
컴퓨터를 구성하는 구성요소 사이에서 데이터를 주고 받기 위해 사용되는 경로
- 어드레서 버스 : 메모리의 몇번지에 있는 데이터를 가져갈 것인지에 대한 주소 전송
- 데이터 버스 : 데이터 전송
- 컨트롤 버스 : CPU가 원하는 바를 메모리에 전달할 때 사용(메모리가 원하는 바를 CPU에 전송)된다.
- CPU의 구성요소
ALU(Arithmetic Logic Unit)
- 연산을 담당한다.
- ALU가 처리하는 기본적인 연산은 산술연산(ex 덧셈, 뺄셈), 논리연산(ex AND, OR)이 있다.
컨트롤 유닛(Control Unit)
CPU가 처리해야 할 명령어를 해석하고, 그 결과에 따라 적절한 신호를 CPU의 다른 블록에 보내는 일을 한다.
CPU 내부에 존재하는 레지스터들(Register Set)
- 임시적으로 데이터를 저장하기 위한 조그마한 메모리 공간
- CPU 내부에 존재하는 2진 데이터 저장을 위한 저장장치
- CPU 내부에 여러 개가 존재하는데 CPU의 종류에 따라 그 개수와 형태가 다양
- 각각의 용도가 정해져 있는 것이 일반적이고, CPU가 연산을 하기 위해 반드시 필요
버스 인터페이스(Bus Interface)
- 버스가 어떻게 데이터를 전송하는지, 그에 대한 프로토콜 혹은 통신방식을 알고 있는 것
- CPU는 버스 인터페이스를 통해 CPU 내부에 저장되어 있는 데이터를 I/O 버스에 실어보내기도 하고, I/O 버스를 통해 전송되어 오는 데이터들을 수신하기도 한다.
클럭 신호(Clock Pulse)
- 클럭발생기에 의해 발생되는 클럭 신호는 CPU를 구성하는 요소 요소에 제공되며, 이 신호에 맞춰서 CPU가 일을 한다.
- CPU의 클럭 속도가 높으면 초당 처리하는 명령어의 개수가 많아지므로 컴퓨터의 전체적인 성능이 좋아진다.
- 클럭신호에 맞춰 일해야하는 이유는 동기화를 위해서이다.
+ 연산장치가 연산하는 속도와 출력장치가 데이터를 가져가는 속도가 일치하지 않으면 문제가 되는데 해결하는 방법은 속도가 느린 장치의 장단에 맞추는 것이다.
- 프로그램 실행과정
단계 1 : '#' 으로 시작하는 지시자의 지시에 따라 소스코드를 적절히 변경
단계 2 : 소스코드는 컴파일러에 의해 어셈블리 코드로 번역
단계 3 : 어셈블리 코드를 바이너리 코드로 번역
단계 4: 프로그램 내에서 참조하는 함수나 라이브러리들을 하나로 묶는 작업을 수행
단계 1. Fetch : 메모리상에 존재하는 명령어를 CPU로 가져오는 작업
단계 2. Decode : 가져다 놓은 명령어를 CPU가 해석(컨트롤 유닛)
단계 3. Execution : 해석된 명령어의 명령대로 CPU가 실행