1. 컴퓨터의 구성
(1) 하드웨어
하드웨어는 중앙처리장치(CPU), 기억장치(RAM, HDD), 입출력 장치(마우스, 프린터)로 구성되어있다. 이들은 시스템 버스로 연결되어 있다.
중앙처리장치(CPU)는 주기억장치에서 프로그램 명령어와 데이터를 읽어와 처리하고 명령어의 수행 순서를 제어한다. 중앙처리장치는 산술논리장치, 제어장치, 레지스터로 구성되어있다.
- 산술논리장치(ALU): 비교와 연산을 담당한다.
- 제어장치: 명령어의 해석과 실행을 담당한다.
- 레지스터: 속도가 빠른 데이터 기억장소이다.
기억장치는 프로그램, 데이터, 연산의 중간 결과를 저장하는 장치이다. 주기억장치와 보조기억 장치로 나뉘어져 있다.
입출력장치는 입력장치(키보드, 마우스 등)와 출력장치(프린터, 모니터, 스피커 등)이 있다.
시스템 버스
시스템 버스는 하드웨어 구성 요소를 물리적으로 연결하는 선이다. 각 구성요소가 다른 구성요소로 데이터를 보낼 수 있도록 통로가 되어준다. 용도에 따라서 데이터버스, 주소버스, 제어버스로 나누어져있다.
- 데이터버스
- 중앙처리장치와 기타 장치 사이에서 데이터를 전달하는 통로이다.
- 기억장치와 입출력장치의 명령어와 데이터를 중앙처리장치로 보내거나, 중앙처리장치의 연산결과를 기억장치와 입출력장치로 보내는 양방향 버스이다.
- 주소버스
- 데이터를 정확히 실어나르기 위해서는 기억장치 '주소'를 정해주어야한다. 주소버스는 중앙처리장치가 주기억장치나 입출력장치로 기억장치 주소를 전달하는 통로이기 때문에 단방향 버스이다.
- 제어버스
- 주소버스와 데이터버스는 모든 장치에 공유되기 때문에 이를 제어할 수단이 필요하다. 제어버스는 중앙처리장치가 기억장치나 입출력장치에 제어 신호를 전달하는 통로이다.
- 제어버스는 읽기 동작과 쓰기 동작을 모두 수행하기 때문에 양방향 버스이다.
- 제어 신호의 종류: 기억장치 읽기 및 쓰기, 버스 요청 및 승인, 인터럽트 요청 및 승인, 클락, 리셋 등
데이터 버스 | 주소 버스 | 제어버스 | |
경로 | 중앙처리장치 <-> 장치 | 중앙처리장치 -> 주기억장치/입출력장치 | 중앙처리장치 <-> 기억장치/입출력장치 |
방향 | 양방향 | 단방향 | 양방향 |
전달 | 데이터 | 주소 | 제어신호 |
2. 중앙처리장치(CPU) 작동원리
중앙처리장치(CPU)는 크게 연산장치, 제어장치, 레지스터 3가지로 구성된다.
- 연산장치
- 산술연산과 논리연산을 수행한다. 따라서 산술논리연산장치라고도 불린다.
- 연산에 필요한 데이터를 레지스터에서 가져오고, 연산 결과를 다시 레지스터로 보낸다.
- 제어장치
- 명령어를 순서대로 실행할 수 있도록 제어하는 장치이다.
- 주기억장치에서 프로그램 명령어를 꺼내 해독하고, 그 결과에 따라 명령어 실행에 필요한 제어 신호를 기억장치, 연산장치, 입출력장치로 보낸다. 또한 이들 장치가 보낸 신호를 받아 다음에 수행할 동작을 결정한다.
- 레지스터
- 고속기억장치로 명령어 주소, 코드, 연산에 필요한 데이터, 연산 결과 등을 임시로 저장한다.
- 중앙처리장치의 종류에 따라 사용할 수 있는 개수와 크기가 다르다.
- 범용 레지스터: 연산에 필요한 데이터나 연산 결과를 임시로 저장한다.
- 특수 목적 레지스터: 특별한 용도로 사용하는 레지스터이다.
- 메모리 주소 레지스터(MAR, Memory Address Register): 읽기와 쓰기 연산을 수행할 주기억장치의 주소를 저장한다.
- 메모리 퍼버 레지스터(MBR, Mermory Buffer Register): 주기억장치에서 읽어온 데이터 혹은 저장할 데이터를 임시 저장한다.
- 프로그램 카운터(PC, Program Counter): 다음에 수행할 명령어의 주소를 저장한다.
- 명령어 레지스터(IR, Instruction Register): 현재 실행 중인 명령어를 저장한다.
- 누산기(AC, Accumulator): 연산 결과를 임시 저장한다.
CPU의 동작과정은 다음과 같다.
- 주기억장치는 입력장치에서 입력받은 데이터 또는 보조기억장치에 저장된 프로그램을 읽어온다.
- CPU는 프로그램을 실행하기 위해 주기억장치에 저장된 프로그램 명령어와 데이터를 읽어와 처리하고 결과를 다시 주기억장치에 저장한다.
- 주기억장치는 처리 결과를 보조기억장치에 저장하거나 출력장치로 보낸다.
- 제어장치는 1~3 과정에서 명령어가 순서대로 실행되도록 각 장치를 제어한다.
명령어 세트는 CPU가 실행할 명령어의 집합이다. 명령어세트는 연산코드와 피연산자로 이루어져있다.
- 연산코드: 실행할 연산을 의미하며 연산, 제어, 데이터 전달, 입출력 기능을 가진다
- 피연산자: 연산에 필요한 데이터나 저장위치를 의미하며 주소, 숫자/문자, 논리 데이터 등을 저장한다.
명령어 사이클은 CPU가 주기억장치에서 한번에 하나의 명령어를 인출하여 실행하는데 필요한 일련의 활동을 의미하며 인출, 실행, 간접, 인터럽트 사이클로 나누어진다. 주기억장치의 지정된 주소에서 하나의 명령어를 가져오고, 실행 사이클에서는 명령어를 실행한다. 하나의 명령어 실행이 완료되면 그 다음 명령어에 대한 인출 사이클이 시작한다.
- 인출 사이클과 실행 사이클에 의한 명령어 처리과정
- PC에 저장된 주소를 MAR로 전달한다.
- 저장된 내용을 토대로 주기억장치의 해당 주소에서 명령어를 인출한다.
- 인출한 명령어를 MBR에 저장한다.
- 다음 명령어를 인출하기 위해 PC값을 증가시킨다.
- MBR에 저장된 내용을 IR에 전달한다.
T0 : MAR <- PC
T1 : MBR <- M[MAR], P <- PC+1
T2 : IR <- MBR
- 인출한 이후, 명령어를 실행하는 과정
- 이미 인출이 진행되고 명령어만 실행하면 되기 떄문에 PC를 증가할 필요가 없다.
- IR에 MBR의 값이 이미 저장된 상태를 의미한다.
- 따라서 AC에 MBR을 더해주기만 하면 된다.
T0 : MAR ← IR(Addr)
T1 : MBR ← M[MAR]
T2 : AC ← AC + MBR
3. 캐시 메모리(Cache Memory)
속도가 빠른 장치와 느린 창지에서 속도 차이에 따른 병목 현상을 줄이기 위한 메모리를 말한다. CPU가 주기억장치에서 저장된 데이터를 읽어올 때, 자주 사용하는 데이터를 캐시 메모리에 저장한 뒤, 다음에 이용할 때 주기억장치가 아닌 캐시 메모리에서 먼저 가져오면서 속도를 향상시킨다. CPU에는 이런 캐시메모리가 2~3개정도 사용된다. 이 캐시메모리는 L1, L2, L3으로 부른다.
- 듀얼 코어 프로세서에서의 캐시 메모리
- 각 코어마다 독립된 L1 캐시 메모리를 가지고, 두 코어가 공유하는 L2 캐시 메모리가 내장되어있다.
- L1: CPU 내부에 존재
- L2: CPU와 RAM 사이에 존재
- L3: 메인보드에 존재
- 디스크 캐시: 주기억장치(RAM)와 보조기억장치(하드디스크) 사이에 존재하는 캐시
- 캐시 메모리 작동원리
- 시간지역성: for / while 같은 반복문에 사용하는 조건 변수처럼 한번 참조된 데이터는 잠시 후 또 참조될 가능성이 높다.
- 공간지역성: A[0], A[1]과 같은 연속 접근 시, 참조된 데이터 근처에 있는 데이터가 잠시 후 사용될 가능성이 높다.
- 캐시에 데이터를 저장할 때는 이러한 참조 지역성(공간)을 최대한 활용하기 위해 해당 데이터뿐만 아니라, 옆 주소의 데이터도 같이 가져와 미래에 쓰일 것을 대비한다.
- Cache Hit: CPU가 요청한 데이터가 캐시에 있을 경우
- Cache Miss: CPU가 요청한 데이터가 캐시에 없어서 DRAM 에서 가져온 경우
- Cache Miss의 경우 3가지
- Cold Miss: 해당 메모리 주소를 처음 불러서 나는 Miss 이다.
- Conflict Miss: 캐시 메모리에 A와 B 데이터를 저장해야하는데, A와 B가 같은 캐시 메모리 주소에 할당되어 있어서 나는 Miss이다. (주소 할당 문제)
- Capacity Miss: 캐시 메모리의 공간이 부족해서 나는 Miss이다. (공간 문제)
- 구조 및 작동 방식
- Direct Mapped Cache
- 가장 기본적인 구조로, DRAM의 여러 주소가 캐시 메모리의 한 주소에 대응되는 다대일 방식이다.
- 인덱스 필드 + 태그 필드 + 데이터 필드
- Conflict Miss 가 발생할 수 있는 단점이 있다.
- Fully Associative Cache
- 비어있는 캐시 메모리가 있으면 마음대로 주소를 저장하는 방식이다.
- 조건이나 규칙이 없어서 특정 캐시 Set 안에 있는 모든 블럭을 한번에 찾아 원하는 데이터가 있는지 검색해야한다.
- 저장할 때는 매우 간단하지만 찾을 때가 매우 복잡하다.
- Set Associative Cache
- Direct + Fully 방식이다.
- 특정 행을 지정하고, 그 행 안의 어떤 열이든 비어있을 때 저장하는 방식이다.
- Direct 방식에 비해 검색 속도는 느리지만, 저장이 빠르고 Fully에 비해 저장이 느린 대신 검색이 빠른 중간형이다.
'Computer Science > 운영체제' 카테고리의 다른 글
[운영체제] 데드락(Dead Lock, 교착상태) (0) | 2023.05.30 |
---|---|
Process & Thread (0) | 2021.07.06 |