* 자료구조의 operation
- insert
- search
- delete

-배열의 정의 : 연속된 주소에 "같은 type"의 data item에 저장되는 자료구조.

-배열의 (유일한) 장점 : K번째 item을 상수 시간에 접근 가능.
-배열의 단점 : 크기변경이 어렵다.

-배열의 4가지 사용방법
1. Packed Sorted
2. Unpacked Sorted
3. Packed Unsorted
4. Unpacked Unsorted
-용도에 따라 4가지를 구별해서 쓴다. 각각 operation 성능이 조금씩 다르다.

- Binary search의 성능 : O(log n)


'학부 전공 > 자료구조' 카테고리의 다른 글

Hash Table, Radix, Binary Trie  (0) 2010.06.15
10. 탐색구조  (0) 2010.06.15
5. Tree  (0) 2010.06.08
4. Linked List  (0) 2010.06.07
3. Stack / Queue  (0) 2010.06.07


5.1 기억장치 시스템의 특성들

-액세스 : CPU가 어떤 정보를 기억장치에 쓰거나 기억장치로부터 읽는 동작.

 *기억장치의 엑세스 유형들
 -순차적 액세스 : 기억장치에 저장된 정보들을 처음부터 순서대로 액세스한다.
 -직접 액세스 : 읽기/쓰기 메카니즘이 각 레코드나 블록의 근처로 직접 이동한 후에 순차적 검색을 통하여 최종 위치에 도달한다.
 -임의 액세스 : 기억장치 내의 모든 저장 위치들이 고유의 주소를 가지고 있어서 별도의 읽기/쓰기 메카니즘을 가지고 있다.
 -연관 액세스 : 각 기억장소에 키값에 해당하는 비트들과 데이터가 함께 저장되어 있어서 액세스 요구에 포함되어 있는 비트 패턴과 기억장소의 키 비트를 비교하여 일치하는 기억장소의 데이터가 읽혀진다.(특수한 용도로만 사용)


 *기억장치 시스템을 설계하는 데 있어서 고려해야 할 주요 특성 : 용량, 액세스 속도

 1. 용량
-기억장치에서 용량을 나타내는 단위 : 바이트 또는 단어(=CPU가 내부 연산에서 한 번에 처리할 수 있는 데이터 비트의 수)
-전송 단위 : CPU가 한 번의 기억장치 액세스에 의하여 읽거나 쓸 수 있는 비트 수.
-내부 기억장치에서는 전송 단위가 기억장치 모듈로 들어가고 나오는 데이터 선들의 수(버스의 폭)와 같다.
-주소 지정 단위는 보통 워드이지만 더 작은 바이트 단위를 사용하는 경우도 있음.

 2. 액세스 속도
-액세스 시간 : 주소와 읽기/쓰기 신호가 기억장치에 도착하는 순간부터 데이터가 저장되거나 읽혀지는 동작이 완료되는 순간까지의 시간.
-사이클 시간 : 액세스 시간과 데이터 복원 시간을 합친 시간. 데이터를 읽은 후에 내용이 지워지는 기억장치에만 해당한다.
-데이터 전송률 : 기억장치로부터 읽혀지거나 쓰여질수 있는 초당 비트 수를 말한다. 액세스 시간의 역수에 한번에 읽혀지는 데이터 비트 수를 곱해서 구한다.


 *기억장치의 유형
1. 물리적인 재료에 의한 분류 : 반도체 기억장치, 자기-표면 기억장치
2. 데이터를 저장하는 성질에 이ㅡ한 분류 : 휘발성 기억장치, 비 휘발성 기억장치.


5.2 기억장치 계층

-컴퓨터 기억장치 설계에 있어서 가장 중요한 요소들 : 용량, 속도, 가격
 
 *특성들 간의 상관관계
-액세스 속도가 높아질수록, 비트 당 가격도 높아진다.
-용량이 커질수록, 비트당 가격은 낮아진다.
-용량이 커질수록, 액세스 속도는 낮아진다.

-위와 같은 어려움을 해결하기 위하여 여러 종류의 기억장치들을 이용하여 계층적 기억장치 시스템을 구성한다.

-계층적 구조에서는 하위 레벨로 갈수록 비트당 가격이 감소, 용량 증가, 접근 시간이 증가, 접근빈도가 감소한다.

 *성능 향상
-적중률 : 접근하고자 하는 데이터가 그 레벨에 있을 확률.
- 1레벨의 접근 시간 T1, 2레벨의 접근시간 T2, 첫 레벨의 적중률이 H이면, 평균접근시간 T는 다음과 같다.
 T = H * T1 + (1-H)*(T1+T2) = T1 + (1-H)*T2
- 적중률이 100%에 가까워질수록 평균접근시간은 1레벨의 접근시간에 가까워진다.

-캐쉬 기억장치 : 주기억장치와 CPU의 속도차이로 인한 성능저하를 줄이기 위해 설치하는 고속의 반도체 기억장치

-참조의 지역성 : 기억장치의 액세스가 몇몇 특정 영역에 집중되는 현상
-프로그램이 실행되는 동안에 일반적으로 지역성의 원리에 의하여 첫 번째 계층의 기억장치에 대한 액세스 횟수가 두번째 계층의 기억장치에 대한 액세스보다 훨씬 더 많음
-지역성의 원리가 적용되면 높은 성능 향상을 얻을 수 있음.



5.3 반도체 기억장치

- 반도체 기억장치의 기본 요소는 기억장치 셀(memory cell)
 * 셀의 특징
-두 개의 안정된 상태(Write,Read)를 가진다.
-상태를 설정할 수 있다.
-현재 상태를 감지할 수 있다.
-선택,제어,입출력 단자를 가지고 있다.


5.3.1 RAM

-RAM(Random  Access Memory) : 임의 액세스 방식을 이용하는 반도체 집적회로 기억장치.
-칩 내의 어느 위치에 있든, 액세스에 걸리는 시간이 같다.
-데이터를 읽는 것과 쓰는 것이 모두 가능하다.
-휘발성(volatile)이다. 즉, 전원 공급이 중단되면 데이터가 소실된다. 따라서 일시적 저장장치로 사용된다.
-칩 선택(CS), 읽기(RD), 쓰기(WR) 신호들과 주소 버스(AD0~9)와 데이터버스가 있다.

