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 화소로 구성된다.


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