일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- dann paper
- conjugate pseudo label paper
- shrinkmatch paper
- Pix2Pix
- simclrv2
- BYOL
- Meta Pseudo Labels
- CycleGAN
- 딥러닝손실함수
- dcgan
- CGAN
- mme paper
- tent paper
- 백준 알고리즘
- shrinkmatch
- 최린컴퓨터구조
- Entropy Minimization
- UnderstandingDeepLearning
- SSL
- WGAN
- GAN
- Pseudo Label
- mocov3
- adamatch paper
- CoMatch
- semi supervised learnin 가정
- cifar100-c
- ConMatch
- remixmatch paper
- 컴퓨터구조
- Today
- Total
목록컴퓨터구조 (19)
Hello Computer Vision
이번 강의에서는 주로 CPU안에서의 연산에 대한 강의가 진행되었는데요, 아무래도 진행하신 교수님, 학생들이 전기전자공학부여서 그런지 회로를 이용하는 수업들이 눈에 띕니다. CPU안에 있는 주소들은 모두 다 가상 메모리이다. -> 우리가 쓰는 주소 모두 가상주소. Shared libraries : 자주 사용하는 것이라면 다이나믹 라이브러리 형태로 만들어 놓는다. 자주 사용되는 것들은 static linker 와 연결되지 않고 dynamic linker 와 연결된다. (아마 다이나믹 라이브러리는 다이나믹 링커와 연결되는, 같은 종류끼리 연결되는 것으로 보입니다) 컴퓨터의 모든 것이 다 logic gate이다. 컴퓨터는 계산기이다. 원래 명칭 : 전자계산기 ALU(Arithmetic Logic Unit) : ..
이번주 과제랑 쪽지 시험이 많이 몰려서 스트레스 받지만 강의를 미루면 계속 한없이 미룰 거 같더라고요... 그래서 간략하게라도 필기를 해보았습니다. 이번 강의에서도 파일과 파일을 합쳐주는 링커의 예시에 대해서 많이 설명해주셨다. 교수님이 거의 3주간에 걸쳐 링커에 대한 강의를 하시고, 예제들을 풀어주시는 거보면은 아주 중요한 역할을 하는 거 같다. 그도 그럴 것이 우리는 항상 라이브러리들을 사용하고 프로그램을 만들 때 많은 파일들을 합치는데 이러한 역할들을 링커가 한다. 우리가 seperation programming 하는 이유는 2가지이다. Modularity, Efficiency 저번 강의에서도 말씀해주셨던 부분이다. 다른 사람의 코드를 재사용하기 쉽게, 그리고 컴파일 할 때 효율성을 증대시킬 수 있..
이번 예비군 일정에 따라 학교를 안가면서 시간 여유가 생겨 바로 강의를 들었습니다. 강의에서는 저번에 설명해주신 Linker에 대해서 예시들을 중심으로 설명하셨는데요, 예시들을 다 따라적는 거보단 최대한 이해하려고 노력해봤습니다. Symbol table은 컴파일러가 확인한다. Object 파일들이 merge하는 과정을 거칠 때 각각의 변수들이나 코드들이 encoding되는데 이러한 것들을 컴파일할 때 고쳐가는 decoding하는 과정을 거친다. 근데 변수가 여러개 있을 경우 오류가 발생하기도 한다.(변수들이 충돌) 모든 심볼들은 링커에 의해 2가지 종류로 나뉘는데 strong symbol : 초기화된 전역변수 weak symbol : 초기화되지 않은 전역변수 이렇게 2가지로 나뉘고 파일을 합치는 과정에서..
이번 강의에서는 링커(Linker)에 대해서 자세히 설명하셨는데요, Linker Object 파일들을 merge 한다, 각 파일들에 대해 메모리 주소를 배치한다.(주소 결정) 컴파일 때의 효율성, 디스크의 효율성, 다른 사람의 파일을 재활용하기 쉽게 해준다(Modularity) 이러한 장점들이 있으며 object 파일들을 연결해서 실행파일을 만드는 컴파일러 드라이버이다. Object 파일은 실행파일이 아닌 머신코드와 데이터 파일이다. 연결되기 전에는 다른 파일에서 참조한 코드들에 대해서는 ?로 되기도 하는데 이러한 것들을 심볼(symbol)이라고 한다. (후에 더 이야기가 나온다.) Object 파일들은 불완전한 조각들이다. 이러한 조각들을 링커를 활용해 연결한다면 실행파일을 만들며 virtual 메모리..
이번 강의 주차에는 MIPS 의 실제 Instruction예시들을 중심으로 강의가 진행되었는데요, 이해되는 선에서 필기를 해보았습니다. main이라는 곳에서 a라는 함수(펑션)를 콜한다면 main : caller(콜러) a : callee(콜리) MIPS에서의 명령어는 jump 와 link를 사용한다. 함수 안에 있는 변수들은 로컬 변수들이며 이를 function scope안에 있다고 한다. 함수를 만약 static data에다 저장한다면 실행하지 않을 때도 메모리를 잡아먹으니 dynamic data에다 저장을 한다. 이러한 작업들은 프로그래머가 하는 것이 아닌 자동으로) 그리고 dynamic이든 static이든 각각 할당된 데이터 양이 있을텐데 이 이상으로 코드가 메모리를 잡아먹는다면 프로그램 실행이 ..
이번에는 저번 시간에 배운 MIPS의 명령어체계를 조금 딥하게 하셨는데요, 최근에 몸상태도 안좋고 Machine 명령어들에 대한 이야기들이 개인적으로 머리가 멍했네요.. 그래서 오늘은 100%이해한다기 보다는 가볍게 들었습니다. 일단 MIPS가 뭔지 몰랐는데 Microprocessor without Interlocked Pipeline Stages 약자입니다. MIPS사가 만든 명령어 집합체계라고 합니다. 32비트면 32비트의 stages이고 64비트면 64비트의 stages 지난 수업에서는 이 Type들만 가볍게 보고 마치셨는데 3주차때는 R-type을 주로 설명을 하셨다. 일단 명령어마다 길이가 다 다르다.(당연하다) 명령어의 타입들은 메모리로부터 명령어를 가져오거나, Arithmetic연산을 수행하..
레지스터는 현재 CPU(프로세서)가 처리하고 있는 데이터를 보유한다. 우리는 매일매일 데이터를 저장하는 과정을 거치는데 이렇게 영구적으로 저장할 데이터는 하드디스크에 저장이 된다. 그리고 임시적으로 저장하는 장소는 메모리(RAM)이다. CPU에서 연산을 하고 이 연산의 결과를 보내고, 영구적으로 저장할 데이터를 하드디스크에 보내는 등의 이러한 명령들과 이들에 대한 주소를 저장할 수 있는 임시저장 기억공간이 필요한데, 이러한 명령들을 아주 빠르게 할 수 있는 것이 CPU옆에 있는 레지스터인 것이다. 공간은 아주 작지만 CPU와 직접적으로 연결되어 있기 때문에 메모리보다 실제 속도가 수십배, 수백배 빠르다. 그리고 CPU에서는 자체적으로 데이터를 저장할 방법이 없고 메모리로 직접 데이터를 전송할 수 없기 때..
지난번 컴퓨터구조 2주차 강의를 듣다가 컴파일러와 인터프리터의 차이를 알 수 있었는데 조금 더 정확하게 알아보기 위해 따로 찾아보고 기록해두려고한다. 두개 모두 우리가 작성한 코드(프로그래밍 언어)를 기계어로 번역해준다는 공통점을 가지고 있다. 본격적으로 알아보기 위해 이미지로 한번 보면 더 이해가 빠를 거 같다. 컴파일러(Compiler) 소스코드 전체를 한번에 번역한 후 실행을 한다. 따라서 코드에 잘못된 부분이 있으면 에러를 발생시키며 프로그램이 실행되지 않는다. (번역하고 실행하는 과정이 한번에 되는 것이 아니라 각각 해주어야한다.) 컴파일러가 성공적으로 코드를 번역하는데 성공하였을 때 다음 차례에 프로그램을 실행할 때는 이미 번역한 코드이므로 컴파일 과정을 다시 거치지 않는다. 하드웨어 종속성이..