목록 분류 전체보기 (299)
Pipelining 기존의 파이프라인을 적용하지 않은 멀티사이클 방식은, 한 명령어를 처리하고 그 이후에나 다음 명령어를 처리시켜 ALU를 사용 시에는 메모리가 쉬고, 메모리를 사용 시에는 ALU가 쉬었다. 즉 명령어의 단계 외의 다른 컴포넌트가 IDLE 상태로 처리를 대기하는 식이었다. 파이프라이닝은 여러 명령어를 중첩하여 명령어 처리 단계를 병렬 실행시키는 기술이다. 한 사이클안에서 여러 명령어를 동시에 처리하여 쉬는 컴포넌트 없이 작업하여 더 효율적인 처리를 가능도록 한다. 위 그림에서의 예시라면 위의 파이프라인을 적용하지 않은 프로세서는 3개의 LW 명령어를 처리하는데 2400ps의 시간을, 아래 파이프파인을 적용한 프로세서는 약 1400의 시간을 사용한다. 이때 3개의 명령어가 아닌, 명령어를 ..
Single-Cycle processor CPU는 내부 회로를 동작시키기 위해 일정한 주기로 규칙적인 전기 신호를 발생시키는데 이를 Clock이라고 한다. 즉 1 clock cycle은 한 번의 전기 신호를 말하고, 한 클럭에 걸리는 시간을 클럭 주기(Clock Period 또는 Clock cycle time)이라고 한다. 싱글 사이클 프로세서는 그 사이클 동안 하나의 명령어를 처리하는 프로세서를 의미한다. Control signal 명령어의 종류에 따라 다음 연산의 인자로 들어가는 값을 달리 해야 한다. 이를 테면 Mips에서 Add와 Addi는 ALU 두 인자를 더하는 연산을 처리하는 것은 같지만, 인자로 들어오는 값이 다르다. Add의 경우에는 R[rs]와 R[rt], Addi의 경우에는 R[rs]..
1. 포인터는 변수이고 배열 명은 상수이다. 포인터는 다른 주소를 가리킬 수 있지만 배열 명은 오직 배열의 시작 주소만을 가리킨다. 2. 포인터로 메모리를 할당하여 동적인 크기의 배열을 선언할 수 있고, 조절할 수 있다. 반면 배열은 정적인 크기로 선언되어 크기가 변할 수 없다. 3. 포인터 변수의 크기는 4바이트 (32비트 컴퓨터), 8바이트 (64비트 컴퓨터) 이지만 배열 명을 sizeof 할 시 배열의 전체 크기를 구할 수 있다. 4. delete, delete[]를 선호해야하는 이유는 크기를 지정하는 것이 더 안전하기 때문과, delete[]을 이용해야 소멸시키는 객체만큼의 소멸자를 호출하기 때문이다. 추가적으로 포인터에 할당한 메모리를 delete 하는 것과 포인터 변수의 값은 관련이 없다. d..
컴퓨터 구조의 8가지 위대한 아이디어 1. Moore : 18~24개월마다 칩에 직접되는 소자의 수가 2배가 된다는 법칙 2. Abstraction : 하위 수준의 구현을 숨김으로 상위 수준의 설계 단순화 3. Common work faster : 자주 생기는 일은 더 빠르게 처리 4. Parallelism : 병렬적으로 작업을 처리하여 선능 개선 5. Pipelining : 프로세서에서 성능을 높이기 위해 명령어 처리를 단계별로 동시에 수행하여 병렬화를 시킴 6. Prediction : 예측으로 미리 일을 수행하는 것이 평균적으로 더 빠른 경우가 있다. 7. Hierarchy of Memories : 메모리에 계층을 둠 8. Dependability : 장애 발생 시 대치할 수 있는 여유분을 둠 컴파일..
- 컴파일 시 바인딩된 (정적 바인딩된) base reference 변수로 오버라이딩한 함수를 호출할 시 당연히 base 클래스의 함수를 호출하게 된다. - 동적 바인딩을 통하여 함수와 함수 정의를 실행 시에 바인딩하도록 할 수 있고, 특정 함수에 대해 동적 바인딩을 사용하고자 할 때 virtual 키워드를 사용할 수 있다. c++ overriding class A { public: void foo(){ cout
베이스 클래스의 객체에 파생 클래스의 객체가 복사되면 베이스 클래스의 프로퍼티 외에 나머지 추가적인 프로퍼피는 저장할 곳이 없어 복사가 불가능하다. 이것을 객체 잘림(object slicing)이라고 한다.
네임 맹글링은 동일한 함수명을 갖는, 오버로딩한 함수들을 함수의 형태와 파라미터 정보로 명칭을 따로 부여하여 구별하기 위한 매커니즘이다. @