2006년 10월 30일 월요일

네트워크를 접하고 있는 새내기들에게 추천하고픈 책.. (2005-06-28 11:28:50, Hit : 684)

정보가 있는 웃음가득 편안한 휴식공간 : 복남이네™ - 네트워크 관련 정보

위의 책입니다. ^^
저는 책쓴사람이랑 전혀 상관없는것은.. 다들 아실테고.. ㅋㅋㅋ;;
아주 괜찮은 책인것 같아서 추천해드리고자.. ^^;
저도 며칠전에 한권 샀는데요.. 아주 잘 보고 있습니다.
개념도 잘 잡아주구요..
좋아요.
아래의 글은 교부문고에서 발췌한 글입니다.
일일이 손으로 적기 귀차니즘의 압박으로 인하여.. ^^;;
그리고.. 인터넷으로 구매하는게 좀 싸군요.. 전 오프매장에서 정가 다주고 구입했네요.. ^^;;
이 책에 대한 간략한 설명
이 책은 네트워크의 실무와 CCNA 자격증에 대해 서술한 네트워크 지침서로 2002년 1월 출간 이후 계속해서 베스트셀러를 기록하고 있는 「후니의 쉽게 쓴 시스코 네트워킹」의 개정 증보판으로 더욱 쉽고 알차게 구성하였다.
이번 개정판에서는 스위치와 OSPF, WAN분야를 추가하였으며 CCNA를 준비하는 수험생들을 위해 CCNA 실전문제도 함께 수록하였다. 전문가가 마치 옆에서 설명해주듯 쉽게 쓰여진 네트워크 입문서로 초보자들에게 추천한다.
목차
Chapter 01. 네트워크 세상에 들어서며
Section 1. 네트워크가 없어도 잘 살던 시절이 있었습니다
Section 2. 이제는 인터넷 세상
Section 3. 네트워킹의 정체
Section 4. 인터넷, 인트라넷, 엑스트라넷
Chapter 02. 네트워크와 케이블 그리고 친구들
Section 1. LAN(Local Area Network)이란?
Section 2. 이더넷은 인터넷의 친구?
Section 3. 그럼 토큰링(TokenRing)은요?
Section 4. UTP 케이블만이라도 제대로 알아볼까요?
Section 5. 케이블, 이 정도만 알면
Section 6. 맥 어드레스(MAC Address)에 대한 이야기
Section 7. 유니캐스트, 브로드캐스트, 멀티캐스트
Section 8. OSI 7 Layer(계층)는 왜 만들어졌나?
Section 9. 컴퓨터는 프로토콜(Protocol)로 말한다
Chapter 03. TCP/IP와의 만남
Section 1. TCP/IP를 모르면 인터넷을 아는 게 아니다?
Section 2. 이 세상에서 나만을 위한 유일한 것
Section 3. 컴퓨터는 이진수로만 이해한다는데
Section 4. 이진수 계산 그 첫번째
Section 5. 이진수 계산 그 두번째
Chapter 04. 네트워크 장비들에 관한 이야기
Section 1. 랜카드도 세팅해야 되나요?
Section 2. 허브 이야기 그 첫번째
Section 3. 허브의 한계
Section 4. 허브 이야기 그 두번째
Section 5. 허브의 끝과 스위치의 시작
Section 6. 험한 세상의 브리지(다리?)되어 그대 지키리
Section 7. 브리지/스위치의 기능
Section 8. Looping(뺑뺑이)는 왜 생길까요?
Section 9. 스패닝 트리되지 않는 스위치는 팥 없는 찐빵!
Section 10. 라우팅이냐, 스위칭이냐?
Chapter 05. IP 주소로의 여행
Section 1. IP 주소 이야기 - 1탄
Section 2. 라우터에서의 IP 주소 이해
Section 3. IP 주소 이야기 - 2탄
Section 4. IP 주소 이야기 - 3탄
Section 5. IP 주소의 활용
Section 6. 서브넷 마스크(Subnet Mask)의 시작
Section 7. 서브넷 마스크에도 기본은 있다
Section 8. 서브넷 마스크의 기본 성질
Section 9. 서브넷 마스크 그 속으로
Section 10. 서브넷 마스크에 대한 시험
Section 11. IP와 서브넷에 대한 정리
Chapter 06. 스위치를 켜라!
Section 1. 스위치와 브리지
Section 2. 스패닝 트리로 가는 첫 번째 관문 두 가지
Section 3. 스패닝 트리를 잘하려면 세 가지만 기억하세요!
Section 4. 누가 누가 더 센가? STP에서 힘 겨루기
Section 5. 스위치에서 대장 브리지(루트 브리지) 뽑기
Section 6. 졸병 브리지(Non Root Bridge)의 루트 포트 선출기
Section 7. 스패닝 트리의 마지막 단계 데지그네이티드 포트(Designated Port) 뽑기
Section 8. 스패닝 트리 프로토콜의 5가지 상태 변화
Section 9. 배운 거 써먹기 - 직접 한번 구성해 보자구요!
Section 10. 스패닝 트리에 변화가 생기던 날
Section 11. 카타리스트 스위치 바라보기
Section 12. 카타리스트 스위치 구성하기
Section 13. 맥 어드레스는 어디에 저장되어 있을까요?
Section 14. 가상의 랜(Virtual LAN)이란?
Section 15. VLAN에서 꼭 기억해야 할 몇 가지
Section 16. VLAN에서의 트렁킹과 VTP(VLAN Trunking Protocol)
Section 17. VLAN의 구성
Section 18. 실제 상황! VLAN
Chapter 07. 라우터만 알면 네트워크 도사?
Section 1. 라우터를 한 마디로 말하자면
Section 2. 라우터는 무슨 일을 할까요?
Section 3. 라우터는 어떻게 생긴 녀석일까요?
Section 4. 라우팅 프로토콜과 라우티드 프로토콜
Section 5. 스태틱(Static) 라우팅 프로토콜과 다이내믹(Dynamic) 라우팅 프로토콜
Section 6. 라우팅 테이블에 대한 이야기
Section 7. AS 그리고 내부용과 외부용 라우팅 프로토콜
Section 8. 라우터 구성의 시작
Section 9. 라우터의 중요한 몇 가지 모드
Section 10. 라우터 안에는 어떤 것들이 살까요?
Section 11. 내가 가진 라우터의 현재 정보는 모두 이 곳에
Section 12. 라우터 셋업 모드
Section 13. 라우터에 명령을 입력하는 두번째 방법
Section 14. 스태틱(Static) 라우팅을 이용한 라우터 구성
Section 15. 스태틱 라우팅만 알면 디폴트 라우트는 식은 죽 먹기
Section 16. 라우터의 구성 명령에 대한 버전별 정리
Section 17. 디스턴스 벡터(Distance Vector)와 링크 스테이트(Link State)
Section 18. 라우터의 패스워드 구성
Section 19. 시스코 라우터의 친구 찾기 CDP
Section 20. 텔넷(Telnet)을 이용한 장비 접속
Section 21. 핑(Ping)과 트레이스(Trace)
Chapter 08. 라우팅 프로토콜과의 한판
Section 1. RIP라는 라우팅 프로토콜에 대한 이야기
Section 2. RIP와 함께 춤을?
Section 3. Distance-Vector 라우팅 알고리즘에서의 문제점과 해결책
Section 4. IGRP 라우팅 프로토콜
Section 5. OSPF 라우팅 프로토콜
Chapter 09. IPX에 대한 이야기
Section 1. 노벨의 IPX 프로토콜
Section 2. SAP와 GNS
Section 3. IPX 주소 체계
Section 4. IPX의 인캡슐레이션 방식
Section 5. IPX를 실어나르는 라우팅 프로토콜
Section 6. 라우터에서 IPX의 구성
Chapter 10. 라우터, 그 속으로 전진!
Section 1. 네트워크 접근 제어 액세스 리스트(Access List)
Section 2. 액세스 리스트에서 이것만 알면 다 안다
Section 3. 스탠더드 액세스 리스트의 시작
Section 4. 스탠더드 액세스 리스트의 예제
Section 5. 텔넷포트(VTY Port)에서의 액세스 리스트
Section 6. 익스텐디드 액세스 리스트(Extended Access List)
Section 7. 라우터의 장애 대비 HSRP
Section 8. IP 주소의 변환 NAT(Network Address Translation)
Chapter 11. 세상이 넓고 네트워킹은 계속된다
Section 1. WAN은 어렵다?
Section 2. HDLC보다 괜찮은 PPP
Section 3. 프레임 릴레이(Prame-Relay) 구성
Section 4. ISDN의 추억
부 록
1. 네트워킹을 하면서 꼭 알아두어야 할 약어들
2. 시스코 장비 패스워드 복구 방법
3. CCNA 문제 풀이
4. CCNA 실전문제 풀이 20

