본문 바로가기

Computer Architecture10

입출력작업 - programmed i/o, interrupt driven i/o, DMA 초안 : 2023.04.18 입출력장치 (I/O Device) 입출력장치 (키보드, 마우스, 저장자치) 들은 각자 저마다의 컨트롤러를 통해 CPU 와 연결된다. (시스템 버스와 연결된다)물론 각 장치의 컨트롤러들은 장치에 특화된 기능을 수행하기도 하지만, 본 게시글에서는 CPU 와 입출력장치 간의 중개역할에 대해서만 언급한다. 위와 같은 관점에서 컨트롤러는 아래와 같이 3종류의 레지스터로 간략히 표현할 수 있다. 데이터 레지스터 : CPU 와 입출력장치 간에 주고받는 데이터가 담기는 레지스터. 데이터 버퍼링을 하며, 상대적으로 느린 I/O 장치와 CPU 의 전송률 차이를 완화한다. 상태 레지스터 : 입출력 장치가 입출력 작업을 할 준비가 되었는지, 완료되었는지, 오류가 없는지 등의 상태 정보를 저장한다... 2023. 4. 19.
캐시 메모리(Cache Memory)의 쓰기 동작 초안 : 2023.04.12 2023.04.10 - [Computer Architecture] - 캐시 메모리(Cache Memory)의 원리 2023.04.11 - [Computer Architecture] - 캐시 메모리(Cache Memory)의 구조 및 동작 과정 - 1 2023.04.12 - [Computer Architecture] - 캐시 메모리(Cache Memory)의 구조 및 동작 과정 - 2 지금까지는 내용은 모두 메모리를 read 할 때 캐시가 어떻게 동작하는지에 관한 것이었다. 프로세서는 메인 메모리에 값을 저장하려고 할 때, 캐시메모리에도 저장하고 메인 메모리에도 기록한다. 그런데 결과 값을 저장할 때마다 캐시와 메인 메모리 모두에 저장을 한다면, 메인 메모리의 늦은 access.. 2023. 4. 12.
캐시 메모리(Cache Memory)의 구조 및 동작 과정 - 2 초안 : 2023.04.10 2023.04.10 - [Computer Architecture] - 캐시 메모리(Cache Memory)의 원리 2023.04.11 - [Computer Architecture] - 캐시 메모리(Cache Memory)의 구조 및 동작 과정 - 1 이전 게시글에서 다룬 direct mapping 방식의 캐시 메모리를 생각해보면.. 메인 메모리의 어떤 데이터 블록은 캐시메모리의 지정된 슬롯으로 들어가야만 하고, 해당 슬롯에 이미 정보가 있다면 그 내용은 지워져야 한다. 캐시에 여유 공간이 있더라도 말이다. 이는 결과적으로 hit ratio 를 낮게 만드는 요인이 된다. Set Associative Mapping 이를 해결하기위해 direct mapping 캐시 메모리 두개를 .. 2023. 4. 12.
캐시 메모리(Cache Memory)의 구조 및 동작 과정 - 1 초안 : 2023.04.10 2023.04.10 - [Computer Architecture] - 캐시 메모리(Cache Memory)의 원리 캐시메모리에는 메인메모리의 일부 내용이 복사되어 저장된다. 프로세서가 어떤 주소에 접근하려고 하면, 먼저 그 주소에 해당하는 내용이 캐시에 있는지 확인하고 있다면 캐시메모리에서 바로 읽고, 없다면 메인메모리에서 읽고 캐시로 복사해온다. 이때 해당 주소 뿐만 아니라 인접 주소 내용도 함께 블록 크기로 복사한다. 즉 캐시메모리에 저장되는 정보는 두개이다. 1. 메인 메모리에서 복사한 데이터 블록 2. 이 데이터 블록이 메인 메모리의 몇번지에 있던 내용인지 나타내는 Tag 정보 아래 그림은 4x16 형식의 캐시 메모리 구조 예시이다. 4개의 데이터 블록이 있으며, 각 .. 2023. 4. 11.
캐시 메모리(Cache Memory)의 원리 초안 : 2023.04.10 CPU 는 프로그램을 실행하기 위해 메모리에서 명령어 및 데이터를 불러온다. 문제는 이 과정이 칩 외부의 시스템버스를 통해서 이뤄지므로 딜레이가 상당하다는 것이다. 다음에 쓰일 명령어나 변수를 예측에서 코어 내부의 SRAM 기반 메모리에 박아둔다면 이와 같은 딜레이를 드라마틱하게 줄일 수 있을 것이다. 이를 위한 메모리가 바로 캐시메모리(Cache Memory) 이다. CPU 내부에는 여러개의 캐시메모리가 존재하는데, 여기서도 코어와 가까운 순서대로 계층 (hierarchy)을 구성한다. 코어와 가장 가까운 캐시메모리를 L1 (level 1) 캐시, 그 다음을 L2 캐시, 그 다음을 L3 캐시라고 한다. 보통 L1, L2 캐시는 각 코어 내부에 있고 L3 은 코어 외부에 위치.. 2023. 4. 10.
CPU 성능을 올리기 위한 설계 방법 초안 : 2023.04.06 CPU설계를 할때 클럭을 높이고, 코어를 왕창 때려넣고, 레지스터를 왕창 박아서 멀티스레드 기능을 넣으면 빠른 성능의 CPU를 만들 수 있다. 그런데 이보다 중요한 것은 CPU가 놀지 않도록 하는 것이다. 명령어를 동시에 처리하여 CPU 가 쉬지 않고 동작하게 하는 기법을 ILP (Instruction-Level Parallelism, 명령어 병렬처리 기법) 이라고 한다. 이번게시글에서는 대표적인 파이프라이닝, 슈퍼스칼라, 비순차적 명령어 처리에 대해 다룬다. 파이프라이닝 (Pipelining) 이전에 명령어의 실행 cycle 을 Fetch ↔ Execution 으로 나눴는데, 클럭 단위로 살펴보면 아래와 같다. 1. Instruction Fetch (명령어 인출) 2. In.. 2023. 4. 7.
스레드(thread)와 멀티 스레드 CPU 초안 : 2023.04.05 CPU (하드웨어) 에서 사용되는 스레드와 프로그래밍에서 사용되는 스레드는 의미가 다르다. 인터럽트의 주체가 어디냐에 따라 exception(예외) 과 hardware interrupt 로 분리되듯, 스레드도 하드웨어적 스레드, 소프트웨어적 스레드로 나뉜다. 하드웨어적 스레드 하나의 코어가 동시에 처리하는 명령어 단위. (= 명령어를 실행하는 단위) 그러니까 지금까지 우리가 게시글에서 다룬 CPU 들은 1코어 1스레드 CPU 인 셈이다. 만약 여러 스레드를 지원하는 CPU 는 하나의 코어로도 여러 개의 명령어를 동시에 실행할 수 있다. 이렇게 하나의 코어로 여러 명령어를 동시에 처리하는 CPU를 멀티스레드 CPU 라고 한다. 하이퍼 스레딩 (Hyper threading) 은 .. 2023. 4. 6.
인터럽트(Interrupt) 초안 : 2023.04.04 CPU 가 하나의 명령어를 처리하는 데에는 정해진 흐름이 있고, 이를 반복하며 명령어들을 처리해 나간다. 이러한 정형화된 흐름을 command cycle 이라고 한다. 이전 게시글에서 간단한 그림으로 CPU 가 메모리에서 명령어를 인출하고 실행하는 과정을 살펴봤다. 다시 정리해보면 1. 메모리에 있는 명령어를 CPU 로 가져오고 (Fetch) 2. 이를 디코딩 하여 명령어를 실행한다. 즉, 컨트롤러가 IR 에 담긴 명령어를 디코딩 하여 control signal 을 발생 시킨다. (Execution) 그런데 만약 명령어를 실행하는데, indirect addressing mode 로 되어있어 메모리 접근이 한번 더 필요한 경우에는 바로 execution cycle 에 돌입할 수.. 2023. 4. 5.
프로세서 내부의 레지스터 초안 : 2023.04.04 프로그램 속 명령어와 데이터는 실행 전후로 CPU 내에 위치한 레지스터에 저장된다. CPU 속 레지스터들의 이름은 제조사 마다 다른데, 공통적으로 다루는 레지스터들은 대동소이하다. 1. 프로그램 카운터 (PC, Program Counter) 메모리에서 읽어 들일 명령어의 주소를 저장한다. 이를 Program Pointer 라고 부르는 CPU 도 있다. 2. 명령어 레지스터 (IR, Instrction Register) PC 값으로 부터 명령어가 담긴 특정 메모리의 주소를 CPU 가 읽어올텐데, 해당 명령어를 저장하는 레지스터이다. 이후 CPU 내의 컨트롤러가 해당 명령어를 디코딩 하여, control signal 들을 내보낸다. 3. 메모리 주소 레지스터 (MAR, Memor.. 2023. 4. 4.