본문 바로가기

학교

(52)
3. 컴퓨터의 성능 (1/4) 명령어 집합 의미 명령어 집합 구조(ISA)는 좁은 의미에서 컴퓨터 구조이다. ISA는 작성된 프로그램과 그 프로그램을 수행할 HW 사이의 인터페이스에 대한 완전한 정의이다. 즉, ISA는 추상화 개념이며, 이걸 구체화한 걸 Micro Architecture라고 한다. ISA에서 명시하는 사항은 다음과 같다. 1. 하드웨어가 어떤 연산을 수행하고, 각 연산에 어떤 데이터가 필요한지. 2. 사용할 수 있는 데이터의 표현 방식(Data type) 3. 주소 지정 방식(addressing mode) 명시 명령어 집합 설계에는 여러 주요 사항들이 있는데 다음과 같다. 1. 연산의 종류 프로세서가 수행할 수 있는 일의 종류 일반적으로 전송(transfer), 처리(processing), 제어(control), I/O 연산 4..
2. 컴퓨터의 성능 (3/3) CPU 성능에 영향을 주는 요소 CPU는 다음 3가지로 성능이 결정된다. 1. 명령어 개수 2. 평균 CPI 3. 클록 속도 물론 3가지를 다 줄이면 좋겠지만, 각 요소는 서로 충돌한다. 예를 들어 클록 사이클 시간을 낮추면 평균 CPI가 증가할 수 있고, 평균 CPI를 낮추면 명령어 개수가 늘어날 수 있다. (곱셈 연산을 없애면, CPI가 낮아지만, 곱셈을 덧셈으로 풀어써야 해 명령어 개수 증가) 이 3가지 요소를 자세하게 보면. 1. 명령어 개수 알고리즘과 아키텍처에 의해 결정 알고리즘의 예를 들면, 효율적인 정렬은, 명령어 개수를 줄여준다. 또한, 하나의 명령어가 수행하는 일이 많으면, 프로그램의 크기를 줄일 수 있다. 예를 들어 곱셈 연산은 x 하나면 충분하지만, 이게 없다면 다수의 + 연산을 통해 구현해야 한다. 아키텍처는 C..
2. 컴퓨터의 성능 (2/3) CPU 성능 분석 CPU의 사양 중 클록 속도라는 것이 있다. 클록 속도는 1초당 1.0 * 10^9 사이클을 나타내며 1ns이다. 하지만 클록속도가 3GHz인 CPU가 2GHz인 CPU보다 반드시 성능이 우수하다곤 할 수 없다. 클럭 속도는 CPU의 성능에 영향을 주는 요소 중 하나이기 때문이다. 예를 들면, 두발 자전거와 세발 자전거가 있을 때, 세발 자전거가 두발 자전거보다 바퀴가 작아 빠르게 돌릴 수 있지만, 페달을 더 빨리 밟는다고 해서 두발 자전거보다 더 빠른 건 아니다. CPU의 성능은 앞장의 프로그램 실행 시간으로 나타낼 수 있고, CPU의 성능이 좋을 수록, 프로그램 실행 시간이 짧다.(반비례) 프로그램 실행 시간은 다음 3개 요소로 나타낼 수 있다. 첫 번째 요소의 명령어 개수는 프로그램의 크기를 의미한..
2. 컴퓨터의 성능 (1/3) 암달의 법칙 cpu 실행 시간 프로그램을 수행하는데 순수하게 사용된 시간 ( I/O 작업 제외 ) 성능이 높다는 말이 CPU 실행 시간이 짧다는 의미이다. Ex) M1과 M2가 있을 때 M1에 대한 M2의 성능 비율은 암달의 법칙 병렬화를 적용한 성능 향상은, 시스템의 순차적 시간에 의해 제한되는 것 즉, 아무리 병렬화를 해줘도, 한계가 있다. M1을 일부 개선한 M2가 있을 때, M2의 실행 시간은 여기서 M은 약분이 되므로, 이 된다. 여기서 N은 성능 향상 크기 F는 영향을 받는 부분이다. 만약 N에 무한정으로 투자를 해 성능을 극대화 한다 해도. 고정된 순차적 시간 이상으론 최적화 할 수 없다. Ex) 부동 소수점 연산의 수행 시간이 50%를 차지하는 프로그램이 있을 때, 2배 빠르게 수행할려면 수행 시간이 ..
11. 캐시 메모리 (3/4) 블록 교체, 갱신, 실패 메모리에서 새로운 블럭을 가져와야 하는데, 캐시 테이블에 다른 블럭들로 차있으면, 교체를 해야 한다. 또, 캐시 블록과 메모리의 일관성을 유지하기 위한 대책도 필요하다. 1. 블록 교체 방식 1. 최소 최근 사용(LRU) 구현 비용이 높지만, 최고의 적중률을 보인다. 2. 무작위 방식 : 임의의 캐시 블록을 교체한다. 효율성은 보장하지 못하지만, 구현이 쉽다. 3. 선입 선출 : 먼저 적재된 블록을 먼저 축출한다. 상황에 따라서 무작위보다 안 좋다. 2. 블록 갱신 방식 1. 즉시 쓰기(write-through) 캐시 블록에 쓰기 연시, 메모리에도 수정 내용을 전달한다. 메모리 접근은 비용이 많이 들어서 꼭 필요한 블록에만 이 방식을 적용한다. 2. 나중 쓰기(write-back) 캐시 블록이 수정되면 ..
11. 캐시 메모리 (2/4) 사상(mapping) 캐시는 메모리보다 용량이 작기 때문에, 캐시 미스가 발생할 수 밖에 없다. 따라서, 메모리 블록을 어떻게 교체할 지에 대한 전략들이 있다. 교체 방식에는 대표적으로 3가지가 있다. 1. 직접 매핑 : 오직 1:1 2. 완전 연관 매핑 : 아무데나 사상 가능 3. 집합 연관 매핑 : 1 2번의 절충안으로, 정해진 블록의 집합내 어디서든 사상 가능 예를 들자면, 빅 엔디안 기반인 환경에서, 512바이트의 메모리와, 128바이트의 캐시를 가지고 있다. 16바이트의 블록을 가지고 있고, 워드는 4바이트다. 계산해보면 메모리 주소는 512 = 2^9 이므로, 9비트 캐시 주소는 128 = 2^7 이므로 7비트다. 여기서 블록이 16 = 2^4 이므로, 각각의 주소에 4비트를 차지한다. 정리하면. 메모리의 블록 번..
11. 캐시 메모리 (1/4) 개요 cpu에서 데이터를 처리하기 위해 메모리까지 접근하기에는 시간이 너무너무 오래 걸린다. 그렇기 때문에 중간에 CPU 캐시 메모리를 둬서 빠르게 꺼내 쓸 수 있게 한다. 만약 캐시에 없다면?? 그러면 메모리까지 가야한다. 메모리에도 없으면... 보조 기억 장치까지 가야하는데 이렇게 되면 속도가 많이 느리다 캐시 메모리는 일반적으로 조작할 수 있는 명령어를 프로그래머에게 제공하지 않아, 투명성을 가지고, 컴퓨터의 기능과는 상관없이 성능에만 영향을 준다. 1. 적중과 실패 캐시메모리는 메모리에 비해 적은 용량을 가지고 있으므로, 메모리에는 있는 내용이, 캐시엔 없을 수 있다. 이런 현상을 캐시 미스(Cache miss)라고 하고, 반대로, 캐시에도 존재하면 캐시 히트(Cache hit)라고 한다. 캐시 메모리..
PC, LR, SP sp sp는 스택 포인터로, 변수는 sp를 기준으로 생성, 접근된다. 마지막에는 이렇게, 8바이트를 사용했으니, 그만큼 8바이트를 더해주고, sp에 더한 값을 넣는다. 보통은 이걸 스택을 정리해준다 라고 한다. lr, pc lr은 Return address가 담겨있는 부분이다. pc는 현재 실행중인 명령어의 위치이다. 1~10000까지 더하는 코드다 11줄의 bl sum 에 bp를 찍고 실행한 disassemble 창이다. pc는 다음 실행할 명령어인 0x808c를 가리키고, 아직은 main 함수 내여서 돌아갈 주소가 없으니, lr은 0x0이다. sum 브랜치가 종료되면 loop브랜치를 마저 실행해야 하니, bl sum의 다음 명령어인, 0x8090 (loop+16)의 값을 저장하고, pc는 그냥 실행할..