이런 젠장할, error !!!

001 java.net.ConnectException: Connection refusedblog/19/62/12/pldworld/archives/2006_10_01_pldworld_archive.html

이런말만 내뱉고는 blogger가 배짼다... 난감하군...

2006년 10월 24일 화요일

FPGA의 끝 없는 진화, 특정 용도 최적화에 도전

- 출처: http://www.neakorea.co.kr/article_view.asp?seno=3872

FPGA의 끝 없는 진화, 특정 용도 최적화에 도전

<니케이 일렉트로닉스 코리아-아시아>

20여년 전, FPGA가 처음 선보였을 때, 대부분의 사용자들이 칩의 모든 게이트를 사용하지는 못할 것이라는 생각은 소모적이고, 너무 앞선 것이라고 여겨졌다. 하지만 시간이 지나 칩당 트랜지스터 수가 급격히 증가하면서 그런 걱정은 금방 잊혀졌다.

요즘은 칩 한 개에 수백 개의 ALU나 CPU가 탑재되며, 대부분의 고객들이 사용할 수 있는 것보다 많은 상황이 됐다. 이런 상황을 낭비로 보는 이들이 있는 반면에 FPGA 진화의 다음 단계로 생각하는 이들도 있다.

일례로, C스위치(Cswitch)는 전용 네트워킹 로직 및 인터페이스 컨트롤러 주변에 기존 FPGA를 많이 배치한 새로운 FPGA를 개발 중이다. 앰브릭(Ambric)은 게이트를 함께 사용하지 않고, 다양한 태스크용으로 구성되는 메모리 블록 및 CPU의 어레이가 들어가는 제품을 개발하고 있다. 양사는 올해 말까지 샘플 칩을 내놓을 예정이다.

새로운 접근법

C스위치의 아키텍처에는 패킷 헤더에서 데이터를 추출하도록 프로그램 할 수 있는 전용 패킷 파서(Packet Parser)가 있다. 하드와이어드 ALU는 패킷 에디팅 또는 수학 연산을 수행한다. 내장 CAM을 2진수나 3진수로 구성할 수 있다. 테이블 및 버퍼 저장을 위해서 아키텍처에는 대용량의 싱글 포트 RAM뿐만 아니라 커다란 듀얼 포트 RAM도 포함된다.

이 전용 로직은 모두 표준 FPGA 내에 포함되며, 고속 P2P(Point-to-Point) 상호연결을 통해 연결된다. 칩에는 DRAM 컨트롤러, 이더넷, 파이버 채널 MAC과 최대 6.4Gbps로 동작하는 SerDes가 포함된다. 이 SerDes는 PCI 익스프레스, XAUI, 기가비트 이더넷, 파이버 채널 및 그 밖의 고속 인터페이스를 지원한다.

특수한 기능 블록을 사용하는 C스위치 칩은 표준 FPGA보다 훨씬 효율적으로 패킷처리 애플리케이션과 공통 통신을 구현한다. 또한 게이트를 프로그래밍하고 전용 로직을 구성함으로써 매우 다양한 애플리케이션 및 프로토콜을 구현한다.

앰브릭의 첫 제품인 케스트럴(Kestrel)은 45개의 '브릭(Bric)'으로 나눌 수 있는 3백60개의 CPU를 포함하며, 각 브릭에는 13Kbyte의 SRAM이 있다. 각 CPU는 32bit 프로세서로 구성되는데, 절반은 DSP 성능의 확장을 통해 수학 연산처리 성능을 높인 것들이다. 각 CPU는 인접 CPU와 쉽게 통신이 가능하며, 칩 전체에 데이터를 보낼 수 있다.

앰브릭 칩을 프로그래밍 하기 위해, 소프트웨어는 여러 객체로 나뉘며, 각 객체는 간단한 태스크를 맡는다. 앰브릭 컴파일러는 객체를 물리적 CPU에 할당한다. 각 CPU는 들어오는 데이터를 처리하고, 또 다른 처리를 위해서 다른 CPU에 데이터를 보낸다. 이런 면에서 각 CPU는 FPGA 게이트로 구현된 기능 블록과 유사하다. 앰브릭 설계의 경우, 기능 블록은 하드웨어보다는 소프트웨어로 간단히 구현된다.

333MHz 속도의 케스트럴은 60GMACS(초당 10억회의 곱셈 누적연산) 등 초당 1조8백억회의 연산을 처리한다. 이 정도의 연산속도를 지원하기 위해, 칩에는 DDR2 SDRAM 대역폭 3.2GB/s, PCI 익스프레스 및 기타 고속 I/O가 있다.

저렴한 130nm 공정기술을 사용했음에도 많은 애플리케이션에서 앰브릭의 첫 번째 칩인 케스트럴은 성능 면에서 우수한 90nm FPGA와 비슷하거나 더 뛰어나다. 각 CPU가 인접 CPU와 통신할 때 독립적으로 동작하기 때문에 앰브릭 아키텍처는 브릭을 추가하는 간단한 방법을 통해 차세대 제조기술로 쉽게 옮겨질 수 있다.

효율 개선

FPGA는 전용 로직보다 비효율적이다. 하드와이어드 프로세서는 더 빠르고 작으며, FPGA에 구현된 프로세서보다 전력 소모가 적다. 오늘날의 고급 IC 공정으로 인해 완성된 CPU는 점점 작아지는 추세이며, 패킷 프로세서는 더 작다. 따라서 사용자가 특정 애플리케이션에 맞춰 프로세서를 연결 및 구성하도록 하면서 칩 주변에 블록을 분산시키는 것이 좋다.

