강의 내용 정리/컴퓨터구조(13)
-
컴퓨터 구조(14), Virtual Memory
Virtual Memory 1. Virtual Memory 1) Motivation - 하드웨어의 캐시 - 실제 여러 프로그램을 돌리기 위해 필요한 데이터는 메인메모리의 사이즈보다 훨씬 큰데 이를 해결해준다. - 지금 당장 필요로 하는 액티브 포션만 들고, 나머지는 디스크에 둬서 동시에 사용할 수 있도록 돕는다. - 로컬리티 법칙이 필요하다. - 동시에 여러 프로그램을 돌리기 위해선 문제가 발생할 여지가 많다. 동일한 메모리 공간에 액세스할 때 충돌이 발생하는 것도 해결해준다. - 메모리 공간을 충돌없이 사용할 수 있도록 돕는다. - 각각의 프로그램을 프로텍트해준다. - 비어있는 메모리 공간을 사용하도록 돕는다. 내가 사용한 저장공간을 동일한 프로그램을 실행한다고 해서 쓸 수 있는 것은 아니다. - 어드..
2022.06.15 -
컴퓨터 구조(13), Prefetching
Prefetching 1. Prefetching - 프로그램이 필요할 것같은 데이터를 미리 패치한다. 왜냐하면 메인 메모리에 대한 레이턴시가 매우 높기 때문에 이를 예측해서 적절한 순간에 미리 패치하면 더 빠르게 동작할 수 있다. - 너무 빠르면 다른 것이 캐시에 못올라가서 미스날 수 있다. 따라서 적절한 순간에 넣는 것이 좋다. - 어드레스를 액세스하는데 일정한 패턴이 있다면 프리패칭이 가능하다. 생각해 볼 것 - 예측 실패는 어떤 영향을 주는가. - 리소스를 더 사용하게 된다. 하지만 예측 실패가 발생한다고 해서 문제가 발생하지는 않다. 브랜치 예측은 다 날려야하기에 문제가 발생한다. 이와는 다르다. 잘못 가져오면 안쓰면 된다. 상대적으로 비용이 적다. 따라서 상태 복구가 필요하지는 않다. Basic..
2022.06.15 -
컴퓨터 구조(12), Memory Hierarchy & Caches
Memory Hierarchy & Caches Memory is Critical for Performance - 메모리는 성능에 많은 영향을 미친다. ex) 메모리에서 로드 및 저장 -> 메인메모리나 디렘에서 한다면 매우 오랜 시간이 걸린다. ex2) 캐쉬 미스 - Fine-grained multithreading만 하더라도 매 사이클마다 발생하는 스톨을 줄일 수 있다. - SIMD processors Computation is bottlencked by Memory - 데이터에 인텐시브하고, 큰 데이터에 대해 더 효율적이고 빠르게 처리하길 원한다. - 이를 어떻게 핸들링하냐가 중요해진다. - 데이터도 점차 증가한다. Memory in a Modern System - 캐쉬도 데이터를 들고 있을 수 있는 ..
2022.06.13 -
컴퓨터 구조(11), Multithreading
Multithreading 1. Multithreading Basic - thread: state한 명령어 스트림. state은 레지스터나 메모리에 있다. 쉽게 생각해서 프로그램으로 볼 수 있다. - 쓰레드 컨텍스트는 레지스터에 있는 state를 의미한다. - 그동안은 하나의 쓰레드에서의 동작 처리 방식을 배웠다. - 매우 많은 쓰레드가 처리해서 시스템 성능을 올릴 수 있다. - 동일한 프로그램 내에서도 여러 쓰레드가 있기도 하다. - 포탈 사이트에 접속하면 사용자가 접속할 때마다 쓰레드를 배정해준다. 로컬 컴퓨터에서는 각각의 프로그램으로 이해하면 쉽다. - 프로세서는 쓰레드의 컨텍스트를 명령어를 통해 업데이트해준다. - 레지스터의 개수가 제한되어있기에 쓰레드의 컨텍스트를 업데이트하고 내리고 하는 것을 ..
2022.06.13 -
컴퓨터 구조(10), Super Scalar
Super Scalar Extracting Yet More Performance - Super Pipelining: 파이프라인에서 파이프 스테이지를 늘릴수록, 클락 레이트를 올릴수록 성능이 좋아진다. 클락 레이트는 가장 오래 걸리는 스테이지에 맞춰야한다. 가장 오래걸리는 것을 쪼개는 것이 중요하다. 이에 따라 파이프라인의 깊이를 늘리는 것이 중요하다. - Super Scalar: 한 사이클에 하나보다 더 많은 명령어를 패치하고 실행한다. 매 파이프라인마다 하나가 아닌 여러개의 명령어가 돌아가는 구조를 의미한다. - Super Scalar를 하면 CPI가 1보다 낮아질수도 있다. Instruction pipeline superscalar - 여러개의 명령어를 패치하는 것을 확인할 수 있다. - 연산하는 것..
2022.06.12 -
컴퓨터 구조(9), Control Dependence Handling: Predicated Execution and Loop Unrolling
Control Dependence 1. Predicated Excution - control dependence는 브랜치때문에 발생한다. - 타겟 어드레스를 보고 Backward, Forward를 하는 방법이 있었다. - branch prediction도 사용한다. - 위의 내용을 모두 사용해서 성능을 높이기 위해 노력한다. 이때 control-flow instructions을 제거하는 방법이 있다. 이는 MIPS ISA에는 없다. - ARM은 ISA를 다음과 같이 디자인했다. condition에 4비트를 사용해서 브랜치 명령어를 줄인다. 예제) - 브랜치를 없애고 이를 condition으로 바꿔서 실행할 것인지 말 것인지를 확인한다. 이를 통해 원래는 control 디팬던시가 있었지만 이를 데이터 디팬..
2022.06.11