분류 전체보기

CS/HCI 윈도우즈프로그래밍

[Computer Vision] 2. Geometry Primer (1) : Homogeneous Coordinates

Homogeneous CoordinatesR² 을 2차원 실수 공간이라고 하자.R² 에 속하는 하나의 직선은 ax + by + c = 0 을 만족하는, R² 에 속하는 점 (x, y) 의 집합이다.이를 통해 R² 에 속하는 하나의 직선은 (a, b, c) 를 통해 나타낼 수 있다. 이때 l 을 (a, b, c) 라는 3차원 파라미터 벡터라고 하자.그러면 (x, y) 라는 2차원 물리 점은 3D 벡터 (x, y, 1) 로 나타낼 수 있다. ax + by + c = 0 이라는 등식은 (a, b, c) · (x, y 1) 으로 나타낼 수 있다.이때 3차원 실수 공간 R³ 에 속하는 (x, y, 1) 을 2차원 실수 공간 내부의 점 (x, y) 에 대한 homogeneous coordinate 표현이라고 한다...

CS/컴퓨터 네트워크

[컴퓨터 네트워크] 24. Transport Layer (10) : TCP 기능의 진화

TCP, UDP 프로토콜은 40년이 넘은 굉장히 오래된 프로토콜이다.그래서 현대의 인터넷 사용환경과 맞지 않는 부분도 꽤 있다. 예를 들면, 과거에는 무선 인터넷이라는 것이 존재하지 않았지만, 지금은 무선 인터넷이 굉장히 흔하다.이런 새로운 환경의 변화에 의해 새로운 도전과제가 생겼을 때, 어떻게 발전을 해야하는지에 대해 정리해보려고 한다. 1. 대역폭이 매우 큰 데이터 링크매우 넓고 긴 대역폭을 가진 링크는 과거에 불가능했지만, 지금은 가능하다.예로 백본에서 사용하는 급의 링크는 10Gbps 이상의 대역폭을 제공하기도 한다. 그런 상황에서의 문제는 굉장히 많은 패킷들이 in-flight 될 수 있다는 것이다.미국 서부에서 동부 끝까지 데이터를 보내는 상황을 생각해보자.만약 stop-and-wait 프로..

CS/컴퓨터 네트워크

[컴퓨터 네트워크] 23. Transport Layer (9) : TCP Congestion Control (혼잡 제어)

Congestion (혼잡)네트워크에서의 '혼잡' 은 너무 많은 source host (sender) 가 너무 많은 데이터를 너무 빠르게 전송해서 네트워크가 이를 처리할 수 없는 상황을 의미한다.즉, 네트워크 트래픽이 몰려있는 상황, 고속도로에 차가 몰려서 차가 막히는 상황과 같다. 데이터가 몰리면 라우터 버퍼에는 패킷이 계속 쌓이니 queueing 딜레이가 증가하니 데이터 전송 시간이 증가할 수 있고, 심한 경우 라우터의 버퍼가 넘쳐서 패킷 Loss가 발생할 수 있다. 이때 혼잡 제어와 흐름 제어를 구분하면흐름 제어는 1:1 상황(TCP, UDP)에서 너무 많은 데이터를 보내는 것을 제어하여 receiver 의 버퍼가 넘치지 않게 조절하는 것을 말하고혼잡 제어는 다수의 sender가 데이터를 너무 많이..

CS/컴퓨터 구조

[컴퓨터 구조] 18. Pipeline MIPS (2) - Hazard

Pipeline 의 표현 IF, ID, EX, MEM, WB 다섯개 stage를 위 그림과 같이 표현해보자.이제 모든 명령어는 5개 단계를 거쳐야 실행되며, 만약 각 단계를 처리하는데 1cycle이 소모된다면, 총 5사이클을 필요로 한다.얼핏보면 안좋은 것 같지만, 이렇게 하면 1 cycle의 주기를 짧게 가져갈 수 있고, 2번째 명령어부터는 1 cycle만에 명령어를 실행할 수 있기 때문에 전체적인 throughput은 매우 크게 향상된다. 이때 왼쪽 반을 색칠한 것은 '그 단계에서 전반부에 데이터를 쓰는 행위를 한다' 라는 것을 의미한다.반면 오른쪽 반을 색칠한 것은 '그 단계에서 후반부에 데이터를 읽는 행위를 한다' 라는 것을 의미한다.다 색칠한 경우에는 색칠한 자원을 사용하고 있다는 의미이다. 위..

CS/컴퓨터 구조

[컴퓨터 구조] 17. Pipeline MIPS (1) - 기본 아이디어

지금까지 이전 글에서 설계했던 Single Cycle MIPS는 상대적으로 디자인하기는 쉽지만, 성능을 원하는만큼 끌어올리는데 한계가 있다.구체적으로는 Critical Path가 만들어내는 딜레이보다 주기를 짧게 가져갈 수는 없다.그렇다면 어떻게 해야 CPU의 성능을 더 끌어올릴 수 있을까? 제일 직관적인 방법 중 하나는 마이크로 아키텍쳐는 그대로 두고, 아키텍처를 구성하는 트랜지스터의 공정을 개선해서 성능을 끌어올리는 방법이 있다.하지만 이 방법도 결국에는 한계가 있다.트랜지스터가 작아지면 작아질수록 전자의 지름에 가까워지는데, 반도체의 크기를 전자의 지름보다 작게할 순 없기 때문이다. (반도체도 결국 전류의 흐름 == 전자의 이동에 의한 소자이기 때문이다.)따라서 한번 공정이 아닌 아키텍처 개선을 통..