FPGA 업계 선두업체인 자일링스는 이 추세를 주목하고 있다. 자일링스 버텍스 4(Virtex-4) FX에는 DSP 블록, 이더넷 MAC, 1~2개의 PowerPC CPU가 탑재된다. 이 방식으로, 특히, 휴대폰 기지국과 그 밖의 DSP 집약적인 애플리케이션에서 수 많은 고객들의 요구를 충족하고 있다.

이에 반해 C스위치는 신호 처리보다 프로토콜 처리에 역점을 둔 네트워킹 및 다른 애플리케이션에서 뛰어나며, 앰브릭 아키텍처는 비디오 인코딩, 휴대폰 프로토콜 및 보안 처리 등 연산 집중 애플리케이션에 적합하다.

후발업체가 해결해야 할 도전 과제 중 하나는 엔지니어가 아키텍처를 쉽게 사용할 수 있도록 하는 것이다. C스위치는 마그마(Magma)와 제휴하여 자체 기술을 표준 툴에 맞추려고 한다. 앰브릭은 프리코드(Precode) 소프트웨어의 라이브러리뿐만 아니라 통합 개발 환경을 제공한다. 하지만 설계자가 아키텍처 성능을 최대한 활용하려면 새로운 아키텍처의 세부 내용을 학습해야 한다.

린리 그웬넵(Linley Gwennap)

2006년 10월 10일 화요일

[EDNKorea.com] MP3 분해: 저렴한 음악 기기를 위한 기술



MP3 분해: 저렴한 음악 기기를 위한 기술
 
레이저 프린터 토너 카트리지를 구입하자 “75달러 구매 시 무료 제공” 쿠폰을 통해 MP3-818로도 알려진 OD-128MP3 휴대형 디지털 오디오 플레이어가 집으로 배달됐다. Office Depot에서 이 플레이어의 가격이 보통 69.99달러임을 감안하면 이 쿠폰의 가치는 상당히 매력적이다. 기능 또한 그다지 떨어지지 않는다. MP3와 WMA(Windows Media-Audio) 코덱 지원, LCD(이건 본받아라, iPod Shuffle!), 여기에 음성 녹음 기능까지 갖췄다. 1.75x3x0.75인치 크기의 은색 케이스 내부는 어떻게 구성돼 있을까?


Thanks... C.W. :)
--

www.incmicro.com

Chang-woo YANG
F.A.E. / Semicon Division

I&C MICROSYSTEMS CO., LTD.
#601, Bethel B/D., 324-1, Yangjae-dong,
Seocho-ku, Seoul, 137-897, KOREA
T: +82(2)5779131 x333
F: +82(2)5779130
E:
cwyang@inc.co.kr
 

 

Add this card to your address book

2006년 10월 9일 월요일

I'M BACK...!!!



  • 2006/08/17, 갑작스런 server의 down으로 인한 homepage 중단...
  • 그 이후 이대로 1달이상 유지... -_-a;
  • 2006/10/07, 간만의 오랜 연휴기간인 추석 season을 맞아 맘먹고 server 복구에 매진, 드디어 다시 PLDWorld 운용 re-start... *^^*

  • 그동안은 무지막지하게 뻗쳐오는 귀차니즘의 압박으로 인해 맘은 앞서나 몸은 전혀 따라주지 않는 망칙한 증상으로 인해 작업이 전혀~~ 이루어 지지 않았었지만, 다행히 연휴 기간동안 이 문제가 해결되어 이제는 편하게 두다리 뻗고 잠잘 수 있겠다...ㅋㅋㅋ

2006년 10월 4일 수요일

DMA (II)

1. DMA의 개념

이러한 DMA 컨트롤러는 입출력장치와 관련된 개념입니다. 일반적으로 이러한 입출력 창치는 직접 시스템 버스에 접속되지 않습니다. 그 이유는 입출력 장치가 다양하고, 각기 전송속도의 차이가 나며, 데이터의 형식과 길이가 다르기 때문입니다.
그래서 입출력 장치를 제어하기 위해서는 입출력 제어기가 필요합니다. 그리고, 입출력 제어기는 입출력 장치의 제어와 타이밍을 조절하는 역할을 하고, CPU와 입출력 장치의 통신을 담당합니다. 또한 데이터의 버퍼링이나 오류를 검출하는 역할을 수행합니다. 물론 CPU는 해당 입출력 제어기를 통하여 입출력 동작을 수행하고요. 그런면에서 DMA는 넓은 의미에서 입출력 제어기의 범위로 이해하셔도 무방합니다.

2. 보통메모리 제어방식

질문자가 말한 보통의 메모리 제어방식은 아마도 인터럽트를 통한 입출력 제어 방식을 의미하는 것 같습니다.
이러한 인터럽트 방식은 I/O동작이 입출력 제어기와 입출력 장치사이에서 진행되는 동안에는 CPU가 다른 작업을 할 수 있습니다.

동작순서를 살펴보면,
1. CPU가 I/O제어기에 명령을 보내고, CPU는 다른 작업을 수행 합니다.
2. 제어기는 I/O 장치를 제어하여 I/O 명령을 수행 합니다.
3. I/O 명령 수행이 완료되면, 제어기는 CPU 로 인터럽트 신호를 보냅니다.
4. CPU는 인터럽트 신호를 받는 즉시 원래의 프로그램으로 돌아와서 수행을 계속한다.

하지만 이런 인터럽트 방식은 많은 문제점이 있는데, 이를 해결하기 위해 다중 인터럽선을 사용하는방식, 데이지 체인 방식, 소프트웨어 폴링 방식 같은 것을 사용하기도 합니다.그러나 인터럽트 방식은 기억장치와 I/O 장치간의 데이터 통신에 CPU가 직접개입을 하여야 하는데, 이로인하여, 이동되는 데이터들이 반드시 CPU를 경유해야 한다는 단점이 있습니다. 이것을 해결하기 위해 등장한 것이 DMA 방식입니다.

3. DMA 방식

이러한 DMA방식은 CPU의 개입없이 I/O장치와 기억장치 사이에 데이터 전송이 일어나므로 이를 직접메모리 제어 방식이라 부르는 것입니다.
DMA 커트롤러는 CPU를 사용하지 않으므로 I/O장치의 주소와 연산지정자(읽기/쓰기), 주기억 장치 영역의 시작주소, 전송될 데이터 단어들의 수를 알 수 있도록 구성되어야 합니다. 또한 사이클 훔침이라해서 CPU가 주기억 장치를 엑세스 하지 않는 동안에 시스템의 버스를 사용하는 기능이 필요합니다.

주기억 장치의 데이터 블록을 디스크에 저장하는 DMA과정을 살펴보면,
1. CPU가 DMA 컨트롤러에게 명령을 보냅니다.
2. DMA 는 CPU로 BUS REQ 신호를 보냅니다.
3. CPU가 DMA에세 BUS GRANT 신호를 보냅니다.
4. DMA가 메모리에서 데이터를 읽어 디스크에 저장합니다. <--(요것이 핵심)
5. 전송할 데이터가 남아 있으면, 위의 과정 반복
6. 모든 데이터 전송이 끝나면, CPU에게 INTR신호를 보냄

하지만 이런 DMA제어기를 이용한 I/O데이터 전송의 문제는 지원에 한계가 있으며, 버퍼링을 위한 내부 기억장치가 따로 필요하는 단점이 있습니다.

