컴퓨터의 구성
CPU, MEMORY, I/O Device 로 이루어져 있으며 시스템 버스 를 통해 데이터를 주고 받음
CPU 구성
- 제어장치
- 프로그램 명령어를 해석하고, 해석된 명령의 의미에 따라 연산 장치, 메모리, 입출력 장치 등에게 동작 지시
- 연산 장치
- 덧셈, 뺄셈 등 연산을 하는 장치로 제어 장치의 지시에 따라 연산을 수행
- 레지스터
- 메인 메모리로부터 읽어온 명령어나 데이터를 저장하거나 연산된 결과를 저장하는 공간
- 주요 레지스터 종류
- 어드레스 레지스터 - 메모리로부터 데이터를 읽거나 메모리의 데이터를 쓸 메모리 주소를 저장
- 프로그램 카운터 - 다음에 실행될 명령어가 저장된 메모리 주소를 저장
- 데이터 레지스터 - 메모리에서 읽어온 데이터를 저장
- 명령어 레지스터 - 메모리에서 읽어온 명령어를 저장
- 어큐뮬레이터 - 연산에 사용되는 데이터를 저장
MEMORY 구성
- 메모리의 계층 구조
- CPU 레지스터 -> 캐시 메모리 -> 메인 메모리 -> 하드디스크
- 하드디스크 - 프로그램과 데이터를 영구히 저장하는 장치, CPU의 필요에 따라 저장되어 있는 프로그램과 데이터는 메인메모리로 전송
- DRAM - 데이터를 일시적으로 저장하는 장치로, 전원을 끄면 모두 지워지는 휘발성 메모리
- 캐쉬 메모리 - 매우빠른 속도의 캐시 메모리를 두어 현재 CPU가 자주 사용하는 프로그램 일부와 데이터 일부를 저장하여 동작하면서 처리 속도의 향상을 가져오게 됨. SRAM으로 구현
- 메인 메모리
- 현재 실행중인 프로그램과 프로그램에 필요한 데이터를 일시적으로 저장하는 장치
- byte 또는 word 단위로 분할해 어드레스를 할당
- 주요 기능은 데이터를 저장하는 “쓰기”와 데이터를 읽는 “읽기"
- 데이터 입력선 - 데이터의 크기가 1바이트이므로, 1비트 정보가 전송되는 입력선 8개 필요
- 어드레스선 - 0번지부터 1023번지의 1024개의 어드레스를 가지므로 어드레스를 나타내기 위해 10개의 어드레스선 필요
- 캐시 메모리
- 캐시 메모리는 데이터 지역성(Locality)의 원리 를 사용한다. 데이터 지역성은 대표적으로 시간 지역성(Temporal locality)과 공간 지역성(Spatial Locality)으로 나뉘는데, 시간 지역성이란 for나 while 같은 반복문에 사용하는 조건 변수처럼 한번 참조된 데이터는 잠시 후에 또 참조될 가능성이 높다는 것이고, 공간 지역성이란 A[0], A[1]과 같은 데이터 배열에 연속으로 접근할 때 참조된 데이터 근처에 있는 데이터가 잠시 후에 사용될 가능성이 높다는 것이다.
- SRAM으로 구성되어, DRAM으로 구현된 메인 메모리에 비해 속도가 5~10배 정도 빠름
- 캐시 메모리 동작 방법
- CPU가 101번지의 데이타가 필요하면, 메인 메모리로 부터 101번지 워드를 포함하고 있는 블록을 캐시 메모리로 전송 --> 캐시 메모리로부터 101번지의 word를 CPU로 전송
- CPU가 필요로하는 워드가 순차적이지 않고, 비 순차적이면 캐시 메모리를 사용할 경우에 실행시간이 더 길어짐 --> 대부분의 프로그램은 국한된 메모리 영역의 워드를 자주 참조하는 참조의 국한성이라는 성질을 갖고 있기 때문에 캐시 메모리를 사용함으로써 얻어지는 효과가 큼
- 쓰기 정책
- 캐시 메모리에 저장된 데이터가 수정되었을 때 메인 메모리에 이 수정된 내용을 언제 반영하는지를 결정하는 정책
- 나중 쓰기
- 캐시 메모리에서 제거될 때 수정된 내용을 메인 메모리에 반영하는 방식
- 즉시 쓰기
- 캐시 메모리의 데이터를 수정할 때 동시에 메인 메모리의 데이터도 수정하는 방식
파이프라이닝
- 명령어를 실행하는 과정을 여러 단계로 나누어 여러 명령어를 동시에 실행함으로써 CPU 속도를 빠르게하는 기술