목록Computer/CS (39)
Machineboy空
전제 조건 1) CPU가 메모리에 접근하는 시간은 CPU 연산 속도보다 느리다. 전제 조건 2) CPU로 부터 먼 저장 장치일 수록 느리고, 속도가 빠른 저장 장치는 저장 용량이 작고 가격이 비싸다 저장 장치 계층 구조 (레지스터 vs 메모리(RAM) vs USB 메모리) CPU에 가까울수록 빠르고 비싸다(16GB 메모리 > 16GB USB) 즉, 낮은 가격대의 대용량 저장 장치를 원한다면 느린 속도는 감수해야 하고, 빠른 속도의 저장 장치를 원한다면 작은 용량과 비싼 가격은 감수해야 한다. 캐시 메모리 (Cashe Memory) CPU와 메모리 사이에 위치한, 레지스터보다 용량이 크고 메모리보다 빠른 SRAM(Static RAM)기반의 장치. CPU의 연산 속도와 메모리 접근 속도의 차이를 조금이나마 ..
논리 주소 (Logical Address) : CPU와 실행중인 프로그램 입장에서 바라본 논리 주소 실제 주소는 아니지만 논리적으로 이런 주소야! *논리 프로세서 : 하드웨어 스레드의 다른 말로, 실제 스레드가 몇 개인지 모르고 일을 하는 양으로 미루어 볼 때 몇개쯤이다 추측하는 것 처럼 CS학문에서 무언가 추상적 추측을 논리적(Logical)이라고 말하나 봄 https://machineboy0.tistory.com/95 CPU 성능 향상 ① 빠른 CPU를 위한 설계 기법 - 클럭(clock), 코어(core), 스레드(thread) 방법 1)클럭(clock) 속도 컴퓨터 부품들은 '클럭 신호'에 맞춰 일사불란하게 움직인다. CPU는 '명령어 사이클'이라는 정해진 흐름에 맞춰 명령어들을 실행한다. → 빠..
주기억장치(Main Memory)의 종류에는 크게 RAM(Random Access Memory)과 ROM(Read Only Memory) 두 가지가 있고 메모리 라는 용어는 그 중 RAM을 지칭하는 경우가 많다. RAM에 저장된 내용은 전원이 꺼지면 저장된 내용이 날아간다. 따라서 보조기억장치에 보관할 내용을 저장한다. RAM이 크면 뭐가 좋을까? RAM의 용량은 컴퓨터 성능에 어떤 영향을 미칠까? 다다익램. 램이 크면 클 수록 좋다? 램이 작을 때의 불편함을 느끼고 램이 클 때의 이점을 파악해보자. 많은 프로그램들을 동시에 실행하는 데에 유리하다. RAM의 종류 DRAM (Dynamic RAM) Dynamic = 동적인 전원이 연결되어 있어도 저장된 데이터가 동적으로 사라지는 RAM 데이터의 소멸을 막..
CPU는 다양하기 때문에 명령어의 세세한 생김새, 연산, 주소 지정 방식 등은 CPU마다 다르다 CPU들은 명령어 집합에 속한 명령어들만 이해할 수 있다 즉, 같은 코드를 컴파일할지라도 다른 어셈블리어가 도출된다. 명령어 집합(구조) : ISA, Instruction set architecture CPU의 언어인 셈. 언어에 따라 생활 양식 문화도 다른 것처럼, 명령어의 집합, 즉 CPU의 언어가 달라지면 명령어 해석 방식, 레지스터의 종류와 개수, 파이프라이닝의 용이성 등이 달라진다. 그래서 명령어 구조라고도 부르는 것 즉 명령어가 달라지만 그걸 좀 더 효율적으로 다룰 수 있는 하드웨어의 구조도 달라지기 때문에 ISA는 하드웨어가 소프트웨어를 어떻게 이해할지에 대한 약속이다. 명령어 집합의 두 축 : ..
CPU가 시간 낭비 없이 메모리들에 있는 명령어들을 빠르게 처리하는 방법 1) 명령어 파이프라이닝 (Instruction Pipelining) 동시에 여러 개의 명령어를 겹쳐 실행하는 기법 Pipeline Hazard 항상 이상적으로 작동하는 것은 아님. 실패하는 경우도 있다. 데이터 위험 (Data hazard) 명령어 간의 의존성에 의해 야기 모든 명령어를 동시에 처리할 수는 없다 이전 명령어를 끝까지 실행해야만 비로소 실행할 수 있는 경우 명령어 2를 해석하는 동안 명령어 1을 인출할 수 없다 명령어 1이 R2 + R3의 값으로 업데이트된 뒤에 명령어 2를 인출해야하니까 제어 위험 (Control hazard) 프로그램 카운터의 갑작스러운 변화(순차적 흐름이 아닌 특정 메모리 주소로 변화)로 파이프..
방법 1)클럭(clock) 속도 컴퓨터 부품들은 '클럭 신호'에 맞춰 일사불란하게 움직인다. CPU는 '명령어 사이클'이라는 정해진 흐름에 맞춰 명령어들을 실행한다. → 빠른 CPU를 위해 클럭신호를 빨리 만들어볼까? → 클럭 신호가 빠르게 반복되면 (= 클럭 속도가 빨라지면 ) CPU를 비롯한 컴퓨터 부품들은 그만큼 빠른 박자에 맞춰 움직이겠지? 꼭 그런 것은 아니지만 일반적으로는 맞다. 그래서 클럭 속도가 CPU 속도로 측정되기도 함. 클럭 속도는 일정한 것이 아니라 필요에 따라 느려졌다 빨라졌다 한다. → 클럭 속도를 무조건 높인다고 좋을까? 필요 이상으로 클럭 높이면 발열이 심각해짐! 방법 2)코어(core) 수를 늘리기 전통적으론 단일한 코어가 즉 CPU였지만 멀티코어가 가능하며 다양한 부품..
CPU는 메모리로부터 명령어나 데이터를 가져와서 실행하기도 하고 필요하면 메모리에 값을 저장하기도 한다. 명령어 사이클 ? CPU가 메모리의 실행 프로그램을 실행하는데 일정한 패턴이 있고, 정해진 패턴 흐름에 따라 명령어를 처리한다. 인터럽트 ? 정해진 흐름을 방해받기도 한다. 정해진 흐름을 끊는 신호. 1) 명령어 사이클 (Instruction cycle) 프로그램 속 명령어들은 일정한 주기가 반복되며 실행되고 이 주기를 명령어 사이클(Instruction cycle)이라고 한다. 인출 사이클 (Fetch Cycle) 메모리에 저장된 명령어를 실행하려면 가장 먼저 CPU로 가져와야 한다. 실행 사이클 (Execution Cycle) 가져 와서 실행 하지만 CPU로 명령어를 가지고 와도 바로 실행이 불가..
CPU 구성품 중 레지스터 시스템, 임베디드, 해킹 분야의 경우 레지스터 안에 어떤 값이 담겼는지 관찰하게 되는 경우가 많다. ALU나 제어장치에 비해 좀 더 중요하게 살펴 볼 필요가 있다! 반드시 알아야 하는 레지스터 종류 * CPU 종류마다 레지스터의 갯수, 종류가 다르다 * 하지만 공통적으로 포함하는 레지스터들. 이름 저장하는 내용과 용도 1 프로그램 카운터 메모리에서 가져올 명령어의 주소 = 메모리에서 읽어들일 명령어의 주소 *타 CPU에서는 명령어 포인터( Instruction Pointer)라고 부르기도 함 2 명령어 레지스터 해석할 명령어 = 방금 메모리에서 읽어 들인 명령어 제어장치가 해석 3 메모리 주소 레지스터 메모리의 주소 CPU가 읽어 들이고자 하는 주소를 주소 버스로 보낼 때 거치..