4. 채널

일반적으로 DMA 제어에서 채널을 의미하는 것은 IOP입니다. IOP는 입출력 프로세서를 의미하는데, 이러한 IOP는 4가지로 구성됩니다.

1. I/O명령을 실행할 수 있는 프로세서
2. 데이터 블록의 임시 저장을 위한 로컬메모리
3. 시스템 버스에 대한 인터페이스 및 버스 마스터 회로
4. I/O버스 중재 회로, 혹은 OS의 디바이스 드라이브 루틴 프로그램들이 IOP에서 실행되기도 합니다.

*PS : 그리고, 32비트 cpu의 경우 DMA방식을 사용하는 이유는 일반적인 입출력 장치가 32비트수를 필요로 하지 않기 때문이기도 합니다. 또한 멀티라는 개념이 등장하면서 이러한 기술들이 활용되었기 때문이기도 하고요.

DMA (I)

DMA

Copyright 1994, Jack G. Ganssle

Abstract

DMA is an important part of many embedded systems, yet far too many of us don't really understand it. Read on...

Published in Embedded Systems Programming, October 1994

Engineers love to torture the English language, using words in convoluted ways, verbizing the most passive of nouns, and inventing strange new words that might embarrass your mother (the word "dikes", referring to diagonal cutters - wire cutters - comes to mind).

Acronyms are our special bane. Every three word noun phrase is immediately shortened to its initials, even when this may make an acronym of an acronym. The passage of time dulls ones memory till the original words referred to by the letters slip away, so the acronym becomes its own word. For example, though "CRT" really refers only to a large tube, it has come to stand for a complete monitor, electronics, tube, and all. Even names of corporations reflect our reliance on verbal shorthand. IBM, GE, SAIC - an alphabet soup of letters dances in front of our eyes. CACI even reincorporated themselves some years back to make the acronym the new, real corporate name, consigning the words the letters stood for to eternal obscurity.

Many embedded systems make use of DMA controllers. How many of us remember that DMA stands for Direct Memory Access? What idiot invented this meaningless phrase? I figure any CPU cycle directly accesses memory. This is a case of an acronym conveniently sweeping an embarrassing piece of verbal pomposity under the rug where it belongs.

Regardless, DMA is nothing more than a way to bypass the CPU to get to system memory and/or I/O. DMA is usually associated with an I/O device that needs very rapid access to large chunks of RAM. For example - a data logger may need to save a massive burst of data when some event occurs.

DMA requires an extensive amount of special hardware to managing the data transfers and to arbitrating access to the system bus. This might seem to violate our desire to use software wherever possible. However, DMA makes sense when the transfer rates exceed anything possible with software. Even the fastest loop in assembly language comes burdened with lots of baggage. A short code fragment that reads from a port, stores to memory, increments pointers, decrements a loop counter, and then repeats based on the value of the counter takes quite a few clock cycles per byte copied. A hardware DMA controller can do the same with no wasted cycles and no CPU intervention.

Admittedly, modern processors often have blindingly fast looping instructions. The 386's REPS (repeat string) moves data much faster than most applications will ever need. However, the latency between a hardware event coming true, and the code being ready to execute the REPS, will surely be many microseconds even in the most carefully crafted program - far too much time in many applications.

How it Works

Processors provide one or two levels of DMA support. Since the dawn of the micro age just about every CPU has had the basic bus exchange support. This is quite simple, and usually consists of just a pair of pins.

"Bus Request" (AKA "Hold" on Intel CPUs) is an input that, when asserted by some external device, causes the CPU to tri-state it's pins at the completion of the next instruction. "Bus Grant" (AKA "Bus Acknowledge" or "Hold Acknowledge") signals that the processor is indeed tristated. This means any other device can put addresses, data, and control signals on the bus. The idea is that a DMA controller can cause the CPU to yield control, at which point the controller takes over the bus and initiates bus cycles. Obviously, the DMA controller must be pretty intelligent to properly handle the timing and to drive external devices through the bus.

Modern high integration processors often include DMA controllers built right on the processor's silicon. This is part of the vendors' never-ending quest to move more and more of the support silicon to the processor itself, greatly reducing the cost and complexity of building an embedded system. In this case the Bus Request and Bus Grant pins are connected to the onboard controller inside of the CPU package, though they usually come out to pins as well, so really complex systems can run multiple DMA controllers. It's a scary thought....

Every DMA transfer starts with the software programming the DMA controller, the device (either on-board a integration CPU chip or a discrete component) that manages these transactions. The code must typically set up destination and source pointers to tell the controller where the data is coming from, and where it is going to. A counter must be programmed to track the number of bytes in the transfer. Finally, numerous bits setting the DMA mode and type must be set. These may include source or destination type (I/O or memory), action to take on completion of the transaction (generate an interrupt, restart the controller, etc.), wait states for each CPU cycle, etc.

Now the DMA controller waits for some action to start the transfer. Perhaps an external I/O device signals it is ready by toggling a bit. Sometimes the software simply sets a "start now" flag. Regardless, the controller takes over the bus and starts making transfers.

Each DMA transfer looks just like a pair of normal CPU cycles. A memory or I/O read from the DMA source address is followed by a corresponding write to the destination. The source and destination devices cannot tell if the CPU is doing the accesses or if the DMA controller is doing them.

During each DMA cycle the CPU is dead - it's waiting patiently for access to the bus, but cannot perform any useful computation during the transfer. The DMA controller is the bus master. It has control until it chooses to release the bus back to the CPU.

Depending on the type of DMA transfer and the characteristics of the controller, a single pair of cycles may terminate to allow the CPU to run for a while, or a complete block of data may be moved without bringing the processor back from the land of the idle.

Once the entire transfer is complete the DMA controller may quietly go to sleep, or it may restart the transfer when the I/O is ready for another block, or it may signal the processor that the action is complete. In my experience this is always signaled via an interrupt. The controller interrupts the CPU so the firmware can take the appropriate action.

To summarize, the processor programs the DMA controller with parameters about the transfers, the controller tri-states the CPU and moves data over the CPU bus, and then when the entire block is done the controller signals completion via an interrupt.

DMA Types

DMA controllers are wondrous and scary things, each with dozens of registers you must program just right to get any sort of response. I think these things are designed by committee, with each member throwing every possible feature into the chip. Though it's nice to have so much capability, writing the code can be a trial.

You must first have a very clear idea of exactly what sort of DMA transfers your system needs. DMA was invented to move data between I/O and memory, but now people use it for a variety of other reasons as well.

Traditional Synchronous DMA moves a byte or word at a time between system memory and a peripheral, handshaking with the I/O port for each transfer. This sort of transfer recognizes that the port may not always be in a ready condition; the handshaking is a hardware mechanism to throttle the transactions.

With this sort of transfer, the program sets up the controller and then carries on, oblivious to the state of the DMA transaction. The hardware moves one byte or word between memory and I/O each time the I/O port signals it is ready for another transaction. On each read indication, the DMA controller asserts Bus Request, waits for a Bus Acknowledge in response, and then takes over the bus for a single cycle. Then, the DMA controller goes idle again, waiting for another ready signal from the port. Thus, the program and DMA cycles share bus cycles, with the controller winning any contest for control of the bus. Sometimes this is called "Cycle Stealing".

