1. 컴퓨터 시스템 구성요소 메모리(Memory) 캐시메모리 개념 캐시메모리의 특징 적중률(hit ratio) CPU의 처리속도(고속)와 메모리(저속)의 접근 속도 차이를 줄이기 위해 사용하는 고속 Buffer Memory. CPU의 속도와 메모리의 속도차가 클 때, 성능을 향상시키기 위하여 메모리와 CPU레지스터 사이 에서 데이터를 이동시키는 중간버퍼로 작용하는 기억장치. 캐시메모리의 특징 메모리와 CPU사이에 위치함. 캐시를 사용하면 메모리를 접근(Access)하는 횟수가 줄어들기 때문에, 컴퓨터의 처리속도가 향 상됨. 메모리와 CPU사이에서 일종의 버퍼(Buffer)기능을 수행. 적중률(hit ratio) 캐시에 찾는 내용이 있을 확률 - Cache hit : 캐시에 찾는 내용이 있을 경우 - Cache miss : 캐시에 찾는 내용이 없을 경우 참조의 국한성(locality of reference) CPU가 기억장치를 접근할 때는 일부 특정 위치를 계속 참조한다는 이론 1
1. 컴퓨터 시스템 구성요소 메모리(Memory) 1 RAM CPU Cache 2 메모리 참조가 임의적으로 이루어지는 것이 아니라 지역성(국부성)이라는 특징을 가지는 것을 가 지는 것을 활용하여 메모리 계층 구조를 이용. 지역성 - 실행 중인 프로세서가 실행기간 동안 메모리 정보를 균일하게 접근하지 않고 블록 중 일부만 집중적으로 참조 하는 현상. - 발생 이유 프로그램은 명령어를 순차적으로 실행하는 경향이 있으므로 명령어는 특정 지역 메모리에 인접해 있다. 프로그램은 순환(단일 순환, 중첩된 순환 등)의 반복이지만 메모리 참조 영역은 일부 영역에 국한된다. 대부분의 컴파일러는 메모리에 인접한 블록, 즉 배열로 저장하므로 프로그램은 배열 원소를 순차적으로 자주 접근하게 되어 지역적인 배열 접근 경향을 보인다. Cache CPU RAM 1 2 (Cache hit) (Cache miss) 참조의 국한성
1. 컴퓨터 시스템 구성요소 메모리(Memory) 메인 메모리 고유 주소를 가진 워드나 바이트로 구성된 대규모의 배열로, 주소를 읽거나 기록함으로써 상호 작 용한다는 특성을 가짐. ex: 메인 메모리 역할 1. 프로세서 : 메인 메모리로부터 처리할 데이터를 가져오거나 처리한 결과를 메인 메모리에 저장 2. 입출력장치 : 메인 메모리에서 데이터를 받거나 저장. [그림1-6] 메인 메모리의 역할 예
1. 컴퓨터 시스템 구성요소 메모리(Memory) 다수의 셀(Cells)로 구성되며 각 셀들은 비트들로 구성. 메인 메모리에 데이터 저장 시 셀 하나 또는 여러 셀에 나뉘어 저장되며, 셀은 주소에 의해 참조됨 . - 셀이 K비트 일 경우 2K값을 저장. - n비트일 경우 참조 주소 범위는 0~2n-1. [그림1-7] 메인 메모리의 주소 지정 물리적 주소 공간 - 컴퓨터에 주어진 주소 공간을 말하며, 프로그래머는 직접 사용하지 않고 수식, 변수를 이용한다. 논리적 주소 공간 - 컴파일러에 의해 기계어로 변환된 변수와 명령어에 할당되는 주소. - 별도의 주소 공간에 나타남. 컴파일 - 원시 프로그램을 기계 명령어로 변환하는 처리 과정으로 이때 컴파일러가 논리적 주소를 물리적 주소로 변환.
1. 컴퓨터 시스템 구성요소 메모리(Memory) 메모리 속도는 어떤 동작의 시작과 종료 사이의 경과 시간으로 메모리 접근 시간과 메모리 사이 클 시간으로 표현. - 메모리 접근 시간 : 명령 발생 후 목표 번지를 검색하여 데이터 쓰기(읽기)를 시작할 때까지의 시간. - 메모리 사이클 시간 : 두 번의 연속적인 메모리 동작 사이에 필요한 최소 지연 시간. - 일반적으로 사이클 시간이 접근 시간보다 약간 크며 메모리의 세부 구현 방법에 따라 달라진다. : Cycle Time >= Access Time [그림1-8] 메모리 접근 시간과 메모리 사이클 시간 프로세서와 메모리 사이의 접근 속도 차가 커짐에 따라 메인 메모리의 부담을 줄이기 위해 프로 세서 칩 안이나 외부에 별도의 캐시를 구현하기도 한다. [그림1-9] 프로세서, 메인 메모리, 보조기억장치의 관계
1. 컴퓨터 시스템 구성요소 메모리(Memory) 가상 메모리(Virtual Memory) 메인 메모리의 유효 크기를 늘리는 기법. - 기억용량이 작은 메인메모리를 마치 큰 용량을 가진 것처럼 사용할 수 있도록 하는 운영체제의 메모리 운영기법 - 주소공간의 확대(용량의 확대)가 가장 큰 목적 : 보조기억장치를 활용 보조기억장치에 프로그램이나 데이터를 저장했다 필요 시 다시 메인 메모리로 이동시키는 기술. - 메인 메모리의 공간 부족으로 현재 실행 중인 프로그램이나 데이터를 저장 할 수 없을 때 가상 메모리를 이용하여 프로그램과 데이터를 보조기억장치에 일부 저장한 후 필요 시 다시 메인 메모리로 옮겨 실행. 가상 메모리의 특징을 활용하기 위해 실행 중인 프로세스가 참조하는 주소와 메인 메모리에서 사 용하는 주소를 분리해야 함. - 매핑(사상, Mapping), 메모리 맵(Memory Map) : 논리적 주소(가상주소)를 물리적 주소(실기억주소)로 변환하는 과정. [그림1-10] 메모리 매핑
1. 컴퓨터 시스템 구성요소 메모리(Memory) 주소매핑 (주소변환) - 보조기억장치에 보관 중이던 프로그램을 실행하기 위하여 주기억장치에 Load했다 하더라도 프로그램을 구성하는 각 기계명령에 포함된 주소는 가상주소로 남아 있기 때문에, CPU에서 주기억장치를 Access하기 위해서는 가상 주소를 실주소로 변환해야 함. 메인 메모리보다 큰 저장 용량의 주소를 지정 가능하므로 프로그램을 부분 적재하여 실행할 수 있음. - 실제 수행 중인 부분만 실제 메인 메모리로 매핑하고 나머지는 보조기억장치로 매핑. [그림1-11] 가상 메모리의 물리적 메모리로의 매핑
1. 컴퓨터 시스템 구성요소 메모리(Memory) 캐시(Cache) 처리 속도가 빠른 프로세서와 상대적으로 느린 메인 메모리 사이에서 데이터나 정보를 저장하는 고속 버퍼. 메인 메모리에서 일정 블록의 데이터를 가져와 워드 단위로 프로세서에 전달하여 정보를 빠르게 제공하고, 데이터가 이동할 수 있는 통로(대역폭)을 확대하여 프로세서와 메인 메모리의 속도 차 를 줄임. 보통 크기가 8~64바이트 정도인 블록 여러 개로 구성, 각 블록의 크기는 메인 메모리의 블록 크 기와 같음. [그림1-12] 캐시 메모리
1. 컴퓨터 시스템 구성요소 메모리(Memory) 캐시의 동작 - 일반적으로 메인 메모리의 주소는 태그(Tag) 영역과 주소 영역 등을 나타내는 연속된 값으로 구성. - 캐시는 메인 메모리 주소 영역을 한 번 읽어 들일 수 있는 라인 크기로 나눈 후 각 블록에 번호를 부여한 후 태그로 번호를 저장. - 프로세서가 메인 메모리 접근이 필요할 때 먼저 캐시를 조사하여 캐시 태그와 메모리 주소의 태그 영역을 비교, 원하는 블록을 찾는다. ex: 읽기 연산일 경우 1. 캐시 적중(Cache Hit) 시 캐시는 데이터 라인에서 요청한 데이터를 읽어 프로세서로 전송. 2. 캐시 실패(Cache Miss) 시 캐시 제어기는 메인 메모리에서 해당 블록을 읽어 캐시에 넣고 프로세서로 전송. [그림1-13] 캐시의 기본 동작
1. 컴퓨터 시스템 구성요소 주변장치 컴퓨터의 기능을 향상시키기 위한 추가 장비. 입력 장치, 출력 장치, 보조기억장치, 스캐너, 모뎀 등 보조기억장치 : 플로피 디스크, 하드 디스크, CD/DVD, 테이프 드라이브 등
2. 컴퓨터 시스템의 동작 컴퓨터 시스템의 동작 과정 디지털 형태의 정보를 입력 받아 메모리(기억장치)에 저장된 명령어 목록(프로그램)에 따라 처리하고 결과를 출력하는 일종의 고속 전자계산기. 아래와 같은 순서로 동작하며, 제어장치가 모든 동작을 제어한다. 입력 장치를 통해 정보를 입력 받아 메모리에 저장한다. 메모리에 저장한 정보를 프로그램의 제어에 따라 인출하여 산술 장치나 논리 장치에서 처리한다. 처리한 정보를 출력 장치에 표시하거나 디스크(보조기억장치)에 저장한다. ※ 정보 : 명령어와 데이터로 구분 - 명령어 : 실행할 산술, 논리 연산 동작을 명시하는 문장. - 프로그램 : 어떤 작업 하나를 수행하기 위한 명령어 집합.
2. 컴퓨터 시스템의 동작 명령어 구성 연산 코드(Operation Code)와 오퍼랜드(Operand)로 구성. 0과 1의 이진 코드화 되어 있으며 프로세서에 따라 길이가 달라짐. 고정 길이 또는 기능에 따른 가변적 구성 가능. 실행 전 메인 메모리에 저장되고 한번에 하나씩 프로세서에 전송되어 해석 및 실행. 데이터는 메모리에 순차적으로 저장되고, 프로세서는 프로그램 카운터를 통해 저장된 명령어를 순차적으로 실행. [그림1-15] 메인 메모리에 저장된 명령어 예 [그림1-14] 명령어 구조
2. 컴퓨터 시스템의 동작 명령어 구성 연산 코드 오퍼랜드 = 어드레스 필드(Address Field) = 주소부 명령어의 가장 기본 부분, 프로세서가 실행할 연산(동작)을 지정. 명령어 구성, 연산 데이터 종류, 명령어 비트의 할당 상황 등을 나타냄. 오퍼랜드 = 어드레스 필드(Address Field) = 주소부 명령어가 처리할 데이터나 데이터가 저장된 주소에 관한 정보(레지스터, 메모리)를 표시. - 실제 데이터에 대한 정보를 표시하는 부분 원시 오퍼랜드(Source Operand)와 목적 오퍼랜드(Destination Operand)로 구분. 연산자(Operation Code)부 자료(Operand)부 [그림1-16] 오퍼랜드의 구분 ※ 누산기 : 메모리에서 읽은 오퍼랜드를 레지스터에 저장된 데이터와 연산할 때 사용하는 프로세서 레지스터 프로그램의 명령어 수행 중에 산술 및 논리 연산의 결과를 일시적으로 저장.
2. 컴퓨터 시스템의 동작 명령어 형식 Operand부의 개수에 따라 3/2/1/0 주소 명령어 형식이 있음. - 연산 입력값과 결과값 모두를 보존. - 프로그램의 길이가 짧아짐 : 명령 줄수가 적어짐(즉, 한 라인에 전부 표현가능) ex) ADD 100, 200, 300 2-주소 명령어 (Operand부가 2개로 구성 : 연산의 결과는 Operand1에 기록됨) - 1주소와 2주소의 데이터로 연산을 하고 연산결과를 1주소에 저장시키기 때문에 1주소의 원래 데이터는 소멸 되는 방식. ex) ADD 100, 200 1-주소 명령어 (Operand부가 1개로 구성) - 반드시 누산기(AC)가 필요한 주소지정방식 : 연산결과를 누산기(AC)에 저장 ex) ADD 100 0-주소 명령어 - Operand부가 없이 Op-Code만으로 구성 - 모든 연산은 stack에 있는 자료를 이용하여 수행 : Push(삽입), Pop(삭제) Op-Code Operand1 Operand2 Operand3 결과의 주소 Op-Code Operand1 Operand2 결과의 주소 Op-Code Operand1 Op-Code
2. 컴퓨터 시스템의 동작 주소지정방식 즉시적(Immediate) 주소지정방식 Operand부분에 데이터를 기억하는 방식. 주기억장치를 참조하지 않고 CPU에서 곧바로 자료를 이용. 메모리 참조 횟수를 줄일 수 있어 속도는 빠르나 데이터 표현 범위가 한정 직접(Direct) 주소지정방식 명령어의 주소 부분에 유효 주소 데이터가 있음. - 유효주소 : 실제 연산에 사용될 데이터가 있는 주소. 1번의 주기억장치를 참조함. Op-Code Data Op-Code 유효주소 ( 유효주소 : 실제 연산에 사용될 데이터가 있는 주소 ) 107 ADD 100 1주소지정명령 : 누산기(AC)사용 106 105 104 103 102 101 ( = 실제 연산에 사용될 데이터 ) 100 10
2. 컴퓨터 시스템의 동작 주소지정방식 간접(Indirect) 주소지정방식 명령어가 피연산자의 주소가 아닌 피연산자의 주소가 저장된 곳의 주소를 나타내고 있는 방식. 2번의 주기억장치를 참조함: 속도는 느림. 108 10 107 ADD 100 1주소지정명령 : 누산기(AC)사용 106 105 104 108번지에 실제 연산에 사용될 데이터가 존재 103 102 101 ( 유효주소 : 실제 연산에 사용될 데이터가 있는 주소 ) 100 108