1-1. 하드웨어의 구성
컴퓨터 하드웨어
- 프로세서, 메모리, 주변장치로 구성
- 서로 시스템 버스로 연결
프로세서
- 모든 장치의 동작을 제어, 명령 실행
- 연산장치, 제어장치, 레지스터로 구성
- 내부 버스로 연결
래지스터 이름 | 설명 |
Data Register | 함수 연산에 필요한 데이터 저장 |
Address Register | 주소나 주소 일부분 저장 |
Program Counter | 다음에 실행할 명령어의 주소 보관 |
Instruction Register | 현재 실행하는 명령어 보관 |
ACCumulator | 데이터 일시적으로 저장 |
Memory Address Register | 프로세서가 참조하려는 데이터의 주소 명시 -> 메모리에 접근하는 버퍼 레지스터 |
Memory Buffer Register | 프로세서가 메모리에서 읽거나 메모리에 저장할 데이터 자체를 보관 |
메모리
메모리 계층 구조는 레지스터, 캐시, 메인 메모리, 보조기억장치임.
- 레지스터
- 프로세서가 사용할 데이터를 보관하는 가장 빠른 메모리
- 메인 메모리
- 프로세서 외부에 있음. 프로세서가 즉각적으로 수행할 프로그램과 데이터 저장, 프로세서에서 처리한 결과 저장
- 보조기억장치는 실행 전 메인 메모리로 옮겨야 함
- 물리적 주소(컴퓨터에 주어진 주소), 논리적 주소(가상 주소)
- 논리적 주소를 물리적 주소로 변환하는 과정을 Mapping이라고 함
- 메모리의 속도는 메모리 접근 시간, 메모리 사이클 시간으로 표현
- 캐시
- 속도가 빠른 프로세서와 메인 메모리의 속도 차이를 보완하는 고속 버퍼
- 메인 메모리에서 데이터를 블록(워드의 묶음) 단위로 가져와, 워드 단위로 전달
- 프로세서가 참조하려는 데이터가 있으면 cache hit, 없으면 cache miss
- spatial locality: 대부분의 프로그램이 참조한 주소와 인접한 주소의 내용을 다시 참조하는 특성
- temporal locality: 한 번 참조한 주소를 곧 다시 참조하는 특성
- 보조기억장치
- 프로그램과 데이터를 저장
System Bus
하드웨어를 물리적으로 연결하여, 데이터를 주고받을 수 있게 하는 통로.
- 데이터 IO, 프로세서 상태, 인터럽트 요구와 허가, clock 신호 등을 전달
- 데이터 버스, 주소 버스, 제어 버스로 구분
종류 | 설명 |
데이터 버스 | 데이터 전송. 배선 수가 프로세서가 한 번에 전송할 수 있는 비트 수(워드)를 결정. |
주소 버스 | 시스템 구성 요소 식별하는 주소 정보. |
제어 버스 | 시스템 구성 요소 제어하는 용도. |
1-2. 시스템의 동작
입력 → 메모리에 저장 → 프로그램 제어에 따라 정보 인출 → 연산장치에서 처리 → 출력 / 보조기억장치에 저장
메인 메모리에 저장된 명령어는 프로세서에서 순차적으로 전송하여 처리.
명령어의 구조
명령어 = OPcode (연산부호) + 처리할 데이터 + Operand (피연산자: 데이터를 저장한 레지스터 or 메모리 주소)
direct address: 데이터가 있는 레지스터 or 메모리 주소 indirect address: 주소 정보 지정. 데이터를 읽을 때 메모리 2번 참조.
명령어의 실행
명령어 인출 → 명령어 해석, 프로그램 카운터 변경 → 피연산자 인출 → 명령어 실행 → 결과 저장
프로그램 카운터 변경: 다음 명령어를 지정하기 위함
Instruction cycle 추가 설명
- fetch cycle
- PC → MAR → MBR + change PC → IR
- execution cycle
- decode and execute
- indirect cycle
- IR → MAR → → MBR → IR
- interrupt cycle
인터럽트
- 입출력 장치나 프로그램에서 프로세서로 보내는 하드웨어 신호.
- 예로, 입력장치에서 polling방식을 사용하면 각 장치의 상태 비트를 계속 검사. interrupt를 사용하면 효율적임.
- 요청 후, interrupt service routine(처리) 진행