-RAM은 제조기술에 따라 DRAM과 SRAM으로 분류된다.
-DRAM(Dynamic RAM) : capacitor에 전하를 충전하는 방식으로 데이터를 저장하는 기억 소자들로 이루어져 있다. capacitor가 방전하는 성질이 있기 때문에 주기적으로 재충전이 필요하다. 
-SRAM(Static RAM) : 기억소자로서 플립-플럽을 이용한다. 재충전이 필요없다. 

-DRAM의 소자가 SRAM의 소자보다 더 작다. 따라서 단위 면적당 더 많은 소자들을 집적시킬 수 있으므로 밀도가 더 높고, 같은 용량의 SRAM보다 가격이 싸다. 다만 재충전시간이 필요하기 때문에 약간 느리다.
-DRAM은 용량이 큰 주기억장치로 많이 사용되고, SRAM은 높은 속도가 필요한 캐쉬 기억장치로 사용된다.

 * 기억장치 설계
-예) 16Mbit DRAM 칩의 조직
1M X 16 비트로 구성 : 1M개의 16비트 워드로 구성. 하나의 칩으로 16비트 처리 가능. 1M개의 칩으로 구성.
4M X 4 비트로 구성 : 4M개의 4비트 워드로 구성. 하나의 칩으로 4비트 처리 가능. 4M개의 칩으로 구성.
16M X 1 비트로 구성 : 16M개의 1비트 워드로 구성. 하나의 칩으로 1비트 처리 가능. 16M개의 칩으로 구성.

-1K개의 칩은 10비트의 주소버스 필요.(1M개의 칩은 20비트)


5.3.2 ROM

-ROM(Read Only Memory) : 영구 저장이 가능한 반도체 기억장치. 읽는 것만 가능하고 쓰는 것은 불가능하다. 
-시스템 초기화 프로그램, 진단 프로그램, 자주 사용되는 함수들을 위한 서브루틴들, 제어 유니트의 마이크로 프로그램등에 사용된다.

-PROM(Programmable ROM) : 제조과정에서 기록하지 않고 나중에 전자적으로 기록한다. ROM보다 저렴하다.
-EPROM(Erasable Programmable ROM) : 쓰기 연산을 수행하기 전에 자외선을 이용하여 데이터를 전부 지우는 과정이 필요하다. PROM보다 비싸다.
-EEPROM(Electrically Erasable ROM) : 쓰기 전에 데이터를 지울 필요가 없다. 바이트 단위의 쓰기가 가능하다. 쓰기 연상에 많은 비용이 소요된다. 가격이 더 비싸다.
-플래쉬 기억장치 : 가격과 기능면에서 EPROM과 EEPROM의 중간 정도. 쓰기 전에 기존 데이터를 지워야 하지만 EPROM보다 훨씬 빠르게 지울 수 있다. 블럭 단위로 지우고 쓸 수 있다. 집적 밀도가 높다.


'학부 전공 > 컴퓨터구조' 카테고리의 다른 글

4. 제어 유니트  (3) 2010.04.29
rcv : receiver
app : application

3.1 트랜스포트 계층 서비스와 원리

- 트랜스포트 계층 프로토콜은 서로 다른 호스트들 상에서 동작하는 응용 프로세스들 사이에 논리적 통신(logical communication)을 제공한다.

-송신 측(send side)에서는 응용 계층으로부터 온 메세지를 세그먼트(segment)로 쪼갠(break) 다음, 헤더를 추가하여 네트워크 계층으로 보낸다.
-수신 측(rcv side)에서는 네트워크 계층으로부터 온 세그먼트(segment)를 재조립(reassemble)한 뒤 헤더를 제거하여 응용 계층으로 보낸다.

-인터넷에서 app은 TCP와 UDP, 두 가지 프로토콜을 사용할 수 있다.

3.1.1 트랜스포트 계층과 네트워크 계충 사이의 관계

-트랜스포트 계층 프로토콜이 서로 다른 호스트들 상에서 동작하고 있는 프로세스들 사이의 논리적 통신을 제공하는 반면, 네트워크 계층 프로토콜은 호스트들 사이의 논리적 통신을 제공한다.

-비유를 하자면, 멀리 떨어진 두 집에 아이들이 반대편 집의 아이들과 편지를 주고 받을 때를 가정하자. 각각의 집에서는 편지를 모아서 우체통에 넣는 일을 하는 아이가 한 명씩 있다. 아이들을 편지를 그 일을 맡은 아이에게 주고, 편지를 모은 아이는 그 편지를 우체통에 넣어 보내고, 우체국에서 오는 반대편 집에서 보낸 편지를 가져와 아이들에게 나누어주는 일을 한다.
집을 호스트, 아이들을 프로세스라고 하고 편지를 메세지라고 한다면, 우편 당번은 트랜스포트 계층이고, 우체국은 네트워크 계층이라고 할 수 있다.

3.1.2 인터넷에서의 트랜스포트 계층

-트랜스포트 계층은 비신뢰적(unliable)이고, 비연결형(unorder) 서비스를 제공하는 UDP와 신뢰적(liable)이고, 연결형(inorder)서비스를 제공하는 TCP를 제공한다.

-네트워크 계층 프로토콜은 IP(internet protocol)인데, IP는 호스트들간에 논리적 통신을 제공하는 최선형(Best-effort) 전달 서비스이다. IP는 세그먼트를 전달하기 위해 최선의 노력을 하지만 어떠한 보장(데이터의 무결성이나 세그먼트의 순서 보장)도 하지 않는다.

-TCP와 UDP의 가장 기본적인 기능은 IP전달 서비스를 두 프로세스들 간의 전달 서비스로 확장하는 것이다. 이 것을 다중화(Multiplexing)와 역다중화(demultiplexing)라고 한다. 

-UDP는 헤더에 오류 검출을 포함함으로써 무결성 검사를 제공한다.

-TCP는 무결성 검사 뿐만이 아니라 흐름제어(flow control)와 혼잡제어(congestion control), 순서번호/확인응답/타이머 등을 사용함으로써 데이터의 신뢰적인 전송을 제공한다.

-TCP 혼잡 제어(congestion control)은 app에 제공되는 서비스이다. 각각의 TCP연결이 링크의 대역폭을 공평하게 공유하도록 한다. 이것은 과도한 양의 트래픽으로 링크가 폭주하는 것을 방지한다.