CS/HCI 윈도우즈프로그래밍

[Computer Vision] 1. introduction

Computer Vision컴퓨터 비전은 컴퓨터를 이용하여 시각 기능을 갖는 기계 장치를 만드는 기술 분야를 통칭한다.자율 주행, 수술 로봇, 행성 탐사, 군사 등 다양한 분야에 사용된다. 컴퓨터 비전이 해결하려는 문제는 크게 2가지가 있다. 1. 사람의 시각에 준하는 인공 시각을 만든다. (제약이 없는 상황 (이미지) 를 인식한다.)과학적으로 접근하여 사람 시각의 원리를 밝혀내고 컴퓨터로 모방하려고 한다.뇌 과학의 주요 관심사이며, (지식 표현, 학습, 추론, 창작) 과 같은 인공 지능이 필수적이다. 문제는 사람이 당연하게 2D로 들어오는 시각정보를 보고 3D를 판단하는 것을 기계가 할 수 있게 하는 것이 어렵다.2D 이미지로부터 3D 정보를 추론하는 것을 '역 문제' (Inverse Problem) ..

알고리즘 (PS)/BOJ

[백준] 1661 - 다솜이의 신발가게 (Python)

https://www.acmicpc.net/problem/1661 문제 분류를 봐도 아이디어를 떠올리기 힘들었던 문제분류를 보기 전까지는 자연스럽게 그리디가 계속 떠올랐다. 우선 N이 작기때문에 뭔가 다 해보면 될 것 같다는 생각은 든다.그런데 어떻게 다 해봐야할 지 감이 잘 안온다.이 문제를 풀 때는 한번 예제 입력 1번에 해당하는 케이스를 다 써보면 풀이를 떠올릴 수 있다. 예제 입력에 1번에 있는 물건 3개에 대해서 각각을 사는지 안사는지 경우의 수를 모두 따지면 이렇게 8가지가 나온다.이를 직접 손으로 다 쓰다보면 규칙이 보인다. 어쨌든 할인율은 결국 1, 2, 3 프로중 하나밖에 없다.그리고 최종 할인되는 가격은 어떤 물건을 먼저 사느냐에 상관없이 항상 기존 가격 * 각각의 할인율들의 곱으로 표..

알고리즘 (PS)/BOJ

[백준] 17780 - 새로운 게임 (Python)

요구사항에 맞게 구현하면 되는 문제오랜만에 풀어서 그런지 꽤 어려웠다.. 윷놀이 문제처럼 말을 이동하다가 다른 말을 만나면 쌓아야 하는데, 말을 쌓더라도 자신이 갖고있는 방향은 바뀌면 안된다. class Unit: def __init__(self, number, row, col, direction): self.number = number self.row = row self.col = col self.direction = direction def check_next(self): if self.direction == RIGHT: return self.row, self.col + 1 if self.dire..

CS/컴퓨터 구조

[컴퓨터 구조] 16. Single Cycle MIPS - 성능

Critical Path (임계 경로)Single Cycle MIPS 는 말 그대로 하나의 사이클에 모든 명령어를 처리하는 CPU이다.add 명령어도, branch 명령어도, lw, sw 명령어도 모두 1Cycle에 처리한다. 이때 이 CPU의 성능을 빠르게 하려면 어떻게 할 수 있을까?간단하게 생각할 수 있는 것은 1 Cycle의 주기를 짧게 가져가는 것이다. (주파수를 높이기)그렇다면 단순히 주파수를 높이기만하면 성능도 그에 따라서 높아지기만 할까? 사실은 그렇지않다.왜냐하면 Clock Cycle Time은 Critical Path에 의해 제약을 받기 때문이다.(Critical Path == 명령어를 실행하는데 가장 긴 시간이 걸리는 경로) 현재 설계한 MIPS 회로에서 Critical Path 를 ..

CS/컴퓨터 구조

[컴퓨터 구조] 15. Single Cycle MIPS - Control Unit

Control Unit Single Cycle MIPS 에서 Control Unit은 위와 같은 구조로 되어있다.fetch한 명령어에서 Opcode를 가져와서 해석하는 Main Decoder, Funct 를 가져와서 해석하는 ALU Decoder로 구성된다.(사실 구분하지 않고 한번에 만들도록 구현할 수도 있지만, 이렇게 분리해서 구현할 수도 있다.) Opcode 를 가져오면 이를 통해 가져온 명령어의 타입이 R, I, J 중에 어떤 타입인지 알 수 있다.만약 가져온 명령어의 타입이 R 타입이 아니라면 Funct 필드로서 가져온 데이터는 무시한다. 먼저 Main Decoder가 내보내는 컨트롤 신호의 종류를 복습해보자. 1. MemToReg연산한 결과를 메모리에 쓸 지, 레지스터에 쓸 지 결정하는 플래그..

에버듀
'분류 전체보기' 카테고리의 글 목록 (22 Page)