Hello Computer Vision

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

컴퓨터구조

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

지웅쓰 2022. 11. 4. 21:22

이번에는 저번 시간에 배운 MIPS의 명령어체계를 조금 딥하게 하셨는데요,

최근에 몸상태도 안좋고 Machine 명령어들에 대한 이야기들이 개인적으로 머리가 멍했네요..

그래서 오늘은 100%이해한다기 보다는 가볍게 들었습니다.

 

일단 MIPS가 뭔지 몰랐는데 Microprocessor without Interlocked Pipeline Stages 약자입니다.

MIPS사가 만든 명령어 집합체계라고 합니다.

 

32비트면 32비트의 stages이고 64비트면 64비트의 stages

 

지난 수업에서는 이 Type들만 가볍게 보고 마치셨는데 3주차때는 R-type을 주로 설명을 하셨다.

일단 명령어마다 길이가 다 다르다.(당연하다)

명령어의 타입들은 메모리로부터 명령어를 가져오거나, Arithmetic연산을 수행하거나, 순서를 바꿔주거나  하는 등의 명령어들이 있다.

그렇다면 32비트안에 operation과 operand 0과1의 기계어로 어떻게 다 정의해줄 거냐?

rs : resource start (input이 되는 레지스터 알려준다 ex. 1~32)

rt : resourse target 

rd : resource destination (목적지가 되는 레지스터)

Funct에 연산 및 다양한 명령어들을 넣어준다.

나머지 5비트는 shift용도로 남겨둔다.

이렇게 각각의 stage에 들어가는 코드들은 정의된 표가 있더라고요.

예시로만 가져와봤는데요 타입마다 또 다르다는 것을 알 수 있습니다.
(수업 때 하신말로는 어셈블리어로 프로젝트를 하신다고 하는데 참 어려울 거 같습니다..)

메모리의 주소에 대해서는 다양하고 길게 주면 좋지만 32비트를 넘어서 표현할 수는 없으니 다양한 방식들이 있다.

Base Addressing : 레지스터에 있는 어느 주소를 베이스로 삼고 어떤 값(offset)을 더해서 그것을 주소로 한다
(offset이 0이면 베이스주소를 가져온다) 

이 외에도 Register Addressing, Immediate Addressing, PC relative Addressing, Pseudodirect Addressing등이 있다.

Conditional Branch : MIPS의 조건을 주는 머신 명령어이다.

 

메모리를 다루는 방법들은 회사마다 다 다르다.

MIPS의 메모리 사진입니다.

Text : 명령어들이 저장되는 곳

Static Data : 프로그램 실행할 때 항상 주소가 고정인 것들

Dynamic Data : 임시로 사용하고 반환한다.

 

Procedure call : 다른 공간에서 함수나 procedure을 콜하는 것.

이 과정을 레지스터를 통해서 전해지고 점프와 링크를 동시에 한다고 하네요.

 

 

오늘 강의는 아 정도로 필기하였습니다.

저번주차부터 해서 메모리에 대한 강의가 이어지고 있습니다.

저는 처음에도 그렇고 지금도 그렇고 메모리에 대한 개념이 별로 없기는 합니다.

왜냐면 제가 모델을 훈련시킬 때는 GPU가 Colab에 빌려서 하기 때문에 큰 모델을 훈련시키지 못하기 때문에

별로 신경쓰지 않고 코드를 짜고 그러는데요, 생각해보면 지금은 컴퓨터 사양이 많이 좋아졌지만

옛날에는 지금처럼 사양이 좋지 않을 때 프로그래머들이 메모리와의 싸움을 했다는 이야기를 어디서 들었는데

지금은 참 좋은 환경에서 할 수 있는 거 같습니다.

 

이 강의는 최린 교수님 강의를 필기한 것입니다.

https://www.youtube.com/watch?v=bIz9aIOZTbA&list=PLL3t9Nt4Hrfv-6V3ylNL4N90TztqlSJOe&index=18