Hello Computer Vision

비전공생의 컴퓨터구조 13주차 강의 기록 본문

컴퓨터구조

비전공생의 컴퓨터구조 13주차 강의 기록

지웅쓰 2022. 11. 30. 00:48

이번 강의에서는 지난 강의 때 이야기했던 branch 명령어에 대한 내용들이 연결됩니다.

 

제가 branch가 잘 몰라서 한번 찾아보니

branch를 쓰는 이유 : 이동하기 위해서

PC 레지스터가 동작을 하며 이동하다가 branch명령어를 만난다면 조건에 따라 이동

이렇게 가볍게 이해하였습니다.

 

branch prediction

명령어의 주소만 보고 어디로 갈지 결정을 내린다 

예측하는 이유 : 다음 명령어를 미리 예측해 더 빨리 패치하기 위해서. 틀리면 다시 돌아가서 반복

branch 명령어의 종류 : direct, indirect, conditional, unconditional

80%가 conditional branch이다.

 

컴파일러는 파일을 translate하는 것뿐만 아니라 실행도 한번씩 해본다

--> 컴파일러의 성능에 따라 프로그램의 효율도 달라진다

 

superscalar processor

90년대의 processor의 목표 : 한번에 fetch, decoding많이 해 cycle을 줄이는 것

--> IPC의 성능을 높이는 것

최근에는 많게는 12개씩의 명령어들을 처리한다 -> superscalar

 

inorder pipeline

앞에 막혀있으면 뒤에 명령어들은 대기한다

our of order pipeline

앞에 막혀있으면 대기하지 않고 가로지른다

available 한 것부터 읽어 백엔드로 보낸다 --> dynamic scheduling

 

캐시

메모리는 느리다. CPU에서 DRAM에 있는 것을 가져오려면 최소 200cycle 을 돌아야한다.

따라서 DRAM에서 한번 가져오면 캐쉬에다 두고 재활용한다.

 

scoreboarding

하드웨어가 scoreboard를 사용한다.

bit로 0이면 읽을 수 있고, 1이면 읽을 수 없도록 상태를 나타낸다.

어디선가 쓰고있으면 (1) 보내지 않고 누군가 쓰지 않고 있으면(0) 보낸다.

 

Tomasulo algorithm

scoreboading보다 우수하며 현재는 이 알고리즘을 응용해서 처리한다.

3가지 아이디어를 활용한다.

reservation station : 분산된 execution을 사용한다 > scalable

중앙화 된다면 활용도는 높지만 그 크기가 커지므로 한번 찾을 때 시간이 걸린다.

register renaming : 미리 읽을 수 있는건 미리 읽어서 reservation station에 저장

data forwarding using common data bus

버스 모니터링 하다가 매치되면 가져온다

 

 

점차 시간이 갈수록 나태해 지는 거 같습니다..

교수님이 수업 중간에 하신 말씀한번 적어보자면

 

복잡한 것도 작은 요소 하나하나 자기 것으로 이해한다면 쉽게 이해할 수 있다.

 

이러한 과정에서 복잡한 것을 이해해도 끝이 아닌 다시 또 다른 복잡한 것을 이해해야 하는 상황이고

끝없이 공부해야한다는 것이 재밌기도 하지만 최근처럼 심적으로 힘드니 많이 흔들리네요..

그래도 현재 공부가 재밌고 이미 한번 시작한 공부 끝까지 해보고 싶습니다.

 

해당 강의는 최린교수님의 강의를 듣고 필기한 것입니다.

https://www.youtube.com/watch?v=Ot3N3OcmgVU