본문 바로가기

CS-Study

(13)
컴퓨터 구조 : 캐시 메모리 📗 캐시 메모리 CPU와 메모리 사이에 위치한 레지스터 보단 용량이 크고 메모리 보단 빠른 SRAM 기반의 저장 장치를 말한다. ✔ 저장 장치들 사이 캐시 메모리의 위치 캐시메모리는 CPU의 연산속도와 메모리 접근 속도의 차이를 조금이나마 줄이기 위해 탄생함 CPU가 매번 메모리에 액세서 하는것은 시간이 오래걸리므로 메모리에서 CPU가 사용할 데이터의 일부를 미리 캐시 메모리로 가져와 사용하자는 취지에서 만들어졌다. 📗 계층적 캐시 메모리 일반적으로 L1, L2 캐시메모리는 코어 내부에, L3 캐시는 코어 외부에 있다. 📗 분리형 캐시 메모리 L1 캐시 메모리를 데이터를 저장하는 L1 캐시메모리인 L1D와 명령어를 저장하는 L1 캐시메모리인 L1I 로 분리한 분리형 캐시 메모리도 존재한다. ✔ 분리형 캐..
컴퓨터 구조 : 메모리의 주소 공간 📗 논리 주소와 물리 주소 CPU와 실행중인 프로그램은 메모리 몇번지에 무엇이 저장되어 있는지 모른다. 왜냐면 메모리에 저장된 값은 시시각각 변하기 때문이다. - 새롭게 실행되는 것 -> 새롭게 적재 - 실행이 끝난 것 -> 메모리에서 삭제 - 같은 프로그램을 실행해도 실행할 때 마다 적재되는 주소가 달라진다. ✔ 왜 시시각각 변하는 걸까? - 프로그램 런타임에 새로운 코드나 라이브러리가 메모리에 동적으로 할당되기 때문이다. - 보안상의 이유도 존재함. 프로세스의 주소 공간을 매 실행마다 무작위로 배치하여, 같은 코드라도 메모리 주소가 예측하기 어렵게 만들어 악성코드나 공격자가 공격하기 어렵게 만듬 -> 운영체제에서 ASLR 사용 ( Address Space Layout Randomization ) - ..
컴퓨터 구조 : RAM의 특성과 종류 📗 RAM CPU는 RAM으로부터 명령어와 데이터를 가져와서 실행하고 RAM은 실행할 프로그램을 저장한다. RAM은 휘발성으로 전원이 꺼지면 데이터가 날아간다. 때문에 전원이 꺼져도 데이터가 보존되는 대용량 보조기억장치가 필요하다. ✔ 램 용량이 크면 뭐가 좋을까? 램 용량이 크면 동시에 많은 프로그램들을 실행하는데 유리하다. 📗 RAM의 종류 💻 DRAM (Dynamic-RAM) DRAM은 일반적으로 메모리로써 사용되는 RAM이다. 저장된 데이터가 동적으로 사라지는 RAM이다. 데이터 소멸을 막기 위해 주기적으로 재활성화 해주어야 한다. 상대적으로 소비 전력이 낮고 저렴하고 집적도가 높아 대용량으로 설계하기에 용이하다. 💻 SRAM (Static-RAM) SRAM은 DRAM과 다르게 저장된 데이터가 사..
컴퓨터 구조 : 명령어 집합 구조, CISC 와 RISC 📗 명령어 집합(ISA) 명령어 집합이란 CPU가 이해할 수 있는 명령어들의 모음을 말한다. 명령어의 세세한 구조와, 연산, 주소지정 방식은 CPU 마다 다르다. CPU는 자신의 명령어 집합에 속한 명령어만 이해할 수 있다. 예를 들어, 명령어 집합이 각기 다른 A와 B CPU가 있다고 할 때, A CPU에서 만든 실행 파일을 그대로 B CPU에 옮겨 특별한 설정 없이 바로 실행하면 실행되지 않는다. 명령어들의 모음으로 만들어진 것이 실행 파일인데, A에서 이해할 수 있는 명령어의 모음으로 만든 실행 파일을 B에 바로 옮기면 이해할 수 있는 명령어가 아니기 때문에 실행이 불가한 것이다. => 같은 소스코드를 컴파일 하더라도 CPU에 따라 다른 기계어, 어셈블리어가 나올 수 있다. 🖥️ISA(Instruc..
컴퓨터 구조 : 명령어 병렬 처리 기법 📗 명령어 파이프라인 명령어 파이프라인이란 명령어를 읽어 순차적으로 실행하는 프로세서에 적용되는 기술로 한번에 하나의 명령어만 실행하는 것이 아니라 하나의 명령어가 실행되는 도중에 다른 명령어 실행을 시작하는 식으로 동시에 여러 개의 명령어를 실행하는 기법이다. 💻 명령어 처리 과정 1. 명령어 인출 2. 명령어 해석 3. 명령어 실행 4. 필요하다면 결과 값을 저장 같은 단계가 겹치지 않는다면 CPU는 각 단계를 동시에 실행할 수 있다. 예) 명령어 1에서 명령어를 해석하는 동안, 명령어 2를 인출해 올 수 있다. ✅ 명령어 파이프라인을 사용하지 않는다면? 한 명령어의 인출-해석-실행-저장 작업이 끝나야 다른 명령어를 시작할 수 있을 것이므로 명령어 처리 실행 시간이 매우 오래 걸릴 것이다. 💻 파이프..
컴퓨터 구조 : CPU를 빠르게 설계하는 법 (클럭, 코어, 스레드) CPU의 속도에 영향을 미치는 것에 대해 알아보자 📗 클럭이란? 클럭은 컴퓨터의 모든 부품을 일사불란하게 움직일 수 있게 하는 시간 단위이다. ✔ 그럼 클럭 신호가 빠르게 반복되면 컴퓨터의 부품들이 빠르게 움직일까? 꼭 그렇지는 않지만 일반적으로는 그렇다. 하지만 필요 이상으로 클럭 신호를 높인다면 발열이 심해질 수 있다. 💻 클럭 속도 헤르츠(Hz) 단위로 측정한다. 헤르츠는 1초에 클럭이 반복되는 횟수다. 클럭이 1초에 한번 반복되면 1Hz 클럭이 1초에 100번 반복되면 100Hz 이다. 위 i7-11700 CPU를 예시로 들면 클럭이 1초에 25억번 (2.5 x 109) 번 순간 최대 49억번 (4.9 x 109) 번 반복된다. 📗 코어란? 전통적으로 '명령어를 실행하는 부품'은 원칙적으로 하나만..
컴퓨터 구조 : 명령어 사이클과 인터럽트 📗 명령어 사이클 프로그램 속 명령들은 일정한 주기를 반복하며 실행한다. 이 주기를 명령어 사이클이라고 한다. ✔ 메모리 속 명령어를 실행하려면? 메모리 속 프로그램을 CPU로 가져와야 한다. 이 과정을 '인출' 이라고 하고 이 인출하는 주기를 '인출 사이클' 이라고 한다. 가져온 프로그램을 실행하는 주기는 '실행 사이클' 이다. 인출 사이클과 실행 사이클을 계속해서 반복한다. 인출 이후 바로 실행을 할 수도 있지만 실행을 할 수 없는 경우도 있다. 이때는 메모리 접근이 더 필요한 경우로 간접 사이클에 돌입하게 된다. 이후 실행이 가능해 지면 실행 사이클에 돌입하게 된다. ✔ 간접 사이클이란? 데이터에 대한 연산을 수행하는 경우에 명령어에는 그 데이터를 읽어오기 위한 기억장치 주소가 포함되어있는데 어떤 ..
컴퓨터 구조 : 레지스터 📗 레지스터 프로그램 속 명령어와 데이터는 실행 전후로 레지스터에 저장된다. 레지스터의 종류는 다양하며 전부 역할이 다르다. 💻프로그램 카운터 (PC) 다음에 메모리에서 가져온 올 명령어의 주소를 저장하는 레지스터이다. 프로그램 카운터가 있기 때문에 프로그램이 순차적으로 실행할 수 있게 된다. 💻명령어 레지스터 방금 메모리에서 읽어들인 해석할 명령어가 저장되는 레지스터 이다. 💻메모리 주소 레지스터 메모리의 주소를 저장하고 CPU가 읽어들이고자 하는 주소를 주소버스로 보낼 때 거쳐가는 레지스터 이다. 💻메모리 버퍼 레지스터 메모리와 주고받을 데이터, 명령어가 저장되는 레지스터 이다. ✔ 왜 데이터나 명령어를 메모리에 바로 보내지 않고 메모리 버퍼 레지스터를 거치는 걸까? 메모리는 CPU보다 속도가 느리기..

반응형