Burst Mode DMA, in contrast, generally assumes that the destination and source addresses can take transfers as fast as the controller can generate them. The program sets up the controller, and then (perhaps after a single ready indication from a port occurs), the entire source block is copied to the destination. The DMA controller gains exclusive access to the bus for the duration of the transfer, during which time the program is effectively shut down. Burst mode DMA can transfer data very rapidly indeed.

Flyby DMA, something that is not supported on many controllers, is a beast of a different color. The DMA controller gains access to the bus and puts the source or destination address out. Then, it initiates what is in effect a read and a write cycle simultaneously. The data is read from the source address, and written to the destination, at the same time. This implies that either the source or destination does not require an address, since it is very unlikely that both would use the same. An example might be copying data from memory to a FIFO port - the source address (a pointer to memory) increments on each transfer, while the destination is always the same FIFO.

Flyby transactions are very fast since the read/write cycle pair is reduced to a single cycle. Both burst and synchronous types of transfers can be supported.

Typical Uses

The original IBM PC, that 8088 based monstrosity we all once yearned for but now snicker at, used a DMA controller to generate dynamic RAM refresh addresses. It simply ran a null transfer every few milliseconds to generate the addresses needed by the DRAMs.

This was a very clever design - a normal refresh controller is a mess of logic. The only down side was that the PC's RAM was non-functional until the power-up code properly programmed the DMA controller.

Both floppy and hard disk controllers often use DMA to transfer data to and from the drive. This is a natural and perfect application. The software arms the controller and then carries on. The hardware waits for the drive to get to the correct position and then performs the transfer without further reliance on the system software.

If I'm working on a microprocessor with a "free" DMA controller (one built onto the chip), I'll sometimes use it for large memory transfers. This is especially useful with processors with segmented address spaces, like the 80188 or Z180 (the Z180's space is not actually segmented, but is limited to 64k without software intervention to program the MMU).

Both of these CPUs include on-board DMA controllers that support transfers over the entire 1 Mb address space of the part. Judicious programming of the controller lets you do a simple and easy memory copy of any size to any address - all without worrying about segment registers or the MMU. This is yet another argument for encapsulation: write a DMA routine once, debug it thoroughly, and then reuse it even for mundane tasks.

Over the years I've profiled a lot of embedded code, and in many instances have found that execution time seems to be really burned up by string copy and move routines inside the C runtime library. If you have a spare DMA controller channel, why not recode portions of the library to use a DMA channel to do the moves? Depending on the processor a tremendous speed improvement can result.

I'll never forget the one time I should have used DMA, but didn't. As a consultant, rushed to get a job done, I carelessly threw together a hardware design figuring somehow I could make things work by tuning the software. For some inexplicable reason I did not put a DMA controller on the system, and suffered for weeks, tuning a few instructions to move data off a tape drive without missing bytes. A little more forethought would have made a big difference. Troubleshooting DMA

This is a case where a thorough knowledge of the hardware is essential to making the software work. DMA is almost impossible to troubleshoot without using a logic analyzer.

No matter what mode the transfers will ultimately use, and no matter what the source and destination devices are, I always first write a routine to do a memory to memory DMA transfer. This is much easier to troubleshoot than DMA to a complex I/O port. You can use your ICE to see if the transfer happened (by looking at the destination block), and to see if exactly the right number of bytes were transferred.

At some point you'll have to recode to direct the transfer to your device. Hook up a logic analyzer to the DMA signals on the chip to be sure that the addresses and byte count are correct. Check this even if things seem to work - a slight mistake might trash part of your stack or data space.

Some high integration CPUs with internal DMA controllers do not produce any sort of cycle that you can flag as being associated with DMA. This drives me nuts - one lousy extra pin would greatly ease debugging. The only way to track these transfers is to trigger the logic analyzer on address ranges associated with the transfer, but unfortunately these ranges may also have non-DMA activity in them.

Be aware that DMA will destroy your timing calculations. Bit banging UARTs will not be reliable; carefully crafted timing loops will run slower than expected. In the old days we all counted T-states to figure how long a loop ran, but DMA, prefetchers, cache, and all sorts of modern exoticness makes it almost impossible to calculate real execution time.

Scopes

On another subject, some time ago I wrote about using oscilloscopes to debug software. The subject is really too big to do justice in a couple of short magazine pieces. However, I just received a booklet from Tektronix that does justice to the subject. It's called "Basic Concepts - XYZ of Analog and Digital Oscilloscopes", and is their publication number 070869001. Highly recommended. Get the book, borrow a scope, and play around for a while. It's fun and tremendously worthwhile.

TI Introduces GUI-Configurable Digital Power Controllers for Point-of-Load Systems



TI Introduces GUI-Configurable Digital Power Controllers for Point-of-Load Systems

TI's single-phase UCD9111 and dual-phase UCD9112 controllers implement digital pulse width modulators (PWM) with 175 picosecond resolution, and are fully configurable via a graphical user interface (GUI) for monitoring, control and management for point-of-load power conversion - without the need to write a single line of software. GUI configuration allows a designer to intelligently manage the power supply's voltage and current thresholds and response, soft start, margining, loop compensation and many other features. For more information, see:
www.ti.com/sc06157.

2006년 10월 2일 월요일

[본문스크랩] 코덱의 정의와 종류(MPEG-1/2/4, Divx ,Xvid,OGG,AC3, H.263, Video Codec)

카페iN
2006.07.20 17:08
lee19856 http://cafe.naver.com/lee19856/618

1.코덱의 정의

코덱[CODEC : CO mpress(압축) + DEC ompress(복원) 의 합성어]은 디지털 미디어의 압축 및 복원을 하는 수학적 논리 - 즉 압축,복원 알고리즘이라고 할 수 있습니다.

여기서 CO mpress는 말그대로 덩치가큰 파일을 적절히 줄여서 압축을 하는 것이고 DEC ompress는 압축되어진 디지털 미디어를 풀어서 모니터에 재생을 한다는 의미로 이해하시면 됩니다.

조금 다른 개념이긴 하나 우리가 여러개의 파일을묶을 때나 또는 하나의 파일의 용량을 줄이기 위해서 알집(또는 Winzip,Winrar)으로 압축을 할 때가 있습니다. 이렇게 알집으로 압축한 파일을 풀 때도 역시 알집을 사용해서 풉니다. 만약 Winrar로 압축한 파일을 Winzip으로 풀려면 에러를 내면서 파일이 풀리지 않습니다.

이렇듯 디지털 미디어에서 압축을 하고 또 압축을 푸는 하나의 프로그램을 우리는 코덱이라 부릅니다. 다음의 그림은 윈도우 미디오 플레이어6.4 버전의 등록 정보에서 본 코덱의 정보입니다.


파일 포맷은 ASF 파일로 사용중인 코덱 항목을 보면 비디오는 MS MPEG-4 Video Codec V3 으로 압축되었고 오디오는 Windows Media Audio V2로 압축이 되었다는걸 알 수 있습니다.
그리고 사용 중인 필터 목록을 보면 현재 어떤 해제기(Decoder = Decompressor)를 통해서 압축된 파일을 풀고 있는지에 대한 정보를 볼 수 있습니다.

앞서 말했듯 코덱도 하나의 프로그램이라고 했습니다. 그렇기 때문에 서로 다른 코덱은 압축, 복원(재생)하는 계산 알고리즘이 틀리기 때문에 호환되지 않습니다.
만약 DivX 로 압축된 동영상을 볼려고 한다면 컴퓨터에 DivX 코덱이 설치되어 있어야 합니다. 그렇지 않으면 DivX로 압축한 파일을 풀수 있는 (Decoder)이 없기 때문에 그 파일을 복원(재생)할 수가 없어 동영상을 재생 시킬 수 없게 됩니다.

그리고 보통의 프로그램에도 버전이 있듯 코덱에도 여러 가지 버전이 있습니다. 예를 들어 자신의 컴퓨터에 DivX 3.11 코덱만 설치되어 있는데 DivX 5.0 버전으로 압축된 동영상을 다운 받아 재생을 할려면 재생이 되지 않습니다.

같은 코덱이라고 하지만 압축에 사용한 버전이 틀리기 때문입니다. 이럴때는 해당 동영상에사용된 코덱을 확인한 후 적절한 코덱을 설치해야만 재생을 할 수 있게 됩니다.

2.코덱의 종류

1)MPEG-1/2/4 코덱