3.2 다중화와 역다중화

-여러 app 프로세스로부터 데이터를 받아 세그먼트를 생성하고 헤더를 추가하여 네트워크 계층에게 넘겨주는 작업을 다중화(Multiplexing)라 하고, 네트워크 계정에서 받은 데이터를 올바른 app 프로세스에게 전달하는 작업을 역다중화(demultiplexing)라 한다.

-TCP와 UDP는 세그먼트 헤더에 소스의 포트번호와 목적지의 포트번호를 포함하여 다중화와 역다중화를 가능하게 한다.

-잘 알려진 포트번호(well-known port number) : 0~1023까지의 포트번호. HTTP나 FTP등에 미리 예약되어 있다.

-세그먼트에 포트번호가 두개 필요한 이유 : 만약 목적지에서 같은 포트번호를 가진 프로세스가 두개 이상 동작하고 있다면, 목적지의 트랜스포트 계층 프로토콜은 어느 프로세스에 세그먼트를 줘야 할지 모르게 된다. 따라서 세그먼트에 출발지의 세그먼트를 보낸 프로세스의 포트번호까지 포함함으로써, 해당 세그먼트가 어느 프로세스에 가야 하는지 알게 된다.

-두 개의 클라이언트가 같은 소스 포트번호를 설정하고 서버에 세그먼트를 보내면, 세그먼트의 헤더에 있는 두 포트넘버가 동일하기 때문에 생길수도 있지만, IP 데이터그램(네트워크 계층의 데이터 단위)의 헤더에 소스와 목적지의 IP가 포함되어 있기 때문에 결과적으로 혼란이 발생하지 않는다.


3.3 비연결형 트랜스포트 : UDP

-UDP는 트랜스포트 계층 프로토콜이 할 수 있는 최소한의 기능으로 동작한다. 
  다중화/역다중화 기능과 간단한 오류 검사를 제외하곤 아무것도 하지 않는다.

-UDP는 세그먼트를 송신하기 전에 hand-shake(통신 설정)을 하지 않는다. 
  그래서 UDP를 비연결형이라고 한다.

 *UDP를 쓰는 이유
1.hand-shake, 즉 연결 설정이 없다. 따라서 연결을 시작하기 위한 delay가 없다.
2.연결 상태(connection state)가 없다. 따라서 TCP보다 훨씬 간단하다.
3.패킷 헤더 오버헤드가 적다. TCP는 20바이트의 헤더 오버헤드를 가지지만 UDP는 8바이트의 헤더 오버헤드를 가진다.
4.전송률이 조절되지 않는다. 혼잡 제어 메커니즘이 없기 때문에 링크가 혼잡한 것과 상관없이 보낼 수 있다.

-UDP를 사용할 때, 어플리케이션이 특정한 기능(확인 응답 메커니즘, 재전송 메커니즘)만 갖추고 있다면, 신뢰성을 보장할 수 있다. 

3.3.1 UDP 세그먼트 구조
소스 포트 넘버
목적지 포트 넘버
길이
검사합(checksum)
응용데이터(메시지)


3.3.2 UDP 검사합(checksum)

-검사합은 세그먼트 안에 있는 모든 16비트 워드를 합한 다음, 1의 보수를 수행해서 얻는다.

-수신측에서 검사합이 포함된 모든 워드를 더하고 나면 1로 채워진 합을 얻을 수 있다. 만약 0이 들어 있다면 그 패킷에는 오류가 있음을 알 수 있다. 하지만 UDP는 오류를 발견해도 단지 app에게 경고를 할 뿐이다.


3.4 신뢰성 있는 데이터 전송의 원리

-신뢰적인 데이터 전송 프로토콜에서는 데이터가 변형되거나 손실되지 않는다. 그리고 전송된 순서대로 전달된다.

-rdt_send()는 reliable data protocol의 송신과 관련된 호출이다.
-udt_send()는 unreliable data protocol의 송신과 관련된 호출이다.
-프로토콜이 상위 계층(app계층)에 데이터를 전달하려고 할 때, deliver_data()를 호출한다.

3.4.1 신뢰적인 데이터 전송 프로토콜의 구축

 *완전하게 신뢰적인 채널 상에서의 신뢰적인 데이터 전송 : rdt 1.0
-하위의 채녈이 완전히 신뢰적인 가장 간단한 경우.
-FSM : finite-state machine. 변화를 일으키는 이벤트는 평행선 위에, 이벤트가 발생했을 때 취해지는 행동은 평행선 아래에 나타낸다.
-송신 측은 app계층의 호출을 기다리다가 호출되어 데이터를 받( rdt_send(data) )으면, 패킷에 첨부( make_pkt(packet,data) )하고 보낸( udt_send(packet) ) 다.
-수신 측은 network계층의 호출을 기다리다가 호출되어 패킷을 받( rdt_rcv(packet) )으면, 패킷으로부터 데이터를 추출( extract(packet, data) )한 후, 데이터를 app계층으로 전달( deliver_data(data) )한다.

 *비트 오류를 가진 채널 상에서의 신뢰적인 데이터 전송 : rdt 2.0
-패킷들이 송신된 순서대로 수신되지만, 패킷에 비트 오류가 생길 수 있다고 가정.
-positive ack(이하 ack)과 negative ack(이하 nak)이 사용된다. ack은 정확히 수신되었다는 것이고, nak은 재전송을 요청하는 것이다.
 *ARG(Automatic Repeat reQuest)프로토콜 : 네트워크에서 재전송을 기반으로 하는 신뢰적인 데이터 전송 프로토콜
1.오류 검출 : 검사합(checksum)필드를 사용하여 오류를 검출 할 수 있다.
2.수신자 피드백 : ACK와 NAK을 사용하는 것으로 송신자가 수신자의 상태를 알 수 있어야 한다.
3.재전송 : 송신자가 재전송을 할 수 있어야 한다.

-송신 측은 두가지 상태를 가진다. 상위 계층으로부터의 호출을 기다리는 상태에서, 패킷을 보내고 난 후에는 수신측에서 보내오는 ACK이나 NAK을 기다리는 상태가 된다. 이 상태에서는 상위 계층에서의 호출에 응하지 않는다. 이 상태에서 ACK을 받았을 경우, 상위 계층의 호출을 기다리는 상태로 돌아가고, NAK을 받았을 경우, 해당하는 패킷을 재전송하고 다시 신호를 기다린다. 그래서 rdt 2.0과 같은 프로토콜을 stop-and-wait 프로토콜이라 한다.

