일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- 최린컴퓨터구조
- UnderstandingDeepLearning
- CGAN
- 컴퓨터구조
- shrinkmatch paper
- CoMatch
- remixmatch paper
- ConMatch
- simclrv2
- Meta Pseudo Labels
- BYOL
- Pix2Pix
- cifar100-c
- CycleGAN
- SSL
- conjugate pseudo label paper
- dcgan
- mme paper
- Entropy Minimization
- mocov3
- 백준 알고리즘
- 딥러닝손실함수
- WGAN
- dann paper
- GAN
- tent paper
- semi supervised learnin 가정
- shrinkmatch
- Pseudo Label
- adamatch paper
- Today
- Total
Hello Computer Vision
비전공생의 컴퓨터 구조 3주차 강의 기록 본문
이번에는 저번 시간에 배운 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
'컴퓨터구조' 카테고리의 다른 글
비전공생의 컴퓨터 구조 5주차 강의 기록 (0) | 2022.11.08 |
---|---|
비전공생의 컴퓨터 구조 4주차 강의 기록 (1) | 2022.11.06 |
레지스터(Register)란? (0) | 2022.11.02 |
컴파일러(Compiler)와 인터프리터(Interpreter) 차이 (0) | 2022.11.02 |
비전공생의 컴퓨터구조 2주차 강의 기록 (0) | 2022.11.02 |