(1)MPEG-1

MPEG-1, 2, 4는 비디오/오디오의 효율적인 대역폭 전송을 위해 사용되고 개발되고 있다. MPEG-1 코덱은 CIF해상도(352x288)와 초당 30프레임에서 VHS화질 을 제공하는 1-1.5Mbps의 대역폭을 목표로 하고 있다.(1배속 CD롬드라이버의 데이터 전송속도) MPEG-1은 실시간 엔코딩을 위해 고가의 하드웨어가 필요하 다. 디코딩은 소프트웨어로 할 수 있지만 CPU의 점유율 또한 상당하다. MPEG-1은 해상도 scalability가 없으므로 화질이 P와 B 프레임간 패킷 손실에 매우 민 감하다. B프레임은 또한 엔코딩 프레임 N이 N+k프레임을 필요로 하여 엔코딩 과정에서 대기시간이 발생하므로 Round Trip이 있어서 화상회의에는 적합하지 않다.

(2)MPEG-2

MPEG-2는 고해상도 비디오와 성능이 개선된 오디오를 지원하는 것을 포함하여 MPEG-1을 확장한 것이다. MPEG-2의 목표 비트레이트는 방송용화질의 full-screen 비디오를 제공하는 4-15Mbits/s이다. MPEG-2의 초안 표준은 scalability를 제공하는 것이다. Scalability에 대한 세가지 유형이 정의되었다; Signal-to-Noise Ratio(SNR), spatial and temporal, one extension Data Partitioning. MPEG-1과 비교해, 엔코드/디코드에 더 고가의 하드웨어가 필요하다. 또한 MPEG-1과 같은 이유로 손실에 의한 화질저하가 되기 쉽다. MPEG-1과 MPEG-2는 개발된 목적에 적합하다. 예를 들면, MPEG-1은 CD-ROM에서 재생하 는데 아주 적합하고, MPEG-2는 고화질로 저장된 어플리케이션과 TV방송용 어플리케이션에 적합하다. 위성방송의 경우, MPEG-2는 현재 하나의 아날로그 채 널이 사용하는 것과 같은 bandwidth로 화질의 손상 없이 5개 이상의 디지털 채널을 엔코딩할 수 있다. 이런 주요한 이점에 비하면 엔코딩 비용이 많이 들어가는 것은 사실 중요한 것이 아니다. 그러나 현재의 컴퓨터/인터넷 인프라스트럭쳐용으로는 MPEG기반의 솔루션은 비용이 너무 많이 들고 많은 bandwidth를 필요 로 한다. 이는 인터넷을 염두에 두고 설계된 것이 아니기 때문이다.

(3)MPEG-4

MPEG-4는 매우높은 압축효율을 얻음으로서 매우 낮은 비트율로 전송하기 위한 것이다. 예를들면, 화상회의를 위해 적합한 압축형태(예, 64Kbits/s이하의 데이 터레이트)를 제공하기 위한 것이다. MPEG-4는 시청각화면을 서로 다른 네트웍상에서의 다중전송을 가능하게 하는 AVOs 또는 "audio/visual objects"로 분할 하는데 기반을 둔 것이다. MPEG-4의 구조는 현재 MSDL(MPEG-4 Syntactic Description Language)라는 언어에 초점을 맞춰 개발중이다. MSDL을 사용해 어플리케이션을 더 기본적인 컴포넌트로 구성하고 인터넷상에서 이런 컴포넌트를 쉽게 다운로드 받을 수 있도록 새로운 코덱으로 구성이 가능하게 한다. 이런 개념은 선마이크로시스템의 자바용 멀티미디어 API가 코덱 콤포넌트를 다운로드 받기 쉽도록 한 것과 유사하다. 이런 추세는 마이크로소프트와 넷스케이프와 같은 유력 업체들이 자신들의 실시간 스트리밍 솔루션에 다중 오디오/비디오 코덱을 플러그인 하도록 한 제품에서도 볼 수 있다.

2)Divx 코덱이란?

DivX의 탄생

맥스모리스(MaxMorice)라는 닉네임을 가진 프로그래머가 마이크로소프트가 ASF 파일 형식을 위해서 만든 MPEG-4 코덱에 걸려 있는 제한을 바이너리를 조작, 변경 가능하게 하고 음성(사운드트랙)은 MP3로 대체한 코덱을 ‘DivX’라는 이름으로 발표했다. 이 DivX는 발표되자마자 순식간에 인터넷을 통해 전 세계로 퍼져나가게 되었는데, 그 이유는 DeCSS를 이용해 DVD를 복제한 후 DivX라는 동영상 형식으로 만든 영화는 거의 DVD와 비슷한 화질을 보여주면서도 CD 한두 장 분량에 충분히 들어가므로 인터넷이나 PC통신의 영화 동호회를 중심으로 엄청난 속도로 퍼져나갈 수 있었기 때문이었다.

실제로 DivX를 유명하게 만든 것은 ‘DivX ;-) 3.11 alpha’이다. 불과 얼마 전까지만 해도 대부분의 DivX는 이 언더그라운드 포맷인 DivX 3.11로 만들어졌다. 얼굴이 알려지지 않은 수많은 사람들과 그룹들이 DivX로 만들어진 고화질의 영화를 계속해서 쏟아냈고 수많은 네티즌들이 이를 다운로드해서 보곤 했다. 그래서인지 와레즈과 같은 언더그라운드에서 사용하는 것과 같이 대소문자를 섞어 쓰는 표기법을 이용해 초기의 DIVX와는 다르게 ‘DivX’라고 표기를 하고 윙크하는 이모티콘 ;-)을 붙여 사용했다. DivX ;-) 3.11 alpha와는 별도로 여러 가지 시험용 코덱들이 개발되었는데 그중에 Project Mayo 그룹에서 개발한 DivX 4.X(4.12까지 발표되었음)도 있다. DivX 4.X는 기본적으로는 DivX 3.X와 호환성을 가지고 있으나 실제 업그레이드 버전이 아니라 별도로 만들어진 코덱이기 때문에 많은 문제를 일으켰다.

