CPU, GPU 차이 간략하게 정리

 

1-0

CPU 

컴퓨터에서 발생하는 전반적인 연산을 담당하며 뛰어난 기억력을 가지고 있다. 

쉽게 말해 고급 인력이라고 생각하면 된다. ALU가 산술 연산을 담당하는 부분인데 1-0 이미지를 보면

CPU는 ALU가 상대적으로 많지 않다는 걸 알 수 있다. 

 

GPU

CPU에 비해 압도적으로 ALU가 많은 것을 확인할 수 있고 복잡하지 않은 연산을 빠르게 처리해준다.

좀 더 정확히 얘기하면 GPU는 연관성이 없는 독립적인 연산을 처리할 때 유용하다.

대표적으로 암호학이나 비트코인 채굴, 인공지능 같은 경우가 연관성이 없는 독립적인 연산이다.

 


게임 측면에서 생각해보자면 기본적으로 게임 안에 각각의 물체들은 서로에게 영향을 주지 않는다.

(물론 예외적인 상황이 많다.) 그렇기 때문에 물체의 좌표 같은 걸 계산하는 독립적인 연산을 GPU에게

넘기게 되고 GPU는 해당 연산을 받아서 병렬적으로 처리하게 된다.

 

 이러한 GPU는 3D 가상 세계에서 우리가 보는 모니터에 결과물을 출력해주기 위한 연산을 많이 하게 되며

해당 일련의 과정들을 '랜더링 파이프라인'이라고 한다.

 

랜더링 파이프라인에 관해서는 다음에 자세히 공부하겠다.

변수명 등을 한 번에 수정하기

1-0

1-0 이미지와 같이 수정하고 싶은 변수명을 선택하고 

Ctrl + r + r을 누르면 한 번에 수정할 수 있다.


한 번에 주석 처리 하기

원하는 범위만큼 드래그를 하고 

Ctrl + k + c를 누르면 한 번에 주석 처리가 가능하다.


헤더 파일에서 함수 등을 선언한 후, 빠르게 구현부 만들기

헤더파일 내에 선언한 함수 등에 커서를 올려놓고 

Ctrl+.(점)을 누르면 cpp 파일내에 구현부 선언이 자동으로 채워짐


 

출처 - https://ko.wikipedia.org/wiki/ASCII

16진수 (0 1 2 3 4 5 6 7 8 9 A B C D E F)

0x00, 0x01 > 16진수를 표현할 때 0x를 붙여준다.

 

2진수 (0 1)

0b0, 0b1, 0b10 > 2진수를 표현할 때 0b를 붙여준다.

 

0b11011110 > 16진수로 쉽게 바꾸기

 

우선 2진수를 네자리씩 끊어준다

0b11011110 > 0b 1101 1110 

각 자리에 숫자를 16진수로 표현해주기만 하면 된다. 

1101(BIN) = 13(DEC) = D(HEX)

1110(BIN) = 14(DEC) = E(HEX)

 

0b11011110 = 222 = 0xDE

 컴퓨터는 0과 1로 이루어져 있는 비트라는 개념을 사용해 모든 것들 표현합니다.

이러한 컴퓨터는 n개의 비트를 이용해 2^n개의 정수를 표현할 수 있습니다. 정수에는 양의 정수와 음의 정수가 있는데 컴퓨터는 음수 또한 비트로 표현하는데 이때 사용하는 것이 보수라는 개념입니다. 보수는 컴퓨터에서 음의 정수를 표현하기 위해서 고안됐습니다. 


 보수란? - 두 수의 합이 진법의 밑수(n)가 되게 하는 수를 말합니다. 

예를 들어 2진수 1110의 1의 보수는 0001이고,

2진수 0110의 1의 보수는 1001입니다.

컴퓨터 내부에서 사칙연산을 할 때 뺄셈은 덧셈으로 형식을 변환하여 계산합니다. 

바로 보수를 이용해서 a - b를 계산할 때 b의 보수(-b)를 구한 다음 a + (-b)로 계산합니다.

 

 1의 보수 - 각 자릿수의 값이 모두 1인 수에서 주어진 2진수를 뺀다.

2진수 0001의 1의 보수는 1110이다.

2진수 1111의 1의 보수는 0000이다.

 

 2의 보수 - 1의 보수에서 1을 더한 것입니다.

2진수 0001의 1의 보수는 1110이고, 여기서 1을 더하면 1111(2의 보수)이다.

2진수 1111의 1의 보수는 0000이고, 여기서 1을 더하면 0001(2의 보수)이다.


 1의 보수를 이용한 뺄셈 : 빼는 수의 1의 보수를 구한 다음 더합니다. 덧셈한 결과가 최상위 비트에서 자리올림이 생겼다면 최하위 비트에 1을 더하고, 자리올림이 생기지 않았다면 연산 결과에 대해 1의 보수를 구한 후 ' - ' 부호를 붙입니다.

 

밑에 계산식에서 2진수 옆에 괄호 안에 숫자는 10진수이다.

2진수 ) 100(4) - 011(3) > 100 + 100 = 1000 / 최상위 비트에서 자리올림이 생겼기 때문에 최상위 비트는 지우고 최하위 비트에 1을 더한 값이 답이다. 즉, 답은 001(1)

 

2진수 ) 100(4) - 111(7) > 100 + 000 = 100 / 자리올림이 생기지 않았기 때문에 100에 대해서 1의 보수를 구한 후 - 부호를 붙인다. 즉, 답은 011(-3)

 

 2의 보수를 이용한 뺄셈 : 1의 보수와 크게 다르지 않다. 빼는 수의 2의 보수를 구한 다음 더합니다. 덧셈한 결과가 최상위 비트에서 자리올림이 생겼다면 최상위 비트를 제외한 나머지 부분이 결과값이고, 자리올림이 생기지 않았다면 결과값에 2의 보수를 구한 후 ' - ' 부호를 붙입니다.

 

밑에 계산식에서 2진수 옆에 괄호안에 숫자는 10진수이다.

2진수 ) 100(4) - 011(3) > 100 + 101 = 1001 / 최상위 비트에서 자리올림이 생겼기 때문에 최상위 비트는 지우고 나머지 값이 답이다. 즉, 답은 001(1)

 

2진수 ) 100(4) - 111(7) > 100 + 001 = 101 / 자리올림이 생기지 않았기 때문에 101에 대해서 2의 보수를 구한 후 - 부호를 붙인다. 즉, 답은 011(-3)

 

2의 보수는 1의 보수와 달리 음의 정수를 하나 더 표현할 수 있어서 효율적입니다. 그래서 대부분의 컴퓨터에서는 2의 보수 방식을 사용합니다.

+ Recent posts