목록공부한거 (73)
눈팅하는 게임개발자 블로그
Hazard 명령어 파이프라인이 정상적인 동작에서 벗어나게 되는 요인 Structual Hazard 자원 충돌이 원인이 되어 발생하는 Hazard. 두 세그먼트(파이프라인 공정)가 동시에 하나의 메모리에 접근할 때 발생. 위의 예시에서는 MEM Step과 IF Step이 같은 메모리를 공유하는 경우 i + 3에서 IF가 해당 메모리에 액세스하려 했으나 이전의 MEM이 사용하고 있었으므로 한 Clock이 밀리게 된다. 해결 방법 - 하드웨어 자원의 복제/분리. - 명령어 메모리와 데이터 메모리를 분리. - 메모리나 레지스터의 입출력 버스를 분리. Data Hazard 데이터 의존성이 원인이 되어 발생하는 Hazard. 특정 명령어가 이전 명령어의 결과에 의존하여 수행되는데, 그 값이 아직 준비되지 않았을 ..
컴파일 된 소스 코드로 실행 파일 한 줄 한 줄의 명령어를 Instruction이라 한다. 프로그램을 실행한다 함은 프로그램 안에 있는 여러 Instruction을 차례대로 수행하는 것을 의미한다. Instruction은 크게 3종류로 구분된다. Memory-reference Instruction : 메모리를 참조하는 명령어 Register-reference Instruction : 메모리를 참조하지 않고 현재 레지스터의 값으로만 연산하는 명령어 I/O Instruction : 입출력과 관련된 명령어. Instruction Code (명령어) Instruction Code는 세 부분으로 나뉜다. Operation Code Field : 어떤 Operation을 수행할 것인가를 나타내는 부분. Addres..
Register CPU가 연산을 하기 위해 필요한 데이터를 저장하는 CPU 내부의 수십 개의 작은 저장 장소. 컴퓨터의 처리장치 중 속도가 가장 빠르다. (레지스터 > 캐시 > 메모리 > 보조기억장치 순) n개의 Filp/Flip으로 구성되어 있는데 예를 들면 32비트 레지스터는 32개의 Flip/Flop으로 구성된다. Word의 비트에 따라 연산을 수행한다. CPU 내부의 주요 레지스터로는 MAR, PC, IR 등이 있다. MAR(Memory Address Register) : 메모리의 주소를 저장하는 레지스터 PC(Program Counter) : 다음에 수행될 명령어의 위치를 저장하는 레지스터 IR(Instruction Register) : 현재 수행중인 명령어를 저장하는 레지스터 AC(Accumu..
08/11 집 데스크탑에서 적당히 기능구현을 완료하고 빌드를 했으나 이전까지 잘 되던 ILL2CPP빌드가 폰에서 실행직후 Unity로고가 뜨기도 전에 크래쉬나서 종료되는 현상이 발생. 지난번까지의 빌드까지와의 차이점은 유니티관련해선 건드린 것이 없었기 때문에 프로젝트 내부에서해결하려고 삽질을 3시간정도 했는데. - 빌드시에 필요없는 에셋들을 제거해주는 기능을 끄고 - 그래픽 설정에서 UI default font를 추가해주고. - 타겟 빌드를 25로 맞춰서 빌드하는 폰 사양에도 맞춰보고 등등. 그리고 프로젝트 외부를 건드려본 삽질은 - 프로젝트에 문제가 있나 싶어서 다른 프로젝트로 빌드를 돌려봤음. - 다른 프로젝트도 문제가 있길래 아예 새로운 프로젝트를 만들어서 돌려봤음. - 깃헙에 백업해둔 지난 프로젝..
#include #include using namespace std; #define SWAP(x,y,z) z = x, x = y, y = z; int line[1001][1001]; int visited[1001]; class queq { private: int arr[1000]; int *_front; int *_back; int size; void bubble_swap() { int temp = -1; for (int i = 0; i < size; i++) { SWAP(arr[i], arr[i + 1], temp); } } void renew() { if (size == 0) { _front = nullptr; _back = nullptr; } else { _back = arr + size - 1; ..
#include using namespace std; #define SWAP(x,y,z) z = x, x = y, y = z; class documentary { private: int priority; bool target; public: documentary() { priority = 0; target = false; } documentary(int p, bool t) { priority = p; target = t; } void set_priority(int p) { priority = p; } int get_priority() { return priority; } void set_target(bool t) { target = t; } bool get_target() { return target; ..
#include #include #include using namespace std; bool arr[10001]; int minone(vector v,int n) { vector v1; int temp; for (int i = 0; i v1[i]) { mi = v1[i]; ind = i; } } return v[ind]; } int main() { memset(arr, 1, sizeof(arr)); vecto..
#include #include #include #include #include using namespace std; int frequent(int b[], int N) { int max = 0; vector v; for (int i = 4000; i >= 0; i--) { if (max < b[i]) { max = b[i]; v.clear(); v.push_back(i*(-1)); } else if (max == b[i]) { v.push_back(i*(-1)); } } for (int i = 4001; i < 8001; i++) { if (max < b[i]) { max = b[i]; v.clear(); v.push_back(i - 4000); } else if (max == b[i]) { v.pus..
#include #include using namespace std; int main() { int N; cin >> N; int count[10001]; memset(&count[0], 0, 10001*4); int num; for (int i = 0; i > num; count[num]++; } for (int i = 0; i < 10001; i++) { for (int j = 0; j < count[i]; j++) { cout