얼마 전에는 DivX의 개발자 중 한 명인 프로그래머 제로미 로타는 조던 그린홀과 공동으로 DivX 네트웍스를 설립하고, DivX 5.0를 출시했다. DivX 네트웍스는 많은 네티즌의 비판에도 불구하고 DivX 상용화에 박차를 가하고 있다. DivX 5.0을 기존의 DivX와 달리 상용화된 제품인 것이다. 이러한 DivX의 상용화에 반발해 XviD라는 새로운 코덱이 개발됐다. DIVX에서 DivX의 이름을 따 왔듯이 XviD는 DivX를 거꾸로 쓴 이름이다. 최근에 DivX 동영상이라고 하면 대부분 DivX 5.0 또는 XviD 코덱으로 압축된 것들이다.

영상 부분은 기술적으로 많이 발전하고 변화했지만, 겉보기로는 큰 차이를 못 느끼는 경우가 많다. 하지만 음성 부분은 초기에는 스테레오(MP3)가 대부분이었지만 이제는 5.1채널 입체음향(AC3)이 대세를 이루고 있다. 대부분 한 장이었던 DivX가 최근에는 두세 장 이상으로 늘어난 이유는 멀티 채널 사운드 때문이다. 좁은 의미에서 DivX 파일은 영상 압축에 DivX 코덱을 이용해서 만든 동영상 파일을 의미하지만 넓은 의미에서 DivX 뿐만 아니라 그와 유사한 XviD, MP4, DX50 등을 이용해서 모든 동영상 파일을 의미한다.

Divx코덱에 대한 또다른 설명

현재 멀티미디어 부분에서 가장 사랑을 받는 부분이며 또한 가장 문제시되고 있는 것이 바로 동영상 부분입니다. 인터넷의 각종 와레즈 사이트 및 동영상 관련 사이트에서 무분별하게 복제되고 또, 유포되고 있는 동영상 중 거의 대분이 DivX 코덱을 이용한 영상입니다. 여러 가지 압축방식의 동영상이 있지만 화질과 사운드와의 차이점 때문에 사람들은 좀더 고화질의 동영상을 찾게 됩니다.

DivX는 본래 Digital Video Express의 줄임말로 '서킷 시티'라는 유통업체가 만들어낸 MPEG2 포맷입니다. 이러한 방식은 DVD를 인터넷에서 볼 수 있게 하기 위해 개발했으나, 불법 복제를 우려한 영화제작사들과 DVD 업체들의 반발에 부딪쳐 1999년에 결국 사장되어 버렸습니다.

이렇게 사라져 버린 후 다시 인터넷 상에 모습을 드러내게 된 것은 'Gej' 또는 'MaxMorice'라는 닉네임으로 활동하던 해커의 의해서 마이크로 소프트의 비디오 기술인 MPEG4 코덱을 접목시켜 DVD 정도의 영상을 매우 적은 용량으로 즐길 수 있게 만든 것이 바로 DivX 코덱입니다.

다시 말해 DVD 급의 고화질의 영화를 인터넷 상에서 손쉽게 다운 받아 별도의 재생장치 없이 윈도우 미디어 재생기를 이용해서 볼 수가 있는 것입니다. 물론 DivX 코덱으로 만들어진 영화를 보기 위해선 전용 코덱이 필요합니다만 현재 인터넷 상에서 간단하게 다운로드 받을 수가 있습니다. 일반적으로 사용되는 DivX 코덱은 크게 두 가지입니다.

첫번째는 DivX 오리지널 코덱(MPEG4 Hi-Res Video Codec)과 마이크로 소프트사의 MPEG4 비디오 코덱을 변형시킨 (Microsoft MPEG-4 Video Codec)이 그것입니다. AVI 화일을 재생하기 위해선 동영상을 만들 때 사용한 코덱이 시스템에 설치가 되 있어야 합니다.

DivX라는 것은 일종의 MPEG4 형식의 코덱을 사용하는 동영상 포맷으로 DVD 소스로부터 만들어진 DivX 파일은 상당한 수준의 화질과 음질을 보여줍니다. DVD에서나 볼 수 있었던 고해상도 모드를 지원할 수 있게 됐으며 DVD를 소스로 사용하면 거의 DVD와 가까운 화질을 볼 수 있게 된 것입니다.

처음에는 윈도우 전용으로만 제작되었지만 현재는 리눅스와 매킨토시 용의 코덱이 개발되어 있는 상황이며 DVD를 DivX파일로 만들 수 있는 저작도구까지 생겨 나고 있습니다. 이러한 저작도구로 만들어진 동영상 폴더는 다운 받으면 코덱 설치용 폴더와 AVI 화일, 그리고 자막 화일인 SMI로 이루어져 있습니다.

Divx 코덱의 종류

DVD에서 VOB 파일을 추출하여 DivX 코덱으로 압축한다. DivX 3.x, DivX 4, DivX 5의 세 가지가 존재하는데, 각각의 특징은 다음과 같다

●DivX 3.x 가장 널리 우리에게 알려진 코덱 형식이다. DivX ;-)라는 이름으로도 많이 알려진 코덱으로, Microsoft의 MPEG-4 V3를 기반으로 해서 제작된 코덱이다. 다루기가 쉽다는 장점이 있으며, 다음에 설명할 DivX 4에 비해서 약간이나마 속도가 빠른 장점 또한 존재한다.

●DivX 4 DivXnetworks에 의해서 개발된 코덱으로 많이 쓰이지는 않는 코덱이다. 이유는 바로 뒤에 설명할 DivX 5가 출시되었기 때문이다.

●DivX 5 DivX 4에 비해서 많은 기능과 높은 수준의 영상을 보여주는 코덱이다. 또한 합법적으로 사용할 수 있으며 개인용도로는 자유롭게 사용할 수 있다. 특히 이전 DivX 버전과 호환성을 가지고 있으며 가장 발전된 MPEG-4 기능들을 제공하는 코덱이다.

3)AC3 코덱이란?

Dolby Digital의 개발 프로젝트명이라 합니다.
지금은 흔히 돌비 디지털 5.1채널이라 부릅니다

기존엔 그냥 mp3, 스테레오만 지원 했지만 WinDVD란 프로그램에서 AC3코덱만 뽑아 기존 DivX에서도 적용 가능해졌습니다.

AC3는 DVD에서 표준으로 사용되는 사운드 포맷으로 현재의 MP3가 2채널(stereo)의 스피커를 기반으로 하고 있는데 비해 이것은 돌비연구소에서 5.1채널을 기반으로한 입체음향 포맷으로 기존의 사운드 포맷과는 달리 현실에서 들을 수 있는 가장 사실적인 사운드를 들려줍니다.

이것은 전후, 좌우, 중앙 및 중저음만을 담당하는 서브우퍼를 포함하여 6개의 스피커를 각 채널별로 독립된 신호를 내보내기 때문에 잡음없는 깨끗한 소리를 전달할 수 있습니다.
그러나 AC3의 입체음향을 제대로 듣기 위해서는 별도의 오디오 시스템을 갖추어야 하는 경제적인 부담감이 있으며, 윈도우에서 재생을 하기 위해서는 따로 AC3 코덱을 설치해야만 감상할 수 있는 불편함이 있습니다.

