목록분류 전체보기 (277)
ecsimsw
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/cGqvop/btqwxSLw2Dz/Ilsv7OHIBLzwW5YAsYe5e0/img.png)
Cache 매번 느린 메인 메모리에서 instruction을 가져오는 것이 아닌 프로세서와 메인 메모리 사이에 위치하여 자주 사용하는 명령어를 더 빠르게 가져올 수 있도록 하는 기술이다. instruction을 fetch할 때, 특히 같은 구간을 반복해서 fetch할 때, memory안 어떤 주소의 데이터(명령어)가 바뀌지 않는다면 메모리에서 바로 명령어를 가져오는 것이 아닌 좀 더 작고 빠른 장치에서 해당 주소에 해당하는 데이터를 기억해 두었다가 꺼내쓸 수 있는 임시 공간을 만들어서 메모리 접근을 줄인다. 고속의 장치는 비싸다. 가격이 비싸거나, 용량이 적거나, 발열이 크다. 다른 조건(가격, 발열)을 동일하게 한다면 고속의 저장 장치는 더 작은 공간을 갖게 된다. 그 말은 즉 모든 메모리의 데이터가 ..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/n8LTo/btqwrRyW8ce/x0z37wPBRkn1Dugr5T3A8k/img.png)
Pipelining 기존의 파이프라인을 적용하지 않은 멀티사이클 방식은, 한 명령어를 처리하고 그 이후에나 다음 명령어를 처리시켜 ALU를 사용 시에는 메모리가 쉬고, 메모리를 사용 시에는 ALU가 쉬었다. 즉 명령어의 단계 외의 다른 컴포넌트가 IDLE 상태로 처리를 대기하는 식이었다. 파이프라이닝은 여러 명령어를 중첩하여 명령어 처리 단계를 병렬 실행시키는 기술이다. 한 사이클안에서 여러 명령어를 동시에 처리하여 쉬는 컴포넌트 없이 작업하여 더 효율적인 처리를 가능도록 한다. 위 그림에서의 예시라면 위의 파이프라인을 적용하지 않은 프로세서는 3개의 LW 명령어를 처리하는데 2400ps의 시간을, 아래 파이프파인을 적용한 프로세서는 약 1400의 시간을 사용한다. 이때 3개의 명령어가 아닌, 명령어를 ..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/DH8er/btqwq5v8OWj/2pUAMksrk4KTIm6dYF80OK/img.png)
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