목록전체 글 (279)
ecsimsw

Socket - OS에서 제공하는 API의 일종. - SOCK_STREAM (TCP type), SOCK_DGRAM ( UDP type ) Socket process socket function - int socket(int domain, int type, int protocol) : type SOCK_STREAM : TCP , SOCK_DGRAM : UDP : return creadted socket's ID - int accept(int sockfd, struct sockaddr* childaddr, int* addrlen) : sockfd means file description : childaddr struct data includes IpAddr, port number of client ** c..

TCP/IP TCP UDP Reliable O X Flow control O X Congestion control O X Then, when is UDP used? : When don't need to be reliable. When we don't need to pay attention in leaking some packet. (ex, voice talk) * Protocal : Coordinated rule in network communication. Data switching policy - circuit switching : End to End "reserved" for call - packet switching : Data are sent as packets. Circuit switching..

Cache 매번 느린 메인 메모리에서 instruction을 가져오는 것이 아닌 프로세서와 메인 메모리 사이에 위치하여 자주 사용하는 명령어를 더 빠르게 가져올 수 있도록 하는 기술이다. instruction을 fetch할 때, 특히 같은 구간을 반복해서 fetch할 때, memory안 어떤 주소의 데이터(명령어)가 바뀌지 않는다면 메모리에서 바로 명령어를 가져오는 것이 아닌 좀 더 작고 빠른 장치에서 해당 주소에 해당하는 데이터를 기억해 두었다가 꺼내쓸 수 있는 임시 공간을 만들어서 메모리 접근을 줄인다. 고속의 장치는 비싸다. 가격이 비싸거나, 용량이 적거나, 발열이 크다. 다른 조건(가격, 발열)을 동일하게 한다면 고속의 저장 장치는 더 작은 공간을 갖게 된다. 그 말은 즉 모든 메모리의 데이터가 ..

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 : 장애 발생 시 대치할 수 있는 여유분을 둠 컴파일..