1. Byte Addressable Memory 바이트 단위로 주소를 부여하는 게 가능한 메모리

Untitled

대부분의 아키텍쳐들의 메모리 주소는 워드가 아닌 바이트단위임! 씨언어 같은 거 생각해 봐도, 캐릭터는 1바이트, 2바이트짜리도 있고,, 1바이트가 보통 최소 단위인 경우가 많아서, 걔네를 메모리에 저장(쓰기)하고 불러오기(리드) 위해서는 메모리 주소 체계가 바이트 단위로 되어 있는 것이 좋음.

  1. 캐쉬 성능을 높이기 위한 것들(캐쉬 성능을 측정하는 기준들)

    Untitled

하나는 miss 가 나는 비율을 줄이는 거 (메모리 접근 횟수를 줄이기 위해) 다른 하나는 miss 가 났을 때 메모리에 접근하면서 손실되는 시간을 줄이는 거(미스 페널티 줄이기) 즉, 미스 레이트를 줄이거나 미스 페널티를 줄이면 캐시 메모리 성능을 향상시키게 됨. 이때 첫번째 경우 즉 미스 레이트를 줄이려면 에빅션이 적게 나면 되겠지? 두 번째로 미스 페널티를 줄이려면 멀티레벨 캐싱이라는 것을 하면 됨. 그니까 캐시를 여러 계층으로 또 나누는 거지.L1 에 없으면 L2 에서 가져오는 식으로 할 구 있음. (Multilevel caching)

  1. 캐시 성능 구하기

Untitled

얘도 결국, 메모리를 읽고 쓰는 과정이므로 CPU 시간으로 성능을 측정하게 됨. 원래는 메모리 접근 시간을 생각하지 않고, CPI 만 고려했는데 ????이제는 Memory-stall clock cycles 와 Cpu execution clock cycle 을 합친 cycle 의 개수를 Clock cycle time 과 곱해서 그 값을 구하게 됨.

메모리 스톨 클락 사이클의 총 개수는, 리드 스톨 클락 사이클 + 라이트 스톨 클락 사이클의 합으로 이루어져 있음. 읽을 때랑 쓸 때랑 클락 사이클의 개수가 다르니까 당연한 말.

리드 스톨 클락 사이클의 개수는


Untitled

4단원에서 배우는 거 = 프로세서! CPU 에 대해서 배우는 거고,

Data path 만드는 법, Pipeline, Hazard 에 대해서 배우는데 Hazard 에는 3종류가 있다! Structural Hazard, Data Hazard, Control Hazard!

Untitled

이번 단원 목표는 그 3가지. Data path, pipeline, hazards 알면 되고, 끝났을 때 RISC-V 라는 프로세서를 위한 데이터 패스를 만들 줄 알고, 파이프라인 방식을 썼을 때 퍼포먼스상의 이점을 얘기할 수 있으면 됨

Untitled

일단 본격적으로 진행 하기 전에, 파이프라이닝 기법으로 프로세서의 성능 높인다 햇으니까, 어떤 부분이 cpu 퍼포먼스에 영향을 줘서 어떤 부분을 어떻게 개선시켰는지 알아야겠지? cpu 성능은 두 가지에 의해서 결정 돼. 1. Instruction 의 개수 2. CPI 즉 instruction 1개 당 cycle 의 개수와 cycle time. 그니까 결국 명령어 개수랑, 그 명렁어 하나당 필요한 사이클의 개수, 사이클 1개당 시간이 cpu 의 계산 속도를 결정 짓는 요소들이고, 그것들이 적으면 적을수록 성능이 빨라지겠지. 이때 명령어 개수는, 코딩 레벨에서 결정되는 거고, ISA 는 하드웨어와 소프트웨어 사이의 인터페이스로, 소프트웨어의 말을 하드웨어 언어로 번역해주는 번역기쯤으로 보면 되는데, 같은 말도 영어로 전달할 때와 한국어로 전달할 때 차이가 있는 것처럼, ISA 가 무엇이냐에 따라 명령어의 개수가 달라질 수 있음. 무튼 그렇고 CPI 랑 cycle time 은 CPU 하드웨어에 의해서 결정이 된다. cycle 과 관련된 거는 하드웨어랑 관련된 듯

RISC - V 라는 프로세서를 파이프라이닝을 하지 않았을 때랑, 파이프라이닝을 했을 때 (파이프라이닝을 한 쪽이 실제랑은 더 가까움) 를 비교!