컴퓨터 구조(13)
-
[컴퓨터 구조] 캐시(Cache)
캐시(Cache) 용량이 적으나 속도가 빠른 버퍼 메모리 일시적으로 데이터를 저장한다. CPU보다 속도가 느린 주변장치와의 속도 차이를 보충해준다. CPU의 성능이 좋아지는 속도를 메모리의 속도가 따라잡지 못해 이를 보충하기 위해 넣게 되었다. CPU가 메인 메모리를 접근하기 전에 거치는 곳이다. cache hit 캐시에 데이터가 있음 cache miss 캐시에 데이터가 없음 direct mapped 캐시 내 위치를 메모리 주소에 기반을 두고 할당한다. 블록의 캐시 내 위치 = 블럭주소 modulo 캐시 전체 블록 수 그러나 이러한 방식으로는 캐시에 위치한 블럭이 어떠한 블록인지를 알 수 있는 방법이 없다. 그래서 태그(tag)를 추가하게 된다. 태그(tag) 캐시에 위치한 블럭이 어떠한 블럭인지를 알게..
2020.06.13 -
[컴퓨터 구조] 파이프라인(Pipeline)
단일 사이클 한 클럭 동안 하나의 명령어를 수행한다. 가장 길게 실행되는 명령어가 한 클럭의 기준이 된다. lw = 가장 길다. Instruction Memory → register file → ALU → MEM→ register file = 다른 명령어가 빨리 끝나더라도 클럭 시간이 줄어들지 않는다. 설계원칙 3, 자주일어나는 일을 빠르게 원칙에 어긋난다. 그러므로 파이프라인을 통해 성능 향상 시키자 단일 사이클 구현은 오늘날 왜 사용되지 않는가? 단일 사이클 구현 클럭 사이클이 모든 명령어에 대해 같은 길이를 같는다. 클럭 사이클이 너무 길다 = 비효율 ↕ 파이프라이닝 여러 명령어가 중첩되어 실행 파이프라인(Pipeline) 파이프라인은 병렬 처리 방식이라고 말할 수 있다. 아래는 세탁기로 예를 든 ..
2020.06.12 -
[컴퓨터 구조] CPU 명령어 수행 방식
프로세서(CPU)에서 명령어를 수행하는 방식 개요 1. 프로그램 카운터(PC)를 메모리로 보내 메모리로부터 명령어를 가져온다. 2. 명령어 수행에 필요한 레지스터를 읽는다. 3. ALU를 거쳐 계산한다. 4. 나온 값을 멀티플렉서(mux)를 거쳐 선택한다. 제어 유닛(Control Unit)에서 나온 제어선을 통해 선택한다. PC → MEM → ALU → MEM 필요한 하드웨어 R-타입(ALU 연산) 레지스터 파일 레지스터들의 집합으로 구성된 상태 소자 ALU load, store 데이터 메모리 부호 확장(Sign-extend) branch ALU 분기 조건 계산 Adder 분기 목적지 주소 계산 Datapath 명령어를 수행하는 경로 제어 유닛(Control Unit) 들어온 명령어를 해독하여각 장치들..
2020.06.12 -
[컴퓨터 구조] 컴퓨터 논리 하드웨어
AND-gate Y = A & B Adder Y = A + B MUX(Multiplexer) Y = S ? l1 : l0 ALU(Arithmetic Logic Unit) Y = F(A, B)
2020.06.12 -
[컴퓨터 구조] 부동 소수점
과학적 표기법(Scientific Notation) 소수점 왼쪽에는 1개의 자릿수만 표기하는 방법 1.xxxxxxx 0.xxxxxxx 정규화된 수(Nomalized Number) 과학적 표기법으로 작성된 수 중맨 앞이 0이 아닌 수 1.xxxxxxx 3.xxxxxxx 부동 소수점(Floating point) 컴퓨터에서 실수를 표현하는 방법이다. 1 bit single : 8 bit double : 11bit single : 23 bit double : 52 bit 부호(S) 지수(Exponent) 소수(Fraction) 지수(Exponent) 원래의 지수에 Bias를 더해준 값 지수를 unsigned로 나타내기 위함이다. Bias single : 127 double : 1023 부동 소수점 덧셈, 뺄셈 ..
2020.06.12 -
[컴퓨터 구조] 컴퓨터의 연산
덧셈 컴퓨터의 덧셈은 사람이 덧셈하는 것과 같다 LSB에서 MSB 쪽으로 한 비트씩 서로 더하고, 올림수가 생긴다면 왼쪽 자리에 더해주는 방식이다. 뺄셈 뺄셈은 따로 존재하지 않는다. 그러므로 덧셈을 이용하여 뺄셈을 수행한다. ex) a = a - b a = a + (-b) 와 같이 부호를 바꿔 더하는 방식으로 뺄셈을 수행한다. 덧셈과 뺄셈을 수행한다면, 오버플로우가 발생할 수 있으므로 주의하자. 오버플로우(Overflow) 넘쳐 흐른다라는 뜻을 가지고 있다. 사칙연산의 결과가 레지스터의 범위를 넘어섰을 때 발생한다, 예를 들어 32bit의 두 수를 더할 때 마지막 31번째 비트에서 올림수가 발생한다면, 총 33bit가 된다. 이때 오버플로우가 발생했다고 한다. 이는 덧셈, 뺄셈 두 가지 모두 발생할 수..
2020.06.12