-수신 측은 송신측에서 온 패킷에서 오류가 검출되었을 경우, NAK신호를 보내고, 오류가 검출되지 않았으면 상위계층에 데이터를 보낸 후에 ACK신호를 보낸다.

- rdt 2.0에서는 치명적인 결점이 있다. ACK나 NAK 패킷의 변형의 가능성에 대해서는 고려하지 않고 있는 것이다. 

 *ACK 또는 NAK가 변형되었을 경우 처리 방법
1.ACK 또는 NAK 패킷의 재전송을 요청한다. 하지만 그 재전송마저 변형될 가능성이 있다.
2.패킷에 오류 검출뿐만 아니라 오류로부터의 회복도 할 수 있도록 충분한 검사합(checksum)비트를 추가하는 것이다.
3.왜곡된 ACK 또는 NAK을 받았을 경우 단순히 패킷을 재전송한다. 하지만 수신 측에서 재전송인지 새로운 패킷인지 알 수 없다.
->이 문제를 해결하기 위해 패킷에 순서 번호를 삽입한다. 

-rdt 2.1에서는 송신자가 4개의 상태, 수신자가 2개의 상태를 가진다. 이것은 순서번호가 0일 때와 1일때를 구별하기 위해서이다. 순서 번호를 제외한 나머지 이벤트와 동작은 상태가 0일 때와 1일 때가 같다.

-rdt 2.2에서는 NAK 신호 대신에 이전 패킷의 ACK 신호를 보낸다. 즉 송신 측에서 상태가 1인 패킷을 보냈는데 상태가 0인 ACK 신호가 왔다면 재전송을 해야 한다.

 *비트 오류를 갖는 손실 채녈 상에서의 신뢰적인 데이터 전송 : rdt 3.0
-실제 네트워크 상에서는 패킷의 손실이 일어난다. ACK 또는 NAK 신호가 왜곡되는 것이 아니라 아예 손실되어 버린다면, 송신측과 수신측은 계속 대기 상태에서 서로의 신호를 기다리고 있을 뿐이다. 이것을 해결하기 위하여 초읽기 타이머(countdown timer)를 사용한다.

-송신자는 패킷이 송신될 때 타이머를 시작하고, 응답이 도착하면 타이머를 멈추고, 타이머가 끝날 때까지 응답이 오지 않으면 재전송을 해야 한다.

-송신 측에서 ACK를 받았을 때, 그 신호가 최근에 전송된 패킷에 대한 응답인지 아니면 그 이전에 전송된 다른 패킷에 대한 응답인지 구분하기 위해서 ACK 패킷에 확인 응답 필드를 추가 시킨다. 그리고 그 필드에 순서 번호를 넣는 것이다.

-패킷의 순서 번호가 0과 1을 왔다갔다 하기 때문에 rdt 3.0을 얼터네이팅 비트(alternating bit)프로토콜 이라고 한다.

3.4.2 파이프라인된 신뢰적인 데이터 전송 프로토콜

-stop-and-wait프로토콜의 경우 실제 네트워크 상에서 그 효율이 엄청나게 낮다. 거리가 먼 두 곳일 경우 보내는 작업을 수행한 다음 그 패킷이 그 먼 거리를 갈 동안 기다리고, 수신측이 처리할 동안 기다리고, ACK/NAK신호가 그 먼 거리를 올 동안 기다려야 한다. 수신측도 마찬가지이다.

-이 문제를 해결하기 위하여 파이프라이닝 방식을 사용한다. 확인 응답을 기다릴 것 없이 다중 패킷을 전송하는 것이다. 물론 이 파이프라이닝 방식을 적용하기 위해서는 순서 번호의 범위가 증가되어야 하고, 송신측과 수신측이 한 패킷 이상을 버퍼링해야 한다.

3.4.3 Go-Back-N(GBN)

-GBN 프로토콜에서는 송신자가 확인 응답을 기다리지 않고 다중 패킷들을 전송할 수 있다. 그러나 응답이 오지 않은 패킷의 최대 혀용수 N보다는 크지 않게 해야 한다.

-가장 오래된 미응답 패킷의 번호를 base라 하고, 아직 사용되지 않은 가장 작은 번호를 nextseqnum이라 하면, 순서번호의 범위는 4개로 나누어 진다. 0에서 base-1까지는 전송된 후 응답이 된 패킷의 번호이고, base에서 nextseqnum-1까지는 전송했지만 아직 응답이 오지 않은 패킷의 번호이다. 그리고 nextseqnum에서 base+N-1까지는 패킷을 보내야 할 때 바로 사용할 수 있는 번호이고 base+N부터는 지금 당장 보낼수는 없는 번호들이다.

-N은 윈도우 크기라고 하고, GBN은 슬라이딩 윈도우 프로토콜이라고 한다.

 *GBN에서 송신자는 세가지 타입의 이벤트에 응답해야 한다.
1.상위계층의 호출 시에, 송신자는 윈도우가 가득 찼는지 확인해야 한다. 가득 차 있지 않다면 패킷이 생성되고 송신하면 된다.(그리고 nextseqnum은 한칸 이동하게 된다.) 가득 차 있다면 송신자는 상위 계층으로 데이터를 반환하거나 버퍼링하는등 송신을 지연시킨다.
2.ACK을 수신 했을 경우, 순서 번호 n의 ACK를 수신했을 경우 n까지의 모든 패킷을 올바르게 수신되었다고 생각할 수 있다.(그리고 윈도우와 base는 한칸 이동하게 된다.) 이것은 축적 확인 응답이라 한다.
3.타임 아웃 이벤트 : 타이머가 종료(타임아웃)되면, 송신자는 이전에 전송되었지만 아직 응답되지 않은 모든 패킷들을 다시 송신한다. 

-수신자의 동작을 간단하게 하기 위하여 순서가 틀린 패킷들은 전부 버린다. 따라서 따로 버퍼링할 필요가 없다.


3.4.4 선택적 반복 ( Selective Repeat, SR)

