본문 바로가기

분류 전체보기96

CPU 성능을 올리기 위한 설계 방법 초안 :  2023.04.06  CPU설계를 할때 클럭을 높이고, 코어를 왕창 때려넣고, 레지스터를 왕창 박아서 멀티스레드 기능을 넣으면 빠른 성능의 CPU를 만들 수 있다. 그런데 이보다 중요한 것은 CPU가 놀지 않도록 하는 것이다. 명령어를 동시에 처리하여 CPU 가 쉬지 않고 동작하게 하는 기법을 ILP (Instruction-Level Parallelism, 명령어 병렬처리 기법) 이라고 한다.이번게시글에서는 대표적인 파이프라이닝, 슈퍼스칼라, 비순차적 명령어 처리에 대해 다룬다. 파이프라이닝 (Pipelining)이전에 명령어의 실행 cycle 을 Fetch ↔ Execution 으로 나눴는데, 클럭 단위로 살펴보면 아래와 같다.1. Instruction Fetch (명령어 인출)2. Inst.. 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, Memory A.. 2023. 4. 4.
명령어의 Operation code, Operand 와 Addressing mode (주소 지정 방식) 초안 :  2023.04.02  어셈블리 명령어는 operation code 와 operand 로 구성되어 있다. 명령어가 수행할 연산 을 operation code 라고 하고, 연산에 사용할 데이터 또는 위치를 operand 라고 한다.예를들어 아래의 명령어에서 add 는 operation code 이고 eax, edx 는 operand 이다. add eax, edx 여기서 eax 와 edx 는 CPU 의 레지스터 주소 인데, 이와 같이 operand field 에는 데이터나 메모리, 레지스터의 주소가 올 수 있다. 대부분의 경우 데이터를 직접 명시하기 보다는 데이터가 저장된 위치(주소)가 명시된다. 따라서 operand field 를 address field 라고 부르기도 한다. 참고: 커맨드의 종류.. 2023. 4. 3.
2023.04.02 - 다시 시작 오늘부터 본 플랫폼에서 포스팅을 이어가려고 합니다. 기존에 아날로그 회로, 반도체 소자 관련 포스팅을 주로 하던 네이버 블로그는 아깝지만 포기하기로 했습니다. 사실 네이버 블로그에도 글을 쓰지 않은지 몇달이 된 것 같은데, 새롭게 출발하며 마음을 다잡고자 하는 마음도 있습니다. 네이버 블로그를 집중적으로 하던 2020년~2021년은 제가 살면서 가장 열심히 노력하고 공부한 기간이 아닌가 싶습니다. 거의 매일 같이 하루 12시간 가까이 연구하고 공부하면서도 버틸수 있었던 이유는 블로그 때문이었습니다. 사담은 없고 오직 공부한 내용만 아카이빙 하는 용도의 블로그였지만, 이상하게 기록으로 남는 무언가가 있다보니 슬럼프가 오지 않았습니다. 그렇게 2021년 EDA 회사에 취업을 했고, 그 후로도 블로그 포스팅은.. 2023. 4. 2.