현재는 DVD 영화의 대중화에 힘입어 계속해서 많은 사용자들에게 인기를 끌것으로 예상됩니다.

4) OGG 코덱이란?

OGG Vorbis란 사람(사람이름인지 닉네임인지는 모른다이 개발한 음성 전용 코덱이다.

다소 저작권이 있는 MP3를 대체할 차세대 음성 규격이며, 또한 무조건 무료이다.

일단 기본적으로 VBR을 지원하며, MP3와 같은 용량 비교시 놀라운 음질 향상을 느낄 수 있다.실제로 무니가 테스트 해 봤는데 놀랄만큼 음질 향상이 뚜렷했다.

다만, 인코딩과 디코딩에서 자원을 많이 소모한다는 단점이 있다.OGG로 만든 동영상 재생시, 사양이 좀 떨어지면 끊기는 문제가 있다.

DivX에서는 vite란 릴그룹이 제일 먼저 적용했었다.OGG로 인코딩 된 동영상 재생시 영상까지 안 나온다는 다소 이상한 경우를 목격할 수 있을 것이다.

현재 MP3의 대안으로 새롭게 부상하고 있는 사운드 파일 포맷으로 Ogg Vorbis라는 이름을 가지며 확장자는 *.ogg를 가집니다.

이것은 “디지털 오디오 포맷의 특허권 반대, 보다 좋은 음질을 가진 음악 파일”을 표방하여 MIT를 졸업한 프로그래머들에 의해서 개발되었으며 오픈소스를 지향하고 있어 수정과 배포가 자유로운 포맷입니다.

이 사운드 포맷이 주목을 끄는 이유는 MP3가 가지고 있는 여러 가지 문제점(특허권과 저작권)과 음질의 한계(고급 오디오 시스템이 장착된 곳에서의 음질의 한계)를 가지고 있지 않다는 점이며 실제로도 MP에 비해 높은 압축률을 보이면서도 더 나은 음질을 들려준다는 것입니다.
또한 MP3가 VBR(Variable Bitrate) 인코딩을 완벽하게 구현하지 못한 반면 Ogg Vorbis는 기본으로 구현이 가능하기 때문에 더 작은 용량으로 더 나은 음질을 즐길수 있습니다.
그러나 아직 안정성과 최적화가 되어 있지 않아 여러 가지 면에서 수정 보완해야 하고 얼마 만큼 대중적으로 널리 사용되어질지 의문인 상태입니다.

이 파일을 재생하기 위해서는 윈엠프나 미디어 플레이어에서 플러그-인을 설치해야만 들을 수 있으며 현재 Winamp 2.80버전 이상에서는 기본으로 지원을 하고 있습니다.

5) Xvid 코덱이란?

최근 DivX 5.xxx 코덱부터 광고 삽입이 되었다.
즉, 무조건 공짜가 아니라는 뜻인데...다소 초기 취지에 맞지 않게 변하는 것 같아 안타까웠는데, 최근 이에 반발해 새로운 무료 영상 코덱을 만들어 배포했다.
그래서 DivX를 거꾸로 읽으면 XviD가 된다.

하지만 DivX 코덱보다 다소 화질이 떨어지고, 코덱 자체에 동영상 밝기 조절 등이 아직 지원하지 않는다는 단점이 눈에 띄인다.

이에 해당하는 동영상 재생시 설치 하길 바란다.요즘 이 코덱으로 많이 릴리즈 되는 편이다.

6) H.263 코덱이란?

퀵타임 코덱 중 가장 보편적인 비디오 코덱으로 인코딩이 쉽고 소렌슨 비디오에 비해서 다소 저사양의 CPU를 필요로 합니다.

그러나 전체적인 화질면에서는 소렌슨 비디오 코덱 보다 약간 떨어지는 편입니다. 하지만 퀵타임에서 기본으로 제공하는 실시간 스트리밍 코덱으로, 안정성과 화질 등 모든 면을 고려할 때 가장 무난한 비디오 코덱이라고 할 수 있다.

7) MPEG-4 Video Codec v3란?

인터넷의 회선속도가 빨라지면서 멀티미디어에 대한 수요가 늘어나자 마이크로 소프트사에서 실시간 비디오, 오디오를 처리하기 위해 개발한 것으로 ASF와 WMV 파일을 만들 때 주로 사용됩니다.

모든 데이터를 실시간으로 전송하고 재생을 해야하기 때문에 압축률이 상당히 높지만 화질은 그렇게 뛰어난 편은 못됩니다.

하지만 따로 코덱을 설치하거나 재생 프로그램을 설치하지 않아도 윈도우 시스템에서 기본으로 코덱과 프로그램을 지원하고 있어 사용자에게는 편리합니다.

[참고 : AVI 파일을 압축할 때 사용되는 Microsoft MPEG-4 Codec V1,2,3 역시 DivX 코덱처럼 마이크로 소프트사의 MPEG-4 코덱을 조작, 변경한 크랙 버전으로 DivX 코덱과 유사한 성능을 보입니다. 가끔 이것 때문에 여러 가지 오해가 많은데 분명한 것은 Microsoft MPEG-4 코덱은 실시간 파일인 ASF, WMV에만 사용되는 것으로 AVI 파일을 압축할 때 사용되는 코덱은 MPEG-4 코덱이긴 하나 그 본래의 의미(실시간 전송 기술)와는 무관한 저용량, 고화질의 감상용 코덱입니다.

8) 비디오 코덱(Video Codec)란?

비디오 코덱들은 크게 3가지 정도로 나눠볼 수 있는데

마이크로소프트사의 VFW(비디오 포 윈도우) 지원코덱이 있으며

애플사의 QuickTime에서 지원되는 코덱들

그리고 VCD 나 DVD와 같은 저장 매체용에서 사용되는 MPEG-1,2 으로 나눠 볼 수 있습니다.

그 외에도 Real Network사의 RM, RA 파일은 자사에서 개발한 코덱을 사용해서 파일을 압축합니다.

출처: PMP인사이드

2006년 10월 1일 일요일

버스트방식 [burst mode]

출처: http://blog.naver.com/mouta/40015867096

블록 단위로 된 일정량의 데이터를 전송 완료 시점까지 중단없이 고속으로 전송하는 방식.

장비들 간에 인터럽트(interrupt:컴퓨터가 일시적으로 수행하던 프로그램을 중지하고 미리 정해 둔 다른 명령을 따르는 일)가 있지 않은 한 전송 완료 때까지 중단 없이 데이터를 고속으로 전송하는 방식을 말한다. 즉, 통신 상대로부터 인지했다는 신호를 기다리지 않고, 한 블록의 데이터가 모두 전송될 때까지 데이터의 묶음인 패킷을 연속하여 보낸다.

순간적으로 빠른 데이터 전송환경을 제공하지만 제한된 시간과 특정 조건에서만 가능하기 때문에 장기간 일정하게 이용하기에는 부적합하며, 주로 데이터 버스에서 다른 장비들이 방해를 하지 못하도록 하거나 주기억장치에서 캐시메모리로 데이터를 빠르게 전송하는데 이용된다. 대표적인 사례로 모토롤라의 68030 프로세서가 있다.