-GBN프로토콜에서는 stop-and-wait 프로토콜에서의 채널 이용률 문제를 해결할 수 있다. 하지만 윈도우크기가 크고, 대역폭-지연 결과가 크면 많은 패킷들이 파이프라인에 속하게 되고 불필요한 재전송이 많이 일어날 수 있다. 

-SR에서는 수신자에게서 오류가 발생한 패킷들만들 송신자가 재전송하도록 한다. 

-수신자는 정확하게 도착한 패킷의 ACK을 반드시 보내야 한다. 만약 그 패킷이 순서에 맞지 않는 것이라 할 지라도. 이전 패킷을 받았다고 응답을 하지 않으면, 송신자는 그 이전 패킷을 계속 보낼수 밖에 없다.




출시 임박! LU2300(이클립스)


에 덧붙이는 포스트.


위 포스트를 5월 3일에 작성하였고, 어느새 12일이 되었다.

어차피 모든 것은 출시가 된 다음에 알게 될 것이니 나올때까지 그냥 조용히 기다리자


라고 생각했건만,


이........이것만큼은 포스팅 해야 해!! 라는 일이 발생해서 에라 모르겠다 하고

위의 포스트를 쓴 이후 추가된 정보를 정리하자면,



먼저, 사진이 추가 공개 되었다.

베타테스트를 실시하는 모양인지, 여기저기에 많은 추가사진이 올라오고 있다.

그중에서 뽐뿌에 올라온 사진들중 내 맘에 드는 사진만 추리자면



.........

이건 진짜 물건임ㅠㅠㅠㅠㅠㅠㅠ





그리고, 가격대가 슬슬 알려지고 있다.

그런데, 무작정 서핑하다가 가격에 대한 정보를 어디선가 봤는데,

어디서 봤는기 기억이 안난다(.........)

하지만 대략적으로 출고가는 80만원대 즈음이었던 기억이 난다.

보조금 붙고 약정 걸고 하면 어느정도, 부담이 없지는 않지만...... 크게 무리는 되지 않을듯.

(솔직히 이클립스가 주목받기 시작하면서 
 출고가가 100만원쯤 되지 않을까라고 생각했었다.-ㅅ-)



또한, 출시 예정일이 24일이라고 알려지고 있다. 공식적으로 발표된 사실은 아니지만,

판매점 직원들에게 이클립스의 교육이 진행중이라는 것도 그렇고, 
이래저래 관련된 사람들이 20일~24일로 이야기하고 있는걸로 봐서, 
이달 말에는 살 수 있을 것으로 예상된다.






마지막으로.



펫네임이 '이클립스'가 아닌 

'옵티머스Q'로 결정되었다.!!!!!!!!!!!!!














=ㅅ=)............

나.......이클립스란 이름 정말 마음에 들었는데.....







이하는 LG싸이언 공식 트위터에 올라온 글의 스샷.



이하는 LG싸이언 공식 미투데이에 올라온 글의 스샷



내용은 같다. 옵티머스(Optimus)는 최선, 최상을 뜻하는 라틴어, 
그리고 쿼티 자판이 달렸다는 뜻의 Q.(한국인의 어쩌구는 생략하자.......)









안돼ㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠ





지나가는 사람 100명한테 옵티머스? 하면 80명은 프라임? 이라고 대답할 것 같단 말이야<-


트랜스포머도 분명 좋아하고 옵티머스 프라임의 간지에 심장이 벌렁벌렁(....)한 나지만




그래도 폰 이름으로는 '이클립스'가 더 좋은데ㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠ




이 블로그는 LG싸이언의 공식 입장을 반대합니다.(응?)


이클립스는 나만의 애칭으로 밖에는 할 수 없는 것인가.




뭐 어쨌든,

이리저리 알아보면서 알게 된 것은 이 이클립스에 하악하악(.....)하는 사람들이
'내 생각보다는' 많았다는 것. 

생각보다 안드로이브1.6버젼의 패널티가 그리 크지는 않구나.



이제 보름 정도 뒤면 드디어 만날수 있는 것인가. 이클립스.



'안드로이드' 카테고리의 다른 글

옵티머스Q 개봉기  (0) 2010.06.29
출시 임박! LU2300(이클립스)  (0) 2010.05.03

발견법(heuristic, 휴리스틱)은 경험에 기반하여 문제를 해결하거나 학습하거나 발견해 내는 방법을 말한다. 전산학 등 과학분야에서는 한정된 시간 내에 수행하기 위해 최적의 해 대신 현실적으로 만족할 만한 수준의 해를 구하는 방법이다. 형용사구로 발견적 방법(heuristic method, 휴리스틱 기법)라고도 한다.

출처 : 위키백과




간단하게 설명하자면,

휴리스틱은 어떤 문제를 푸는데 있어서 가장 좋은 방법이 아닌, 어느정도 인정할 만한 풀이 방법을 얻는 방법이다.


위의 위키백과 링크에서 컴퓨터 공학부분을 보면

컴퓨터 공학에서 발견법은 해결법이 정확히 해결되는지에 대한 문제를 무시하고 일반적으로 좋은 해결법이나 보다 간단한 해결법으로 풀고자 하는 문제 해결법이다. 예를 들어 상업적인 컴퓨터 바이러스 검색 소프트웨어들은 발견법으로 특정 속성이나 특징들을 찾아 바이러스나 나쁜 소프트웨어를 찾아낸다. 하지만 잠재적으로 정확도가 대신 떨어 질 수 있다.

 

즉, 그 해결법이 정확한, 완벽한, 증명된 해결법인지는 설명하지 않고,
일반적이고, 간단한 해결법을 찾는 것이다.

휴리스틱은 어림짐작이나, 추정이나, 직관적인 생각으로 이루어질 수 있다.

*누군가가 어떤 문제를 푸는 한 해결법을 생각해 내었지만, 그 방법이 수학적으로(=이론적으로) 올바른 해결법인지에 대해서 증명할 수 없다면, 그 해결법은 휴리스틱한 해결법이라고 할 수 있다.
하지만 그 해결법에 대해서 수학적으로 증명할 수 있다면, 그 해결법은 더 이상 휴리스틱한 방법이 아니게 된다.



이 휴리스틱 기법은 백신에서도 사용한다.
기존에 발견된 바이러스의 특징을 사용해서 변형된 바이러스를 찾아내는 것이다.
물론 기존 방법에 비해서 정확도가 떨어진다.




9.1 JPEG표준

