전원이 켜지면, 메모리의 첫 부분(0번지) 또는 끝부분(0xffffff) 내용을 읽어 실행함.
프로세서의 기본구조
Control Unit
명령어(기계어, mov, add, jmp ...)를 해석하는 명령어 해석기(instruction decoder), 제어 로직으로 구성됨
명령어를 읽고 실행을 위한 로직을 수행
ALU(Arithmetic & Login Unit)
산술 연산: 덧셈, 뺄셈, 곱셈, 쉬프트 연산 등을 수행
논리 연산: 논리 AND, OR, XOR, NOT, 보수 연산 등을 수행
연산 처리 후의 상태(overflow, nagative, positive 등등)를 상태 레지스터에 저장함
레지스터(Register): 프로세서 내에 일시적으로 데이터를 보관하고 ALU의 산술, 논리 연산을 위한 데이터 저장 장소
범용 레지스터(general register): 프로그램, 데이터 처리를 위한 레지스터
제어 레지스터(control register): 프로그램 제어, 프로세서의 제어를 위해 사용하는 레지스터(예: Program Counter, Stack Pointer 레지스터)
상태 레지스터(status register): 프로세서의 산술 연산의 결과(음수인지 양수인지 오버플로우 났는지 등), 동작 모드들을 나타내는 레지스터
인덱스 레지스터(index register): 데이터의 어드레싱(데이터가 메모리에 어디에 위치하는가 등), 데이터 처리를 위해 사용되는 레지스터
CPU의 Controll Unit에는 Controller, PC, IR이 있다. IR(Instruction Register)이 메모리로부터 명령어를 읽어오면 Controller가 IR의 명령어를 가져와서 해석한다(단순히 산술 연산이면 ALU가 실행한다)그러면 PC의 값이 하나 증가한다. 즉, IR의 메모리로부터 순차적으로 실행해야 할 명령어를 읽어오는 레지스터이고 PC는 IR이 어디까지 메모리를 읽었는지 카운트하는 레지스터이다.
컴퓨터의 전원을 키면, 프로세서는 메모리의 0번지 혹은 마지막 번지를 읽어온다. 만약 프로세서가 0번지를 읽으려고 하면 IR로 메모리의 0번지를 읽어오고 PC가 0으로 초기화된다.
Bus: 프로세서와 메모리 간에 데이터가 이동하는 통로
프로세서의 기능
메모리에서 명령어를 읽기
메모리에서 데이터를 쓰기
메모리에서 데이터를 읽기
I/O 장치에 데이터를 쓰기
I/O 장치에 데이터를 읽기
연산(산술, 논리 등)
프로세서의 동작
프로세서의 모드
권한 수준(privilege level)이라고 함
모드에 따라 프로세서가 실행할 수 있는 명령어들이 다르다.
일반적으로 상태 레지스터에 모드 비트(커널 모드 vs 유저모드)가 있다. 상태 레지스터는 산술 연산을 하면 상태가 생기고, 그 연산 결과의 상태를 저장하는 레지스터인데. 연산 결과의 상태 뿐만 아니라 모드 또한 저장한다.
모드의 종류
사용자 모드(user mode): 제한된 명령어만 실행할 수 있는 상태
커널 모드(kernel mode, supervisor mode, privilege mode): 제한없이 모든 명령어를 실행할 수 있는 상태
명령어
기계어라고도 함
프로세서가 직접 실행할 수 있는 명령어
명령어 종류
데이터 처리 명령어: add, subtract, multiply, shift, compare, etc
데이터 이동 명령어: 명령어에서 메모리로 이동(move), 메모리에서 레지스터로 이동(load), 레지스터에서 메모리로 이동(store)
실행 제어 명령어: branch, conditional branch(jump) 등
특수 명령어: 프로세서 모드(사용자 모드, 커널모드) 변경, 입출력(I/O) 명령어 등
특수 명령어는 커널 모드에서만 실행 가능하다. 왜 이렇게 하냐? I/O를 사용자 프로그램에서 직접하게 되면 시스템이 파괴될 수 있으므로 커널이 사용자 프로그램 대신 I/O 를 하는 거다. 모드 역시 커널모드에서만 변경할 수 있다. 즉 ,사용자 모드에서는 모드를 변경할 수 없다.
컴퓨터 언어
프로그래밍 언어(Programming Language)
컴퓨터 소프트웨어를 작성할 때 사용하는 언어
고급 언어: C, C++, Java, Pascal, Basic 등
저급 언어: 기계어를 사람이 이해하기 쉽도록 심볼화(mov, add, store ...)하여 만든 언어(예: 어셈블리어)
컴파일러
고급 언어를 기계어로 번역하는 프로그램
어셈블러
어셈블리어를 기계어로 번역하는 프로그램.
버스
같은 기능을 가진 신호선 묶음
컴퓨터 시스템 각 부분 사이에 전기적인 신호를 전달
대부분의 프로세서는 3개의 버스를 가짐
주소 버스: 메모리 주소를 전달하기 위한 버스
데이터 버스: 데이터를 전달하는 버스
제어 버스: 제어 하기 위한 버스
메모리
Volatile
RAM
SRAM
읽고 쓰는 속도가 DRAM에 비해 Fast(active drive)
Less dense(4-6 transistors/bit)
전원이 공급되는 한 데이터가 계속 유지됨. 리프레시할 필요가 없다. Stable (holds value as long as power applied)
속도가 빨라서 캐시메모리로 사용
DRAM(보통 메모리라고 하면 DRAM을 말함)
읽고 쓰는 속도가 SRAM에 비해 Slower
그럼에도 불구하고 DRAM을 사용하는 이유는 1bit를 저장하는데 transistor를 1개만 사용해도 돼서 DRAM 사용 → 집적도가 좋다. High desity(1 transistor/bit)
DRAM이 속도가 느린 이유는 계속 refresh를 해줘야 한다. (전원이 계속 공급되고 있더라도 다시 써주고 다시 써주고)Unstable(needs refresh)
Non-Volatile
Read-Only Memory(ROM)
Programmable ROM: 여러 번 쓸 수 있는 ROM
EEPROM: 삭제하고 쓸 수 있는 ROM
NOR Flash Memory
NAND Flash Memory: USB, SSD
Mask ROM: 읽을 수만 있는
저장장치
주 기억장치(Main memory)
CPU가 직접 접근할 수 있는 저장 매체
RAM
휘발성
2차 저장장치(Secondary storage)
비휘발성 저장 기능 제공
HDD, CD, Tape 등
Flash memory를 사용하는 저장장치
USB
Memory Card
Solid State Disk(SSD)
저장장치 계층
저장 시스템은 다음과 같은 성질에 따라 계층을 구성한다
속도: read/write 시간
가격: 비트당 비용
휘발성
상위 레벨은 가격은 비싸지만 빠르고 하위 레벨로 갈수록 가격은 감소하지만 접근 시간은 증가
CPU와 캐시, 메인 메모리 간의 전송은 OS의 수행없이 하드웨어적으로 이루어지고, 디스크와 메인 메모리 간의 전송은 OS에 의해 이루어진다.
register (CPU 안에 있음)
cache
main memory
electronic disk
magnetic disk (HDD)
optical disk
magnetic tapes
캐싱(caching)
캐싱이란, 사용 중인 데이터를 느린 저장장치에서 빠른 저장장치로 임시로 복사하는 것을 말한다.
캐싱이 필요한 이유는 로직을 처리하는 데 있어서 빠른 접근성을 제공하는 것이며, 단순히 수동적으로 보관하는 것에 그치지 않고 이를 응용해서 작업의 결과를 저장함으로써 해당 로직의 불필요한 수행을 줄여주는 능동적인 역할까지 수행한다. 캐시로 사용하기 위한 가장 중요한 요건은 데이터로의 접근성인데, 원하는 데이터에 직접 접근하거나 만들어내는 비용보다 저렴해야 한다. 데이터가 필요할 때, 캐시를 먼저 검사하여 만약 있다면, 캐시에 있는 정보를 사용하여 빠르게 가져올 수 있고, 만약 캐시가 없다면 데이터를 캐시로 복사한 후에 사용하는데 이는 추후 캐시에서 빠르게 가져올 수 있게 하기 위함이다.
캐시 메모리가 나오게 된 배경은 아래와 같다. CPU의 클럭 속도가 매우 빨라짐에 따라 CPU 밖에 있는 DRAM과의 속도 차이가 현저하게 증가하였는데, 이 때문에 CPU 클럭 속도를 아무리 올려도 DRAM에서 데이터를 빠르게 제공해 주지 못하여 전체 시스템 성능이 증가하기 어렵게 되었다. 메모리 기술은 주로 축전기를 사용하는 DRAM과 플립플롭을 사용하는 SRAM으로 나뉘는데, DRAM은 가격이 싸고 용량 대비 크기가 작지만 속도가 느리고, SRAM은 속도는 빠르지만 가격이 비싸고 용량 대비 크기가 크다는 단점이 있다. 그래서 DRAM을 사용자가 직접 장착하게 하는 대신, CPU와 DRAM 사이에 SRAM을 별도로 두어서 DRAM의 데이터를 직접 접근하는 것보다는 빠르게 접근할 수 있도록 한다. 여기에 사용하는 SRAM을 캐시 메모리라고 한다.
이때, 빠른 저장장치를 캐시(cache)라고 부른다. (위의 캐시 메모리와 다른 개념이다)
데이터가 필요할 때
만약 있다면, 캐시에 있는 정보를 사용(빠르다)
만약 없다면, 데이터를 캐시로 복사한 후 사용
캐시 크기(cache size)와 교체 정책(replacement policy)
캐시의 크기는 정해져 있으므로, 무한히 데이터를 복사할 수 없다.
캐시가 다 찼는데, 데이터를 또 저장해야 한다면, 이미 캐시에 있는 데이터의 일부를 제거하고 새 데이터를 저장한다. 이를 교체(replacement)라고 부른다.
Uploaded by Notion2Tistory v1.1.0