-디지털 영상은 공간 영역(spatial domain)을 통해서 정의된다.
-2차원 DCT는 두 정수 u,v에 의해 인덱스된 공간 주파수 영역(spatial frequency domain)에서 함수 F(u,v)인 주파수 반응을 가져오기 위해 JPEG에서 한 단계로 사용된다.
-JPEG는 손실 영상 압축(lossy image compression) 방식이다.


 * JPEG에서 DCT변환 방식의 효율성은 다음 세가지 관찰 결과에 의존한다.

1. 쓸모있는 영상 내용은 영상 내에서 비교적 천천히 변한다.
2. 정신물리학적 실험에서 인간은 저주파수 성분보다 매우 높은 공간 주파수 성분의 손실을 덜 인지한다.
3. 시각적 예민함(Visual acuity)은 컬러에서보다 흑백에서 훨씬 더 크다.

-공간 중복성(spatial redundancy) : 영상에서 많은 정보들이 반복됨.
-관찰결과2에 의해 가장 낮은 주파수에 대한 DCT 계수는 가장 중요하다. 주파수가 점점 높아지면, DCT계수를 정확하게 표현하는데에 있어서 그다지 중요하지 않다.
-관찰결과3에 의해 JPEG에서는 색체 표본화(Chroma subsampling(4:2:0))이 사용된다.

 *JPEG 부호화기의 주요 단계
1. RGB를 YIQ나 YUV로 변환하고 색을 부표본화(subsampling)한다.
2. 영상 블록별로 DCT를 수행한다.
3. 양자화를 한다.
4. 지그재그 순서로 정렬하고, 런-길이 부호화(run-length coding)을 수행한다.
5. 엔트로피 부호화를 수행한다.


 - 영상 블록별 DCT
 각 영상은 8X8 블록들로 나누어진다. 2차원 DCT는 각 영상 블록에 적용되고, 각 블록은 DCT계수를 출력으로 갖는다. 
블록을 사용하는 것은 그것에 인접해 있는 배경으로부터 각 블록을 분리시키는 효과를 가진다. 그래서 사용자가 높은 압축률을 지정할 때 JPEG영상이 블록화되어 고르지 못한 것처럼 보이게 된다.

 - 양자화
양자화 단계의 목표는 압축된 영상을 위해 필요한 전체 비트 수를 줄이는 것이다.
양자화된 DCT 계수는 각 DCT계수를 해당하는 양자화 행렬로 나눈 뒤, 반올림하여 나타낸다.

양자화 단계는 JPEG 압축에서 손실의 주 원천이다.
Q(u,v)의 값은 오른쪽 아래로 내려갈수록 더 큰 값을 가지는 경향이 있다. 이것은 더 높은 공간 주파수에서 더 많은 손실을 가지는 것을 목표로 한다.(관찰결과 1,2에 의한 실행)


 - 런 길이 부호화(Run-length coding)
양자화가 이루어진 후에 많은 0이 등장한다. RLC는 양자화된 DCT값을 집합{0의 수, 0이 아닌 값}으로 변화시키기에 유용하다. 지그재그 주사(Zig-Zag scan)는 8X8행렬을 64벡터로 변환시킨다.

 - DC계수에 대한 DPCM(Differential Pulse Code Modulation)
각 8X8 영상은 오직 하나의 DC계수를 가진다. DC계수는 해당 블록의 평균 명암도를 반영하기 때문에, 각 블록마다 다를 수 있다. AC계수에 대한 RLC는 각각의 개별적인 블록에서 수행되지만, DC계수에 대한 DPCM은 한 번에 전체 영상에 대해 실행한다.

 - 엔트로피 부호화
1. DC 계수들의 허프만 부호화
 DPCM부호화된 DC계수는 한 쌍의 심볼(SIZE, AMPLITUDE)로 표현되는데, 여기서 SIZE는 계수를 표현하는데 얼마나 많은 비트들이 필요한지를 나타내고, AMPLITUDE는 실제 비트들을 포함한다. DPCM값들은 8비트 이상을 요구할수도 있고, 음수값일 수도 있다. 음수값일 때는 1의 보수를 사용한다.
 JPEG구현에서 SIZE는 허프만 부호화된다. 일반적으로 SIZE의 엔트로피가 낮기 때문에 허프만 부호화가 추가적인 압축을 가져온다. 반면에 AMPLITUDE는 값이 광범위하게 변할 수 있기 때문에 허프만 부호화의 이득이 거의 없다.

2. AC 계수들의 허프만 부호화
 런-길이 부호화되고 한 쌍의 숫자들 (RUNLENGTH, VALUE)로 표현되었던 AC계수는 실제 JPEG구현에서 VALUE값이 SIZE와 AMPLITUDE에 의해서 표현된다. Symbol1 에 RUNLENGTH와 SIZE가 각각 4비트를 할당받게 된다. 그리고 허프만 부호화되는 것이다. Symbol2는 AMPLITUDE값이다.



9.1.2 주요 JPEG모드 4가지.

1. 순차 모드(Sequential Mode)
 기본 JPEG모드이다. 각 회색level 영상과 컬러 영상 성분은 왼쪽 위에서 오른쪽, 위에서 아래로의 주사로 부호화된다.

2. 점진적 모드(Progressive Mode)
 영상의 낮은 화질의 버전을 빨리 전달하고 뒤이어 높은 화질을 전달한다. 이러한 영상의 다중 주사는 통신 선로의 속도가 낮을 때 가장 유용하다. 점진적 모드는 두가지 방법 중에 하나로 구현될 수 있다.
 - 스펙트럼 선택(Spectral Selection) : DCT계수의 스펙트럼(공간 주파수 스펙트럼) 특성을 이용한다. 더 높은 AC 성분들은 단지 세부적인 정보만을 제공한다. 주사(scan)이 진행되면서 점점 더 많은 AC성분들을 부호화하는 것이다.
 - 연속적인 근사(Successive approximation) : 모든 DCT계수들이 동시에 부호화된다. 그러나 처음에는 그들의 가장 중요한 비트들(MSBs)을 가지고 부호화한다. 주사(scan)이 진행되면서 점점 덜 중요한 비트들을 부호화하는 것이다.

3. 계층적 모드(Hierarchical Mode) 
 여러 개의 다른 해상도 계층에서 영상을 부호화한다. 가장 낮은 해상도에서 부호화된 영상은 기본적으로 압축된 저역 통과 필터 처리된(low-pass-filtered) 영상이다. 연속적으로 더 높은 해상도에서의 영상은 추가적인 세부 사항들을 제공한다. 점진적모드와 비슷하게, 점진적으로 화질이 개선되는 다중 전송 형식으로 전달 될 수 있다.

4. 무손실 모드(Lossless Mode)
 JPEG의 아주 특별한 경우이다. 그러나 7장에서와 같이 변환 부호화를 사용하지 않고 단순히 차분 부호화 방식을 사용한다. 손실 모드와 비교하여 압축률이 아주 낮기 때문에 잘 사용되지 않는다.


9.1.3 JPEG 비트스트림

JPEG 영상을 위한 비트스트림 구조에서, 프레임은 영상이고, 주사(scan)은 화소를 거쳐 읽어 지나가는 것이고, 세그먼트(segment)는 블록의 그룹이고, 블록은 8X8 화소로 구성된다.




LG텔레콤의 두번째 쿼티+안드로이드 폰인 LU2300.

펫네임 '이클립스' 

출시 예정 5월.


그리고 드디어 5월.

그런데 그것이 실제로 일어났습니다.




현재 네이버 지식쇼핑에 공개된 스펙.


안드로이드 1.6을 쓰고 있지만 7,8월 중으로 2.1로 업그레이드 예정.
하지만 지금 2.2버젼이 테스팅중이라던데=ㅅ=)a

그리고 LCD종류는 AMOLED가 아니고 그냥 Hybrid LCD이다.
어딘가에서부터 잘못된 정보가 전해지는 듯.

어쨌든 감사하게도 AMOLED가 적용 안 됬으니 가격이 조금은 낮아졌겠지?


 
이 외에 싸이언(http://www.cyon.co.kr/)에 직접 게제된 뉴스에 따르면

3.5파이(Φ)이어폰 잭, 돌비(Dolby)모바일1350mAh 대용량 배터리
 고사양 멀티미디어 기능을 지원한다.

안드로이드폰 최초로 증강현실 애플리케이션 스캔서치를 탑재한다실제 거리모습 지도서비스인 최신판 다음(Daum) 로드뷰와 명함 및 문서인식이 가능한 스마트리더도 지원하며,
 향후 다양한 애플리케이션을 추가 제공할 계획이다.

LG-LU2300쿼티 키패드 및 트랙볼, 4방향 네비게이션 키를 장착해 
입력 방식을 다양화했다.

특히내장 사용자메모리를 최대 3기가바이트(GB)까지 제공 1메가바이트(MB) 용량 애플리케이션 기준 3,000여개 이상 설치가 가능하다추가로 동영상사진 등 멀티미디어 파일 저장 용도로 4GB의 외장 MicroSD카드를 기본 제공한다.

 

네이버/다음/싸이월드와 같은 포털서비스 및 서울시 교통정보/윙버스 서울맛집 등 한국인이 선호하는 실용적인 정보서비스를 제공한다국어/영어/일어/중국어/한자사전은 물론네이버/위키피디아 백과사전수학/물리/화학공식 편의사전 등 20여종의 각종 사전을 탑재해 쿼티 키패드 사용성을 극대화했다.




등이다.



이.....이거 꿈은 아니겠지?


도대체 가격을 얼마로 책정하려고 이렇게 온갖 기술을 다 쑤셔넣은 것일까.

난 그냥 안드로이드폰에 쿼티만 달려있으면 만족하는데..OTL



'안드로이드' 카테고리의 다른 글

옵티머스Q 개봉기  (0) 2010.06.29
LU2300 5월 중순 동향  (0) 2010.05.12

4.1 제어 유니트의 기능

명령어 코드의 해독
명령어 실행에 필요한 제어 신호들의 발생
 
즉, 제어 유니트명령어 사이클이 적절히 수행되도록 모든 동작들을 제어하는 장치이다.

-마이크로 명령어 : 각 마이크로 연산을 실제로 수행하기 위해서 2진 비트들로 표현한 것
-마이크로 프로그램 : 일련의 마이크로 명령어들로 구성된 프로그램
-루틴 : 마이크로 명령어들로 구성된 그룹의 단위.


4.2 제어 유니트의 구조

-명령어 해독기(instruction decoder) : IR에서 들어오는 명령어의 연산 코드를 해독하여 해당하는 연산을 수행하기 위한 루틴의 시작 주소를 결정.
-제어 주소 레지스터(control address register, CAR) : 다음에 실행할 마이크로 명령어의 주소를 저장. 제어 기억장치의 특정 위치를 가리킴.
-제어 기억장치(control memory) : 마이크로 프로그램을 저장.
-제어 버퍼 레지스터(control buffer register, CBR) : 제어 기억장치로부터 읽혀진 마이크로 명령어 비트들을 일시적으로 저장. 
-서브루틴 레지스터(subroutine register, SBR) : 서브루틴이 호출되는 경우 현재의 CAR의 내용을 일시적으로 저장.
-순서제어 모듈(sequencing module) : 마이크로 명령어의 실행 순서를 결정하는 회로들의 집합.

*CPU의 명령어 세트의 설계
  1. 명령어의 종류와 비트 패턴을 정의
  2. 그 명령어들의 실행에 필요한 하드웨어를 설계
  3. 각 명령어를 위한 실행 사이클 루틴을 마이크로 프로그래밍.

-명령어의 해독 : 명령어의 연산 코드가 지정하는 연산의 실행 사이클 루틴의 시작 주소를 결정하는 동작.

-사상(mapping)을 이용한 해독 : 명령어의 연산 코드를 특정 비트 패턴과 조합하는 방법.
(사상함수에 연산코드를 입력(또는 대응)시킨 값이 곧 실행 사이클 루틴의 시작 주소가 됨)


4.3 마이크로 명령어의 형식

제어 기억장치에 저장되는 마이크로 명령어 형식의 예

 연산 필드1 연산 필드2  조건 필드  분기 필드  주소 필드 

-연산 필드가 두 개 이므로 두 개의 마이크로 연산들이 동시에 수행될 수 있다.
-조건 필드는 분기에 사용될 조건 플래그를 지정한다.
-분기 필드는 분기의 종류와 다음에 실행할 마이크로 명령어의 주소를 결정하는 방법을 명시한다.
-주소 필드는 분기가 발생하는 경우의 목적지 마이크로 명령어의 주소이다.

 *마이크로 연산들에 대한 2진 코드 및 기호의 예
-연산 필드1
 코드 마이크로연산  기호 
000 None  NOP 
001 MAR <- PC  PCTAR 
010 MAR <- IR(addr)  IRTAR 
011 AC <- AC + MBR ADD 
100  MBR <- M[MBR]  READ 
101  AC <- MBR  BRTAC 
110  IR <- MBR  BRTIR 
111  M[MAR] <- MBR  WRITE 


-연산 필드2
 코드  마이크로 연산 기호 
000  None  NOP 
001  PC <- PC + 1 INCPC 
010 MBR <- AC ACTBR
011  MBR <- PC PCTBR
100  PC <- MBR BRTPC 
101  MAR <- SP SPTAR 
110  AC <- AC - MBR SUB 
111  PC <- IR(addr) IRTPC 

-조건 필드
코드 조건 기호  설명 
00
U
무조건 분기 
01
I 비트 
I
간접 주소지정 
10
AC(S) 
S
누산기(AC)에 저장된 데이터의 부호
11
AC = 0 
Z
AC에 저장된 데이터가 0 

-분기 필드
 코드
기호 
설명 
00 JMP

만약 조건 = 1이면, CAR <- ADF
만약 조건 = 0이면, CAR <- CAR + 1

01 CALL 만약 조건 = 1이면, CAR <- ADF, SBR <- CAR + 1
만약 조건 = 0이면, CAR <- CAR + 1
10 RET CAR <- SBR(서브루틴으로부터의 복귀)
11 MAP

CAR(1) <- 1, CAR(2~5) <- IR(op), CAR(6,7) <- 0
(1XXXX00)



4.4 마이크로 프로그래밍

 *인출 사이클의 마이크로 명령어 루틴

  ORG 0         
FETCH PCTAR U JMP NEXT ; MAR <- PC, 다음 마이크로 명령어 실행
  READ,INCPC U JMP NEXT ; MBR <- M[MAR], PC = PC + 1, 다음 마이크로 명령어 실행
  BRTIR U MAP   ; IR <- MBR, 해당 실행 사이클 루틴으로 분기

 *2진 비트 패턴

주소 마이크로 연산 CD BR ADF
0000000 001 000 00 00 0000001
0000001 100 001 00 00 0000010
0000010 110 000 00 11 0000000



*간접 사이클의 마이크로 명령어 루틴

  ORG 4          
INDRT: IRTAR U JMP NEXT ; MAR <- IR(addr), 다음 마이크로 명령어 실행
  READ U JMP NEXT ; MBR <- M[MAR], 다음 마이크로 명령어 실행
  BRTIR U RET   ; IR(addr) <- MBR, 해당 실행 사이클 루틴으로 분기

 *2진 비트 패턴

주소 마이크로 연산 CD BR ADF
0000100 010 000 00 00 0000101
0000101 100 000 00 00 0000110
0000110 110 000 00 10 0000000

 

*각 명령어에 대한 루틴의 시작 주소 결정(사상 방식)

명령어 연산코드 루틴의 시작 주소
NOP 0000 1000000(=64)
LOAD(I) 0001 1000100(=68)
STORE(I) 0010 1001000(=72)
ADD 0011 1001100(=76)
SUB 0100 1010000(=80)
JUMP 0101 1010100(=84)

 

*각 명령어에 대한 실행 사이클의 마이크로 명령어 루틴

  ORG 64        
NOP: INCPC U JMP FETCH ; PC <- PC + 1
           
  ORG 68        
LOAD: NOP I CALL INDRT ; I = 1이면, 간접 사이클 루틴 호출
  IRTAR U JMP NEXT ; MAR <- IR(addr)
  READ U JMP NEXT ; MBR <- M[MAR]
  BRTAC U JMP FETCH ; AC <- MBR
           
  ORG 72        
STORE: NOP I CALL INDRT ; I = 1이면, 간접 사이클 루틴 호출
  IRTAR U JMP NEXT ; MAR <- IR(addr)
  ACTBR U JMP NEXT ; MBR <- AC
  WRITE U JMP NEXT ; M[MAR] <- MBR
           
  ORG 76        
ADD: IRTAR U JMP NEXT ; MAR <- IR(addr)
  READ U JMP NEXT ; MBR <- M[MAR]
  ADD U JMP NEXT ; AC <- AC + MBR
           
  ORG 80        
SUB: IRTAR U JMP NEXT ; MAR <- IR(addr)
  READ U JMP NEXT ; MBR <- M[MAR]
  SUB U JMP NEXT ; AC <- AC - MBR
           
  ORG 84        
JUMP: IRTPC U JMP FETCH ; PC <- IR(addr)

 


4.5 마이크로 프로그램의 순서 제어

-제어 유니트가 명령어의 실행을 제어한다는 것 -> 제어 기억장치에 저장된 해당 마이크로 명령어들을 순서대로 인출하는 것.


*순서 제어 : 제어 유니트의 기능. 다음에 실행할 마이크로 명령어의 주소를 결정.
 -CAR의 초기 값 = 0
 -MUX 1 : 다음에 실행할 마이크로 명령어의 주소 선택
 -MUX 2 : 조건 플래그를 선택하여 주소 선택 회로로 전송


*수직적 마이크로 프로그래밍(vertical microprogramming)
 -마이크로 명령어의 연산필드에 적은 수의 코드화된 비트들을 포함시킴으로써 마이크로 명령어의 길이를 줄이고, 해독기를 접속하여 제어 신호를 확장하는 방식.
 -장점 : 마이크로 명령어의 길이 감소 -> 제어 기억장치의 용량 감소
 -단점 : 해독 시간만큼의 시간이 지연


*수평적 마이크로 프로그래밍(horizon microprogramming)
 -연산 필드의 각 비트와 제어 신호를 일대일로 대응시켜 사용하는 방식.
 -장점 : 하드웨어가 간단함, 해독에 따른 시간 지연이 없음
 -단점 : 마이크로 명령어의 길이 증가 -> 제어 기억장치의 용량 증가



'학부 전공 > 컴퓨터구조' 카테고리의 다른 글

5. 기억장치 - 1  (0) 2010.06.07

+ Recent posts