KR20000017098A - 페이지 기술 언어로 된 화일을 프린트하기 위한 세그먼트 분할다중 레벨 스크리닝 - Google Patents

페이지 기술 언어로 된 화일을 프린트하기 위한 세그먼트 분할다중 레벨 스크리닝 Download PDF

Info

Publication number
KR20000017098A
KR20000017098A KR1019990032070A KR19990032070A KR20000017098A KR 20000017098 A KR20000017098 A KR 20000017098A KR 1019990032070 A KR1019990032070 A KR 1019990032070A KR 19990032070 A KR19990032070 A KR 19990032070A KR 20000017098 A KR20000017098 A KR 20000017098A
Authority
KR
South Korea
Prior art keywords
pixels
memory
data
screening
selection matrix
Prior art date
Application number
KR1019990032070A
Other languages
English (en)
Other versions
KR100590673B1 (ko
Inventor
가나패디프라빈케이.
래비에스.
다쿠비베크쿠마
스리니바산알.
Original Assignee
윌리엄 비. 켐플러
텍사스 인스트루먼츠 인코포레이티드
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 윌리엄 비. 켐플러, 텍사스 인스트루먼츠 인코포레이티드 filed Critical 윌리엄 비. 켐플러
Publication of KR20000017098A publication Critical patent/KR20000017098A/ko
Application granted granted Critical
Publication of KR100590673B1 publication Critical patent/KR100590673B1/ko

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/12Digital output to print unit, e.g. line printer, chain printer
    • G06F3/1201Dedicated interfaces to print systems
    • G06F3/1223Dedicated interfaces to print systems specifically adapted to use a particular technique
    • G06F3/1237Print job management
    • G06F3/1244Job translation or job parsing, e.g. page banding
    • G06F3/1248Job translation or job parsing, e.g. page banding by printer language recognition, e.g. PDL, PCL, PDF
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/12Digital output to print unit, e.g. line printer, chain printer
    • G06F3/1201Dedicated interfaces to print systems
    • G06F3/1202Dedicated interfaces to print systems specifically adapted to achieve a particular effect
    • G06F3/1203Improving or facilitating administration, e.g. print management
    • G06F3/1206Improving or facilitating administration, e.g. print management resulting in increased flexibility in input data format or job format or job type
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06KGRAPHICAL DATA READING; PRESENTATION OF DATA; RECORD CARRIERS; HANDLING RECORD CARRIERS
    • G06K15/00Arrangements for producing a permanent visual presentation of the output data, e.g. computer output printers
    • G06K15/02Arrangements for producing a permanent visual presentation of the output data, e.g. computer output printers using printers
    • G06K15/10Arrangements for producing a permanent visual presentation of the output data, e.g. computer output printers using printers by matrix printers

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Mathematical Physics (AREA)
  • Image Processing (AREA)

Abstract

본 발명은 보다 제한된 범위의 이미지 제작기로 그레이 스케일 톤을 근사화하는 것, 즉 스크리닝으로 공지된 프로세스에 관한 것이다. 본 발명은 스크리닝이 될 필요가 없는 경우를 차별화함으로써 상기 스크리닝을 위해 요구되는 시간을 감소시킨다. 제1 실시예에서, 렌더링 프로세스(401)는 모든 렌더링된 객체를 둘러싸는, 최소한으로 감싸는 바운딩 박스(409)를 생성한다. 다른 실시예에서, 렌더링된 객체의 임의의 일부를 포함하는 주사선들이 언급된다 (413). 스크리닝은 선택 매트릭스의 행 각각을 세그먼트들로 분할함으로써 메모리를 보다 잘 이용한다. 이들 세그먼트들과 연관된 룩업 테이블들이 순차적으로 메모리 캐쉬에 로드된다. 로드된 룩업 테이블로 맵핑하는 입력 픽셀들은 스크리닝된다. 그 후, 선택 매트릭스의 다음 세그먼트와 연관된 룩업 테이블들이 메모리 캐쉬로 로드되어 그 세그먼트로 맵핑하는 입력 픽셀들을 스크리닝하는 데 이용된다. 본 방법은, M이 행 길이일 때, M-1개의 입력 픽셀들 및 M+1개의 입력 픽셀들에 대한 문제를 번갈아 고려함으로써 심지어 선택 매트릭스가 홀수 행 길이를 가질 때에도 다중-레벨 스크리닝동안 2개의 출력 픽셀들을 하나의 데이터 워드로 팩킹하는 것이다.

Description

페이지 기술 언어로 된 화일을 프린트하기 위한 세그먼트 분할 다중 레벨 스크리닝{SEGMENTED MULTILEVEL SCREENING FOR PRINTING FILES IN A PAGE DESCRIPTION LANGUAGE}
본 발명의 기술적 분야는 프린터에 관한 것이며, 좀 더 자세히는, 페이지 기술 화일(page description file) 형태의 입력 데이터를 프린트 엔진용의 제어 신호로 변환하는 전자 장치에 관한 것이다.
스크리닝(screening)이라 함은, 오직 디지털 픽셀을 생성할 수 있는 표시 장치 상에 연속적인 톤의 일루젼(illusion)을 렌더링하는 프로세스를 말한다. 이미지를 프린트하는 프로세스에서, 광범한 그레이 레벨의 입력 픽쳐는, 원상에 대해 완벽한 복제를 재생하는 프린트 장치에 의해 시뮬레이트되어야 한다. 그런데, 프린트된 이미지에 있어, 픽셀의 해상도는 육안으로 감지될 수 있는 해상도에 한정될 수 있다. 따라서, 근접한 픽셀들을 그룹화함으로써 이미지의 연속적인 톤을 시뮬레이트하는 것이 가능하다.
스크리닝은 두 가지 범주 - 2-레벨 임계 스크리닝, 및 다중-레벨 임계 스크리닝 - 중 하나에 속하는 임계 방법에 의해 생길 수 있다. 2-레벨 임계 스크리닝에 있어서, 입력 픽셀의 (x,y) 좌표는 2차원의 m×n 매크릭스로의 인덱스로 사용될 수 있다. 매트릭스의 엔트리 각각은 입력 픽셀 그레이 레벨과 비교되는 그레이 레벨 임계치이다. 2진수(0 또는 1)는 비교된 결과를 기초로 한 출력이다. 다중-레벨 스크리닝은 3차원의 룩업 테이블로 인덱싱된다. 이 3차원의 룩업 테이블은 2차원이고 크기가 M×N인 선택(preference) 매트릭스로 이루어진다. 선택 매트릭스는 이미지 공간에서 반복가능한 공간적 타일(tile)이다. 선택 매트릭스의 엔트리 각각은 (x,y)의 위치로 사용되어야 하는 톤 곡선의 수를 갖는다. 톤 곡선은 입력 픽셀 그레이 값 범위를 프린팅 프로세스의 범위 내로의 보상 이동 함수이다. 톤 곡선 이동 함수는 임계치들의 세트에 기초하여 양자화되어 룩업 테이블의 형태로 저장된다. 룩업 테이블들 각각은 크기가 b비트인 스크리닝되지 않은 입력 픽셀에 대한 2b개의 엔트리들을 포함한다. 모든 2b개의 엔트리들은 크기가 c비트이고 스크리닝된 대응하는 출력 픽셀을 가진다. 이러한 프로세스는, 프린터의 동적 범위 내에서 컬러를 합성함으로써 입력 이미지의 광범한 동적 범위를 프린터의 보다 축소된 동적 범위로 변환하는 방식을 제공한다.
본 발명은, 보다 한정된 범위의 이미지 생성기로 그레이 스케일 톤을 근사화하는 것, 즉 스크리닝으로서 공지된 프로세스에 관한 것이다. 본 발명은, 스크리닝이 필요하지 않은 경우를 차별한다. 렌더링 프로세스는 렌더링된 객체들을 가진 이미지 영역을 결정한다. 스크리닝은 상기 영역에서 일어나고 다른 영역에서는 일어나지 않는다. 스크리닝은 선택 매트릭스의 행 각각을 세그먼트로 분할한다. 이들 세그먼트와 연관된 룩업 테이블들이 순차적으로 메모리 캐쉬로 로드된다. 로드된 룩업 테이블로 맵핑하는 입력 픽셀이 스크리닝된다. 그 후, 선택 매트릭스의 다음 세그먼트와 연관된 룩업 테이블이 메모리 캐쉬로 로드되어 그 세그먼트로 맵핑하는 입력 픽셀을 스크리닝하는 데 사용된다. 본 방법은, 다중-레벨 스크리닝동안 선택 매트릭스가 홀수 개의 행 길이를 가지는 경우에도 (M이 행 길이일 때) M-1개의 입력 픽셀 및 M+1개의 입력 픽셀에 대한 문제를 번갈아 고려함으로써 2개의 출력 픽셀을 하나의 데이터 워드로 팩킹하는 것이다. M-1개의 입력 픽셀 또는 M+1개의 입력 픽셀의 세트 각각은 짝수이므로, 출력 데이터 워드로 패킹하기 위한 짝수의 픽셀에 대한 문제를 고려하는 것이 가능하게 된다.
도 1은 본 발명을 이용할 수 있는 것과 같은 이미지 프로세싱 시스템의 시스템 구조도.
도 2는 본 발명의 바람직한 실시예를 형성하는 단일 집적 회로 멀티프로세서의 구조도.
도 3은 도 2에 도시된 디지털 이미지/그래픽스 프로세서들 중 하나에 대한 블럭도.
도 4는 도 2에 도시된 디지털 이미지/그래픽스 프로세서의 동작에 대한 파이프라인 스테이지에 대한 개략도.
도 5는 본 발명의 바람직한 실시예로 매스터 프로세서의 구조도.
도 6은 매스터 프로세서의 정수 파이프라인 연산을 도시한 도면.
도 7은 매스터 프로세서의 부동 소수점 파이프라인 연산을 도시한 도면.
도 8은 페이지 기술 언어로 기입된 문서를 프린트하는 경우 전형적으로 실행되는 단계를 도시한 도면.
도 9는 바운딩 박스 방법의 응용에 대한 일 실시예를 도시한 도면.
도 10은 주사선 방법의 응용에 대한 일 실시예를 도시한 도면.
도 11은 종래 기술의 스크리닝에 전형적으로 사용된 3차원의 룩업 테이블의 구조도.
도 12는 4×4 선택 매트릭스의 일 실시예를 도시한 도면.
도 13은 홀수 원소의 행 차원을 가진 선택 매트릭스의 경우에 대한 종래 기술의 문제점을 도시한 도면.
도 14는 본 발명의 방법에 대한 특성을 개략적으로 도시한 도면.
도 15는 홀수의 행 차원을 가진 선택 매트릭스를 처리하는 본 발명의 방법을 도시한 도면.
도 16은 홀수 M을 가진 선택 매트릭스로 스크리닝을 위해 룩업 테이블에 인덱싱하는 종래 방법을 개략적으로 도시한 도면.
도 17은 홀수 M을 가진 선택 매트릭스로 스크리닝을 위해 룩업 테이블에 인덱싱하는 본 발명의 방법을 개략적으로 도시한 도면.
도 18은 종래 기술의 방법과 비교하여 본 발명의 방법의 라인 길이에 대비한 프로세싱 시간의 비 감소를 도시한 도면.
〈도면의 주요 부분에 대한 부호의 설명〉
401 : 렌더링 모듈
403, 405 : 바운딩 박스
407 : 스크리닝 모듈
409 : 4비트 출력 페이지 버퍼
411 : 프린트 연산
413 : 어레이
도 1은 본 발명에 따른 이미지 및 그래픽스 프로세싱용으로 구성된 멀티프로세서 집적 회로(100)를 포함한 네트워크 프린터 시스템(1)의 블럭도이다. 멀티프로세서 집적 회로(100)는 도 1의 네트워크 프린터 시스템의 이미지 연산을 위한 데이터 조작 및 계산을 포함한 데이터 프로세싱을 제공한다. 멀티프로세서 집적 회로(100)는 시스템 버스(2)에 양방향으로 연결된다.
도 1은 트랜시버(3)를 도시한다. 트랜시버(3)는 네트워크 프린터 버스 및 통신 채널 간의 번역 및 양방향 통신을 제공한다. 트랜시버(3)를 채용한 시스템의 일례는 근거리 통신망이다. 도 1에 도시된 네트워크 프린터 시스템은 근거리 통신망의 통신 채널을 통해 수신받은 프린트 요청에 응답한다. 멀티프로세서 집적 회로(100)는, 포스트스크립트(PostScript)와 같은 페이지 기술 언어로 기입된 프린트 작업(job)을 프린트용의 데이터 및 제어 신호로 번역하는 것을 제공한다.
도 1은 네트워크 프린터 시스템 버스와 연결된 시스템 메모리(4)를 도시한다. 상기 메모리는 비디오 랜덤 액세스 메모리, 다이내믹 랜덤 액세스 메모리, 스태틱 랜덤 액세스 메모리, EPROM, FLASH, 또는 판독 전용 메모리와 같은 비휘발성 메모리, 또는 이들 메모리형의 조합을 포함할 수 있다. 멀티프로세서 집적 회로(100)는 메모리(4)에 저장된 프로그램에 의해 전체적으로 또는 부분적으로 제어될 수 있다. 또한, 상기 메모리(4)는 다양한 종류의 그래픽 이미지 데이터를 저장한다.
도 1의 네트워크 프린터 시스템에서, 멀티프로세서 집적 회로(100)는 픽셀 맵을 통해 프린트 가능한 이미지의 사양(specification)에 대해 프린트 버퍼 메모리(5)와 통신한다. 멀티프로세서 집적 회로(100)는 네트워크 프린터 시스템 버스(2)를 통해 프린트 버퍼 메모리(5)에 저장된 이미지 데이터를 제어한다. 상기 이미지에 대응하는 데이터가 프린트 버퍼 메모리(5)로부터 재호출되어 프린트 엔진(6)에 공급된다. 프린트 엔진(6)은 프린트된 페이지 상에 컬러 도트(dot)를 두는 메커니즘을 제공한다. 또한, 프린트 엔진(6)은 용지와 프린트 헤드 제어용 멀티프로세서 집적 회로(100)로부터의 제어 신호에 응답한다. 멀티프로세서 집적 회로(100)는 프린트 정보가 프린트 버퍼 메모리(5)에 저장되는 장소를 결정하고 제어한다. 그 후, 프린트 버퍼 메모리(5)로부터의 판독동안, 멀티프로세서 집적 회로(100)는 프린트 버퍼 메모리(5)로부터 판독 시퀀스, 접근될 수 있는 어드레스, 및 프린트 엔진(6)에 의해 소정의 프린트된 이미지를 생성하는 데 필요한 제어 정보를 결정한다.
바람직한 실시예에 따르면, 본 발명은 멀티프로세서 집적 회로(100)를 이용한다. 상기 바람직한 실시예는 본 발명을 구현하는 복수의 동일한 프로세서들을 포함한다. 이러한 프로세서들 각각은 디지털 이미지/그래픽스 프로세서로 언급될 것이다. 이러한 기술(description)은 오직 편리를 위한 것이다. 본 발명을 구현하는 프로세서는 단일의 집적 회로 또는 다수의 집적 회로 상에 개별적으로 제조된 프로세서일 수 있다. 만일 단일 집적 회로 상에 구현된 것이라면, 이러한 단일의 집적 회로도 또한 디지털 이미지/그래픽스 프로세서에 의해 사용되는 판독 전용 메모리 및 랜덤 액세스 메모리를 선택적으로 포함할 수 있다.
도 2는 본 발명의 양호한 실시예의 멀티프로세서 집적 회로(100)의 구조를 도시한다. 멀티프로세서 집적 회로(100)는, 각각 다수의 섹션으로 분할된 2개의 랜덤 액세스 메모리(10 및 20); 크로스바(50); 매스터 프로세서(60); 디지털 이미지/그래픽스 프로세서(71, 72, 73, 및 74); 시스템 메모리로의 접근을 중재하는 전송 제어기(80); 및 독립적인 제1 및 제2 메모리들로의 접근을 제어할 수 있는 프레임 제어기(90)를 포함한다. 멀티프로세서 집적 회로(100)는 멀티미디어 연산과 같이 이미지 프로세싱 및 그래픽스 연산에 유용할 고차 연산 병렬 처리를 제공한다.
멀티프로세서 집적 회로(100)는 2개의 랜덤 액세스 메모리를 포함한다. 랜덤 액세스 메모리(10)는 기본적으로 매스터 프로세서(60)를 따른다. 이 메모리는 2개의 명령어 캐쉬 메모리(11 및 12), 2개의 데이터 캐쉬 메모리(13 및 14), 및 1개의 파라미터 메모리(15)를 포함한다. 이들 메모리 섹션들은 물리적으로 동일할 수 있지만, 차별적으로 연결되고 사용된다. 랜덤 액세스 메모리(20)는 매스터 프로세서(60) 및 디지털 이미지/그래픽스 프로세서들(71, 72, 73 및 74) 각각으로 접근할 수 있다. 디지털 이미지/그래픽스 프로세서들(71, 72, 73 및 74) 각각은 5개의 대응하는 메모리 섹션을 가진다. 이들은 1개의 명령어 캐쉬 메모리, 3개의 데이터 메모리 및 하나의 파라미터 메모리를 포함한다. 따라서 디지털 이미지/그래픽스 프로세서(71)는 대응하는 명령어 캐쉬 메모리(21), 데이터 메모리(22, 23, 및 24), 및 파라미터 메모리(25)를 가진다; 디지털 이미지/그래픽스 프로세서(72)는 대응하는 명령어 캐쉬 메모리(26), 데이터 메모리(27, 28, 및 29), 및 파라미터 메모리(30)를 가진다; 디지털 이미지/그래픽스 프로세서(73)는 대응하는 명령어 캐쉬 메모리(31), 데이터 메모리(32, 33, 및 34), 및 파라미터 메모리(35)를 가진다; 디지털 이미지/그래픽스 프로세서(74)는 대응하는 명령어 캐쉬 메모리(36), 데이터 메모리(37, 38, 및 39), 및 파라미터 메모리(40)를 가진다. 랜덤 액세스 메모리의 섹션과 같이, 이들 메모리 섹션들은 물리적으로 동일할 수 있지만, 차별적으로 연결되고 사용된다. 바람직하게도, 이들 메모리(10 및 20)의 메모리 섹션들 각각은, 50K 바이트의 멀티프로세서 집적 회로(100) 내에 전체 메모리와 함께 2K 바이트를 포함한다.
멀티프로세서 집적 회로(100)는 복수의 독립 병렬 데이터 전송을 사용하여 프로세서들과 메모리간의 고속 데이터 전송율을 제공한다. 크로스바(50)는 상기 데이터 전송을 가능하게 한다. 디지털 이미지/그랙픽스 프로세서(71, 72, 73, 및 74)는, 각 사이클마다 동시에 동작할 수 있는 3개의 메모리 포트를 가진다. 명령어 포트(I)는 대응하는 명령어 캐쉬로부터 64비트 데이터 워드를 페치(fetch)할수 있다. 로컬 데이터 포트(L)는, 디지털 이미지/그래픽스 프로세서에 대응하는 데이터 메모리 또는 파라미터 메모리로부터 32비트 데이터 워드를 판독하거나, 상기 메모리에 32비트 데이터 워드를 기록할 수 있다. 글로벌 데이터 포트(G)는 데이터 메모리 또는 파라미터 메모리 중 어느 하나 또는 랜덤 액세스 메모리(20)로부터 32비트 데이터 워드를 판독하거나, 상기 메모리에 32비트 데이터 워드를 기록할 수 있다. 매스터 프로세서(60)는 2개의 메모리 포트를 포함한다. 명령어 포트(I)는 명령어 캐쉬들(11 및 12) 중 하나로부터 32비트 명령어 워드를 페치할 수 있다. 데이터 포트(C)는, 데이터 메모리, 파라미터 메모리, 또는 랜덤 액세스 메모리(20) 중 어느 하나, 데이터 캐쉬(13 또는 14), 또는 랜덤 액세스 메모리(10)의 파라미터 메모리(15)로부터 32비트 데이터 워드를 판독하거나 상기 메모리에 32비트 데이터 워드를 기록할 수 있다. 전송 제어기(80)는 데이터 포트(C)를 통해 랜덤 액세스 메모리(10 또는 20)의 섹션들 중 어떤 것일지라도 접근할 수 있다. 따라서, 15번째 병렬 메모리 접근은 어떤 단일 메모리 사이클에서도 요청될 수 있다. 랜덤 액세스 메모리(10 및 20)는 다수의 병렬 접근을 지원하기 위한 메모리들로 분할된다.
크로스바(50)는 매스터 프로세서(60), 디지털 이미지/그래픽스 프로세서들(71, 72, 73, 및 74), 및 메모리(10 및 20)를 가진 전송 제어기(80)의 연결을 제어한다. 크로스바(50)는 행 및 열로 배치된 다수의 교차점(51)을 포함한다. 교차점(51)의 열 각각은 단일 메모리 섹션 및 대응하는 어드레스의 범위에 대응한다. 프로세서는, 이 프로세서에 의한 어드레스 출력의 최상위 비트를 통해서 메모리 섹션들 중 하나로의 접근을 요청한다. 프로세스에 의한 이러한 어드레스 출력은 행을 따라 이동한다. 상기 어드레스를 가진 메모리 섹션에 대응하는 교차점(51)은 메모리 섹션으로의 접근을 허가 또는 거부함으로써 응답한다. 만일 어떤 다른 프로세서도 현재 메모리 사이클동안 메모리 섹션으로의 접근을 요청하지 않는다면, 교차점(51)은 행 및 열을 연결함으로써 접근을 허가한다. 메모리 섹션은 그 어드레스에서의 데이터 접근을 허용함으로써 응답한다. 이러한 데이터 접근은 데이터 판독 연산 또는 데이터 기록 연산 중 하나일 것이다.
만일 하나 이상의 프로세서가 동시에 동일한 메모리 섹션으로의 접근을 요청한다면, 크로스바(50)는 요청하는 프로세서들 중 오직 하나에만 접근을 허가한다. 크로스바(50)의 열 각각에서의 교차점(51)은 우선 순위 계층에 기초한 접근을 허가한다. 만일 동일 순위의 두 프로세서가 동시에 접근을 요청한다면, 크로스바(50)는, 가장 나중에 접근을 허가받는 프로세서가 가장 낮은 우선 순위를 가지는 라운드 로빈에 기초하여 접근을 허가한다. 요청을 제공해야 할 필요가 있는 한, 접근을 허가받은 각 프로세서는 지속된다. 프로세서가 매 메모리 사이클마다 어드레스를 변경할 수 있어서, 크로스바(50)는 사이클을 기초으로 하여, 한 사이클에서 프로세서들과 메모리 간의 상호 연결을 변경할 수 있다.
매스터 프로세서(60)는 멀티프로세서 집적 회로(100)를 위한 주요 제어 기능을 바람직하게 수행한다. 매스터 프로세서(60)는 하드웨어 부동 소수점 연산 유닛을 포함한 32비트 축소 명령어 세트 컴퓨터 프로세서(reduced instruction set computer ; RISC)이다. RISC 구조에 따르면, 메모리로의 모든 접근은 명령어를 로드하고 저장하는 것과 함께 수행되며, 대부분의 정수 및 논리 연산은 레지스터 상에서 한 사이클 내에 수행된다. 그러나, 부동 소수점 연산 유닛은, 정수 및 논리 유닛이 사용하는 바와 동일한 레지스터 화일을 이용하는 경우에는 연산을 수행하는 데 수개의 사이클이 걸린다. 레지스터 스코어 보드(score board)는 정확한 레지스터 접근 시퀀스가 유지되는 것을 보증한다. RISC 구조는 이미지 프로세싱에 있어서의 제어 기능에 대해 적절하다. 부동 소수점 연산 유닛은, 이미지 프로세싱에 중요할 수 있는 이미지 회전 함수를 고속으로 계산할 수 있다.
매스터 프로세서(60)는 명령어 캐쉬 메모리(11 또는 12)로부터 명령어 워드를 페치한다. 그렇지 않은 경우, 매스터 프로세서(60)는 데이터 캐쉬(13 또는 14)로부터 데이터를 페치한다. 메모리 섹션 각각이 메모리의 2K 바이트를 포함하므로, 명령어 캐쉬에는 4K 바이트가, 데이터 캐쉬에는 4K 바이트가 있다. 캐쉬 제어는 매스터 프로세서(60)의 중요한 기능이다. 상기한 바와 같이, 매스터 프로세서(60)도 또한 크로스바(50)를 통해 다른 메모리 섹션들에 접근할 수 있다.
4개의 디지털 이미지/그래픽스 프로세서(71, 72, 73, 및 74) 각각은 고차 병렬 디지털 신호 프로세서(DSP)를 가진다. 도 3은 디지털 이미지/그래픽스 프로세서들(72, 73, 및 74)과 동일한, 대표적인 디지털 이미지/그래픽스 프로세서(71)의 개략도를 예시한다. 디지털 이미지/그래픽스 프로세서(71)는 3개의 개별적인 유닛 - 데이터 유닛(110); 어드레스 유닛(120); 프로그램 흐름 제어 유닛(130) - 을 이용한 고차 병렬 연산을 달성한다. 이러한 3개의 유닛은 명령어 파이프라인에 있는 다른 명령어를 동시에 연산한다. 그 외에, 이러한 유닛들 각각은 내부 병렬 처리를 포함한다.
디지털 이미지/그래픽스 프로세서(71, 72, 73, 및 74)는 다중 명령어 다중 데이터 모드(MIMD)에서 독립된 명령어 스트림을 실행할 수 있다. MIMD 모드에서, 디지털 이미지/그래픽스 프로세서들 각각은, 대응하는 명령어 캐쉬로부터 각각의 프로그램을 실행하며 독립적이거나 공동으로 동작할 수 있다. 후자의 경우에, 크로스바(50)는 공유된 메모리와 공동으로 내부-프로세서 통신을 가능하게 한다. 또한, 디지털 이미지/그래픽스 프로세서(71, 72, 73, 및 74)는 동기화된 MIMD 모드에서 동작할 수 있다. 동기화된 MIMD 모드에서, 디지털 이미지/그래픽스 프로세서 각각의 프로그램 흐름 제어 유닛(130)은, 모든 동기화된 프로세서가 개시할 준비가 될 때까지 다음 명령어의 페치를 제지한다. 이러한 동기화된 MIMD 모드는, 디지털 이미지/그래픽스 프로세서들의 개별적인 프로그램들이, 밀접하게 연결된 동작에서 폐쇄된 스테이지(lock stage)로 실행되게 한다.
디지털 이미지/그래픽스 프로세스(71, 72, 73, 및 74)는 단일 명령어 다중 데이터 모드(SIMD)에서 상이한 데이터에 대해 동일한 명령어들을 실행할 수 있다. 이러한 모드에서, 4개의 디지털 이미지/그래픽스 프로세서에 대한 단일 명령어 스트림은 명령어 캐쉬 메모리(21)에서 발생된다. 디지털 이미지/그래픽스 프로세서(71)는 연산을 페치하고 분기하는 것을 제어하며, 크로스바(50)는 다른 디지털 이미지/그래픽스 프로세서들(72, 73, 및 74)에 동일한 명령어를 공급한다. 디지털 이미지/그래픽스 프로세스(71)가 모든 디지털 이미지/그래픽스 프로세서들(71, 72, 73, 및 74)에 대한 명령어 페치를 제어하기 때문에, SIMD 모드에서의 디지털 이미지/그래픽스 프로세서들은 본래부터 동기화된다.
전송 제어기(80)는 복합 직접 메모리 액세스 머신(combined direct memory access (DMA) machine) 및 멀티프로세서 집적 회로(100)를 위한 메모리 인터페이스이다. 전송 제어기(80)는 지능적으로 대기 행렬에 등록하고(queue), 우선 순위를 설정하여 5개의 프로그램 가능한 프로세서들의 데이터 요청 및 캐쉬 미스를 서비스한다. 매스터 프로세서(60) 및 디지털 이미지/그래픽스 프로세서(71, 72, 73, 및 74) 모두는 전송 제어기(80)를 통해 외부 메모리 및 시스템을 멀티프로세서 집적 회로(100)에 액세스한다. 데이터 캐쉬 또는 명령어 캐쉬 미스가 자동적으로 전송 제어기(80)에 의해 처리된다. 캐쉬 서비스(S) 포트는 상기의 캐쉬 미스를 전송 제어기(80)로 전달한다. 캐쉬 서비스 포트(S)는 프로세서로부터 정보를 판독하며, 메모리로부터 정보를 판독하지 않는다. 매스터 프로세서(60) 및 디지털 이미지/그래픽스 프로세서(71, 72, 73, 및 74)는 전송 제어기(80)로부터의 데이터 전송을 연결 리스트 패킷 요청으로서 요청할 수 있다. 이 연결 리스트 패킷 요청은, 정보의 다차원 블럭이 멀티프로세서 집적 회로(100) 내부 또는 외부에 있을 수 있는 소스 및 데스티네이션 메모리 어드레스 간에 전송되도록 할 수 있다. 또한 바람직하게도 전송 제어기(80)는 데이터를 보유하기 위해 주기적 리프레시(refresh)를 필요로 하는 다이내믹 랜덤 액세스 메모리(DRAM)용의 리프레시 제어기를 포함한다.
프레임 제어기(90)는 멀티프로세서 집적 회로(100), 외부 이미지 캡쳐(capture), 및 디스플레이 시스템 간의 인터페이스이다. 프레임 제어기(90)는 캡쳐 및 디스플레이 시스템에 대한 제어를 제공하며, 이러한 소자들 및 메모리들 간의 데이터 이동을 자동적으로 관리한다. 이 때문에, 프레임 제어기(90)는 2개의 독립된 이미지 시스템에 대한 동시 제어를 제공한다. 이는 전형적으로 프레임 제어기(90)의 응용이 사용자에 의해 제어됨에도 불구하고, 이미지 캡쳐를 위한 제1 이미지 시스템 및 이미지 디스플레이를 위한 제2 이미지 시스템을 포함한다. 대개 이러한 이미지 시스템은 프레임 그래버(grabber) 또는 프레임 버퍼 저장 장치에 사용되는 독립적인 프레임 메모리들을 포함한다. 바람직하게도, 프레임 제어기(90)는 리프레시 및 시프트 레지스터 제어를 통해 비디오 다이내믹 랜덤 액세스 메모리(VRAM)를 제어하도록 동작한다.
멀티프로세서 집적 회로(100)는 대규모 이미지 프로세싱용으로 설계된다. 매스터 프로세서(60)는, 디지털 이미지/그래픽스 프로세서(71, 72, 73, 및 74)의 작업을 결집하고 이들 프로세서가 생성한 결과를 해석하는, 내장된 제어를 제공한다. 디지털 이미지/그래픽스 프로세서(71, 72, 73, 및 74)는 픽셀 분석 및 가공에 매우 적합하다. 만일 픽셀이 데이터에서는 하이(high)로, 정보에서는 로우(low)로 간주되는 경우, 전형적인 응용에서, 디지털 이미지/그래픽스 프로세서(71, 72, 73, 및 74)는 픽셀을 적절히 검사하여 가공하지 않은 데이터를 정보로 변환한다. 그 후, 이러한 정보는 디지털 이미지/그래픽스 프로세서(71, 72, 73, 및 74) 또는 매스터 프로세서(60)에 의해 분석될 수 있다. 크로스바(50)는 멀티프로세서 집적 회로(100)가 공유 메모리 시스템으로서 구현되는 것을 가능하게 한다. 이러한 구조에서 메시지 전달은 통신의 기본적인 형태일 필요가 없다. 그러나, 메시지는 공유된 메모리를 통해 전달될 수는 있다. 각각의 디지털 이미지/그래픽스 프로세서, 크로스바(50)의 대응하는 섹션, 및 메모리(20)의 대응하는 섹션은 동일한 폭(width)을 가진다. 이는 동일한 핀 아웃(pin out)을 모듈로서 유지하면서 디지털 이미지/그래픽스 프로세서들 및 대응하는 메모리의 부가 또는 제거를 조정함으로써 구조상의 유연성(flexibility)을 가진다.
바람직한 실시예에서, 멀티프로세서 집적 회로(100)의 모든 부분들은 단일 집적 회로 상에 배치된다. 바람직한 실시예에서, 멀티프로세서 집적 회로(100)는 0.6m의 확장(feature) 크기를 가지는 상보형 금속 산화막 반도체(CMOS)에 형성된다. 바람직하게, 멀리프로세서 집적 회로(100)는 256핀을 가지는 핀 그리드(grid) 어레이 팩키지로 이루어진다. 바람직하게, 입력 및 출력은 트랜지스터-트랜지스터 논리(TTL) 논리 전압과 호환가능하다. 바람직하게, 멀티프로세서 집적 회로(100)는 약 3백만 트랜지스터를 포함하며, 50MHz의 클럭률을 가진다.
도 3은, 디지털 이미지/그래픽스 프로세서들(72, 73, 및 74)과 실질적으로 동일한, 예시적인 디지털 이미지/그래픽스 프로세서(71)의 개략도를 예시한다. 디지털 이미지/그래픽스 프로세서(71)는 데이터 유닛(110), 어드레스 유닛(120), 및 프로그램 흐름 제어 유닛(130)을 포함한다. 데이터 유닛(110)은 논리적인 또는 산술적인 데이터 연산들을 수행한다. 데이터 유닛(110)은 8개의 데이터 레지스터(D7 - D0), 1개의 상태 레지스터(210), 및 1개의 다중 플래그 레지스터(211)를 포함한다. 어드레스 유닛(120)은 로컬 데이터 포트 및 글로벌 데이터 포트용 로드/저장 어드레스의 생성을 제어한다. 이하 더 기술되는 바와 같이, 어드레스 유닛(120)은 실질적으로 동일한 2개 - 로컬 어드레싱용 및 글로벌 어드레싱용 - 의 어드레싱 유닛을 포함한다. 이들 어드레싱 유닛 각각은, 상대 어드레스 모드에서 절대 어드레싱을 가능하게 하며 모두 "0"인 1개의 판독 전용 레지스터, 1개의 스택 포인터, 5개의 어드레스 레지스터, 및 3개의 인덱스 레지스터를 포함한다. 어드레싱 유닛들은, 어드레싱 유닛 둘 모두로부터 머징(merging) 어드레스를 형성하는 경우에 사용되는 글로벌 비트 멀티플렉스 제어 레지스터를 공유한다. 프로그램 흐름 제어 유닛(130)은, 명령어 포트를 통해 명령어 페치용 어드레스의 생성을 포함하여 디지털 이미지/그래픽스 프로세서(71)에 대한 프로그램 흐름을 제어한다. 프로그램 흐름 제어 유닛(130)은 다음을 포함한다: 프로그램 카운터(PC, 701); 어드레스 파이프라인 스테이지에서 현재 명령어의 어드레스를 보유하는 명령어 포인터-어드레스 스테이지(IRA, 702); 실행 파이프라인 스테이지에서 현재 명령어의 어드레스를 보유하는 명령어 포인터-실행 스테이지(IRE, 703); 하위 루틴으로부터의 반환을 위해 어드레스를 보유하는 하위 루틴으로부터의 명령어 포인터-반환(IPRS, 704); 제로 오버헤드 루프를 제어하는 레지스터들의 세트; 4개의 명령어 워드 블럭들의 최하위 비트를 대응하는 명령어 캐쉬 메모리에 보유하며 집합적으로 호출되는 4개의 캐쉬 태크 레지스터(TAG3 - TAG0, 708).
디지털 이미지/그래픽스 프로세서(71)는 도 4에 도시된 바와 같이 3개의 스테이지 파이프라인에서 동작한다. 데이터 유닛(110), 어드레스 유닛(120) 및 프로그램 흐름 제어 유닛(130)은 하나의 명령어 파이프라인에서 상이한 명령어로 동시에 동작한다. 시간순의 3개의 스테이지는 페치, 어드레싱, 및 실행이다. 따라서, 임의의 시간에서, 디지털 이미지/그래픽스 프로세서(71)는 다른 기능의 3개의 명령어로 동작할 것이다. 파이프라인이 진행되는 경우에 특정 이벤트가 발생하는 것을 지시하기 위해서, 구(phrase) 파이프라인 스테이지가 클럭 사이클을 참조하는 것 대신에 이용되며, 기능 정지(stall) 상태동안에는 이용되지 않는다.
프로그램 흐름 제어 유닛(130)은 페치 파이프라인 스테이지동안 발생하는 모든 연산들을 수행한다. 프로그램 흐름 제어 유닛(130)은 프로그램 카운터, 루프 논리, 인터럽트 논리, 및 파이프라인 제어 논리를 포함한다. 페치 파이프라인 스테이지동안, 다음 명령어 워드가 메모리로부터 페치된다. 다음 명령어 워드가 명령어 캐쉬 메모리(21)에 저장되어 있는지를 결정하기 위해, 프로그램 카운터에 포함되어 있는 어드레스가 캐쉬 태그 레지스터와 비교된다. 다음 명령어 워드가 명령어 캐쉬 메모리(21)에 존재하는 경우에, 상기 다음 명령어 워드를 명령어 캐쉬 메모리(21)로부터 페치하기 위해, 프로그램 흐름 제어 유닛(130)은 프로그램 카운터의 어드레스를 명령어 포트 어드레스 버스(131)에 공급한다. 크로스바(50)는 상기 어드레스를 대응하는 명령어 캐쉬 - 여기서는, 명령어 버스(132)상으로 명령어 워드를 반환하는 명령어 캐쉬 메모리(21) - 로 전송한다. 그렇지 않은 경우, 캐쉬 미스가 발생하고, 전송 제어기(80)는 다음 명령어 워드를 얻기 위해 외부 메모리에 접근한다. 프로그램 카운터가 갱신된다. 다음 명령어 워드가 다음 순차 어드레스인 경우에는, 프로그램 흐름 제어 유닛(130)은 프로그램 카운터를 사후(post) 증가시킨다. 그렇지 않은 경우에는, 프로그램 흐름 제어 유닛(130)이 루프 논리 또는 소프트웨어 분기에 따라 다음 명령어 워드의 어드레스를 로드한다. 동기화된 MIMD 모드가 활성 중이면, 통신 레지스터들에서의 동기화 비트에 의해 지시되는 바에 따라서 모든 특정 디지털 이미지/그래픽스 프로세서들이 동기화될 때까지, 명령어 페치는 대기하게 된다.
어드레스 유닛(120)은 어드레스 파이프라인 스테이지의 모든 어드레스 계산을 수행한다. 어드레스 유닛(120)은 글로벌 포트용 및 로컬 포트용의 2개의 독립된 어드레스 유닛을 포함한다. 명령어가 1 또는 2개의 메모리 액세스들을 호출하는 경우, 어드레스 유닛(120)은 어드레스 파이프라인 스테이지동안 어드레스(들)를 생성한다. 어드레스(들)는, 경합(contention) 검출/우선 순위 결정을 위해 글로벌 포트 어드레스 버스(121) 및 로컬 포트 어드레스 버스(122) 각각을 통해서 크로스바(50)에 공급된다. 경합이 없는 경우, 액세스된 메모리는 요청된 액세스를 허가할 준비를 하지만, 다음 실행 파이프라인 스테이지동안 메모리 액세스가 발생하게 된다.
데이터 유닛(110)은 실행 파이프라인 스테이지동안 모든 논리 및 산술 연산을 수행한다. 모든 논리 및 산술 연산 및, 메모리로 또는 메모리로의 모든 데이터 이동은 실행 파이프라인 스테이지동안 발생한다. 실행 파이프라인 스테이지동안 글로벌 데이터 포트 및 로컬 데이터 포트는, 어드레스 파이프라인 스페이지동안에 개시된 임의의 데이터 액세스를 완료한다. 글로벌 데이터 포트 및 로컬 데이터 포트는 메모리 저장에 의해 요구되는 모든 데이터 조정 및 메모리 로드에 의해 요구되는 임의의 데이터 추출 및 부호 확장을 수행한다. 만일 프로그램 카운터가 실행 파이프라인 스페이지의 임의의 연산동안 데이터 목적지로서 특정되면, 임의의 분기가 실행되기 전에 2개의 명령어 지연이 발생하게 된다. 상기 분기 명령어 이후의 다음 2개의 명령어가 이미 페치되었기 때문에, 파이프라인된 연산이 이러한 지연을 요구한다. RISC 프로세서에서의 실시에 따르면, 다른 유용한 명령어가 2개의 지연 슬롯 위치에 배치될 수 있다.
디지털 이미지/그래픽스 프로세서(71)는 3개의 내부 32비트 데이터 버스를 포함한다. 이들은 로컬 포트 데이터 버스(Lbus, 103), 글로벌 포트 소스 데이터 버스(Gsrc, 105), 및 글로벌 포트 데스티네이션 데이터 버스(Gdst, 107)이다. 이러한 3개의 버스는 데이터 유닛(110), 어드레스 유닛(120), 및 프로그램 흐름 제어 유닛(130)을 상호 연결한다. 또한, 이러한 3개의 버스는 로컬 포트(141) 및 글로벌 포트(145)를 가진 데이터 포트 유닛(140)에 연결된다. 데이터 포트 유닛(140)은 메모리 액세스를 제공하는 크로스바(50)에 연결된다.
로컬 데이터 포트(141)는 메모리에 데이터를 저장하기 위한 버퍼이다. 멀티플렉서/버퍼 회로(143)는, 데이터를 크로스바(50)를 통해 로컬 포트 데이터 버스(144), 로컬 포트 어드레스 버스(122), 또는 글로벌 포트 데이터 버스(148)로부터 메모리로 Lbus(103)상에 로드한다. 따라서, 로컬 포트 데이터 버스(Lbus, 103)는 레지스터가 소스가 되는 (저장), 또는 메모리가 소스가 되는 (로드) 32비트 데이터를 전송한다. 유리하게도, 어드레스 유닛(120)의 산술 결과는, 데이터 유닛(110)의 산술 연산을 보충하기 위해, 로컬 포트 어드레스 버스(122) 및 멀티플렉서 버퍼(143)를 통해 로컬 포트 데이터 버스(Lbus, 103)에 공급될 수 있다. 이는 이하 더 설명된다. 버퍼(142) 및 멀티플렉서 버퍼(143)는 데이터의 조정 및 추출을 수행한다. 로컬 포트 데이터 버스(Lbus, 103)는 데이터 유닛(110)의 데이터 레지스터에 연결된다. 또한, 로컬 버스 일시 보유 레지스터(local bus temporary holding register ; LTD, 104)가 로컬 포트 데이터 버스(Lbus, 103)에 연결된다.
글로벌 포트 소스 데이터 버스(Gsrc, 105) 및 글로벌 포트 데스티네이션 데이터 버스(Gdst, 107)는 글로벌 데이터 전송을 전달한다. 이러한 글로벌 데이터 전송은 메모리 액세스, 레지스터간 이동, 또는 프로세서간의 커맨드(command) 워드 전송일 수 있다. 글로벌 포트 소스 데이터 버스(Gsrc, 105)는 글로벌 포트 데이터 전송에 대한 32비트 소스 정보를 전송한다. 데이터 소스는, 디지털 이미지/그래픽스 프로세서(71)의 레지스터들 중 하나, 또는 디지털 이미지/그래픽스 프로세서들(71, 72, 73, 및 74) 중 하나에 대응하는 파라미터 메모리일 수 있다. 데이터는 글로벌 포트(145)를 통해 메모리에 저장된다. 멀티플렉서 버퍼(146)는 로컬 포트 데이터 버스(Lbus, 103) 또는 글로벌 포트 소스 데이터 버스(Gsrc, 105)로부터 라인(lines)을 선택하고, 데이터 조정을 수행한다. 멀티플렉서 버퍼(146)는 어플리케이션용 글로벌 포트 데이터 버스(148) 상의 데이터를 크로스바(50)를 통해 메모리에 기록한다. 또한, 글로벌 포트 소스 데이터 버스(Gsrc, 105)는 데이터를 데이터 유닛에 제공하여, 글로벌 포트 소스 데이터 버스(Gsrc, 105)의 데이터가 산술 논리 유닛 소스들 중 하나로 이용되는 것을 허용한다. 상기 후자의 연결로 디지털 이미지/그래픽스 프로세서(71)의 임의의 레지스터가 산술 논리 유닛 연산을 위한 소스가 될 수 있다.
글로벌 포트 데스티네이션 데이터 버스(Gdst, 107)는 글로벌 버스 데이터 전송의 32비트 데스티네이션 데이터를 전송한다. 데스티네이션은 디지털 이미지/그래픽스 프로세서(71)의 임의의 레지스터이다. 글로벌 포트(145)의 버퍼(147)는 글로벌 포트 데스티네이션 데이터 버스(Gdst, 107)의 데이터를 소스로 한다. 버퍼(147)는 임의의 요구된 데이터 추출 및 부호 확장 연산을 수행한다. 데이터 소스가 메모리이면 상기 버퍼(115)가 동작하여, 로드가 수행된다. 산술 논리 유닛의 결과는 글로벌 포트 데스티네이션 데이터 버스(Gdst, 107)에 대한 선택적 데이터 소스로서 제공된다. 이는 디지털 이미지/그래픽스 프로세서(71)의 임의의 레지스터가 산술 논리 유닛 연산의 데스티네이션이 되는 것을 가능하게 한다. 또한, 글로벌 버스 일시 보유 레지스터(global bus temporary holding register ; GTD, 108)가 글로벌 포트 데스터네이션 데이터 버스(Gdst, 107)에 연결되어 있다.
레지스터 간 이동을 제공하기 위해, 멀티플렉서 버퍼들(143 및 146)을 포함한 회로가 글로벌 포트 소스 버스(Gsrc, 105) 및 글로벌 포트 데스티네이션 데이터 버스(Gdst, 107) 사이에 연결된다. 이것은, 글로벌 포트 소스 데이터 버스(Gsrc, 105) 상에서 디지털 이미지/그래픽스 프로세서(71)의 임의의 레지스터로부터 판독한 것을, 글로벌 포트 데스티네이션 데이터 버스(Gdst, 107)를 통해 디지털 이미지/그래픽스 프로세서(71)의 임의의 레지스터에 기록하는 것을 가능하게 한다.
유리하게도, 동시에 글로벌 포트 소스 데이터 버스(Gsrc, 105)를 통해 임의의 레지스터로부터 데이터 유닛(110)의 산술 논리 유닛을 소스로 하면서, 글로벌 포트 데스티네이션 데이터 버스(Gdst, 107)를 통해 메모리로부터 디지털 이미지/그래픽스 프로세서(71)의 임의의 레지스터에 대한 로드를 수행하는 것이 가능하다는 것을 주목하라. 유사하게, 유리하게도, 산술 논리 유닛 연산의 결과를 글로벌 포트 데스티네이션 데이터 버스(Gdst, 107)를 통해 디지털 이미지/그래픽스 프로세서(71)의 임의의 레지스터에 저장하면서, 디지털 이미지/그래픽스 프로세서(71)의 임의의 레지스터에 있는 데이터를 글로벌 포트 소스 데이터 버스(Gsrc, 105)를 통해 메모리에 저장하는 것이 가능하다. 이러한 데이터 전송의 유용성은 이하 더 설명된다.
프로그램 흐름 제어 유닛(130)은 명령어 버스(132)를 통해 명령어 캐쉬 메모리(21)로부터 페치된 명령어 워드를 수신한다. 유리하게도, 상기 페치된 명령어 유닛은, 명령어 레지스터-어드레스 스테이지(IRA, 751) 및 명령어 레지스터-실행 스테이지(IRE, 752)로 지정된 2개의 64비트 명령어 레지스터에 저장된다. 명령어 레지스터들(IRA 및 IRE) 각각은 그들의 내용을 디코딩하고 분산시킨다. 디지털 이미지/그래픽스 프로세서(71)는 복호화되거나 부분적으로 디코딩된 명령어 내용을 데이터 유닛(110) 및 어드레스 유닛(120)에 전송하는 op코드(opcode) 버스(133)를 포함한다. 이후 설명되는 바와 같이, 명령어 워드는 32비트, 15비트, 또는 3비트 직접 필드(immediate field)를 포함한다. 프로그램 흐름 제어 유닛(130)은 상기 직접 필드를 그 데스티네이션에 제공하기 위한 글로벌 포트 소스 데이터 버스(Gsrc, 105)로 루트를 정한다.
디지털 이미지/그래픽 프로세서(71)는 3개의 어드레스 버스(121, 122, 및 131)를 포함한다. 어드레스 유닛(120)은 글로벌 포트 어드레스 버스(121) 및 로컬 포트 어드레스 버스(122) 상에 어드레스를 생성한다. 이하 더 설명되는 바와 같이, 어드레스 유닛(120)은 분리된 글로벌 및 로컬 어드레스 유닛을 포함하며, 글로벌 포트 어드레스 버스(121) 및 로컬 포트 어드레스 버스(122)에 각각 어드레스를 제공한다. 로컬 어드레스 유닛(620)이 디지털 이미지/그래픽스 프로세서에 대응하는 데이터 메모리외의 다른 메모리에 액세스할 수 있다는 것을 주목하라. 그러한 경우, 로컬 어드레스 유닛 액세스는 글로벌 포트 어드레스 버스(121)를 통한다. 프로그램 흐름 제어 유닛(130)은, 프로그램 카운터 및 캐쉬 제어 논리로부터의 어드레스 비트들의 조합으로부터 명령어 포트 어드레스 버스(131) 상의 명령어 어드레스의 소스가 된다. 이들 어드레스 버스(121, 122, 및 131) 각각은 어드레스 바이트 스트로브, 및 판독/기록 정보를 전송한다.
도 5는 매스터 프로세서(60)의 개략도를 도시한다. 매스터 프로세서(60)의 주요 블럭은: 부동 소수점 유닛(FPU, 201); 레지스터 화일(202); 레지스터 화일(202)에 공유된 기록 포트로의 액세스를 위해 데이터 캐쉬 및 부동 소수점 유닛(201)의 소스 및 임의부(arbitrates)로서 이용되기 전에 부동 소수점 연산 및 메모리 로드가 이용가능하다는 것을 보증하는 레지스터 스코어보드(scoreboard ; SB)(203); 또한 크로스바를 통해서 온-칩(on-chip) 메모리로, 그리고 전송 프로세서(80)를 통해서 외부 메모리로의 인터페이스를 처리하는 데이터 캐쉬 제어기(204); 쉬프트 명령어를 수행하는 배럴 쉬프터(barrel shifter ; BS, 205); 제로 비교 논리(206); 최좌측의 1/최우측의 1 검출 논리(LMO/RMO, 207); 뎃셈, 뺄셈, 및 논리 연산에 사용되며, 상대적 분기동안 분기 목표 어드레스를 계산하는 정수 산술 논리 유닛(ALU, 208); 매스터 프로세서 인터럽트 신호를 수신하는 인터럽트 대기 레지스터(INTPEN, 209); 인터럽트를 선택적으로 허가 또는 금지하는 인터럽트 가능 레지스터(IE, 210); 페치할 명령어의 어드레스를 보유하는 프로그램 카운터 레지스터(PC, 211); 다음 명령어를 가리키도록 프로그램 카운터(211)를 증분시키며, 그 증분된 값을 "반환" 또는 "링크" 어드레스로서 레지스터 화일로 루트를 정할 수 있는 프로그램 카운터 증분기(INC, 212); 명령어를 디코딩하고 연산 유닛에 제어 신호를 공급하는 명령어 디코드 논리(DECODE, 213); 실행할 명령어의 어드레스를 보유하는 명령어 레지스터(IR, 214); 임의의 명령어를 일시적인 데이터로서 저장하는 일시 레지스터(IMM, 215); 및 실행할 명령어, 캐쉬 파일에 대한 전송 프로세서(80)로의 인터페이스를 제공하는 명령어 캐쉬 제어기(ICACHE, 216)이다.
도 6은 매스터 프로세서(60)에 사용되는 기본적인 파이프라인을 도시한다. 매스터 프로세서(60)는 페치, 실행 및 메모리 스테이지를 포함한 3가지의 스테이지를 가진다. 도 6은 3가지 명령어가 파이프라인을 통하는 방법을 도시한다. 파이프라인의 페치 스테이지동안, 프로그램 카운터(210)는 명령어 캐쉬를 어드레싱하고 32비트 명령어를 판독한다. 실행 스테이지동안, 명령어가 디코딩되고, 소스 피연산자가 레지스터 화일로부터 판독되어, 연산이 수행되고, 그 결과가 레지스터 화일에 기록된다. 메모리 스테이지는 연산을 로드하고 저장하기 위해서 있을 뿐이다. 실행 스테이지동안 계산된 어드레스는 데이터 캐쉬를 어드레싱하는 데 사용되어 데이터가 판독되거나 기록된다. 만일 명령어 캐쉬에서 실패(miss)가 발생하는 경우, 페치 및 실행 파이프라인은 요청이 제공될 수 있을 때까지 기능 정지에 있게 된다. 만일 데이터 캐쉬에서 실패가 발생한 경우, 메모리 파이프라인은 기능 정지하지만, 페치 및 실행 파이프라인은 또 다른 메모리 연산이 초기화될 필요가 있을 때까지 계속해서 진행한다.
도 7은 부동 소수점 유닛(201)에 대한 기본적인 파이프라인을 도시한다. 페치 스테이지는 상기 설명된 정수 연산의 페치 스테이지와 동일하다. 부동 소수점 명령어의 언팩(unpack) 스테이지동안, 부동 소수점 연산을 시작하는 데 필요한 모든 데이터가 소스 피연산자, op코드, 정밀도(precision), 및 데스티네이션 어드레스를 포함하여 도달한다. 2개의 소스 피연산자는 레지스터 화일로부터 판독된다. 그 후, 피연산자가 부호, 지수, 가수 필드로 언팩되며, 특정한 경우의 검출이 있다. 입력 예외가 이 사이클에서 검출된다. 그리고, 입력 예외는 부동 소수점 유닛(201)을 통해 파이프(pipe)될 것이며, 단일 정밀도 출력 예외로서 동일한 사이클에서 신호될 것이다. 숫자가 아닌 신호, 감춰진(quiet) 숫자가 아닌 신호, 무한대, 비정상, 및 0을 포함한 다른 특정한 경우들도 검출되며, 사용자가 볼 수 없는 이러한 정보가 부동 소수점 유닛(201)의 다른 파이프라인 스테이지들을 통해 데이터 다음에 온다.
모든 계산은 동작 스테이지동안 일어난다. 명령어의 종류에 따라, 동작 스테이지에서 여러 가지 사이클들이 요구될 수 있다.
출력 예외는 최종 정규화 스테이지에서 검출된다. 부동 소수점 유닛(201) 결과가 결정되는 경우, 이러한 부동 소수점 연산에 관한 개별적인 정보 중 얼마간은 부동 소수점 상태 레지스터에 기록된다. 임의의 부동 소수점 명령어가 오직 한 번씩 부동 소수점 상태 레지스터에 기록된다.
도 8은, 포스트스크립트(PostScript)과 같은, 페이지 기술 언어로 특정된 문서가 프린트되는 경우 전형적으로 실행되는 단계들을 도시한다. 프린트 화일 (입력 데이터 화일(301))의 접수 다음은 해석 (프로세싱 블럭(302))이다. 본 단계에서는, 입력 포스트스크립트 화일이 해석되어 표시 리스트 (데이터 화일(303))로 지칭되는 중간 형태로 변환된다. 표시 리스트(303)는, 기술된 페이지로 구성되는 사다리꼴, 폰트, 이미지 등과 같은 낮은 레벨의 기본 요소(primitive)의 리스트로 구성된다. 다음으로, 표시 리스트가 렌더링 된다 (프로세싱 블럭(304)). 표시 리스트(303)에서의 요소 각각이 본 단계에서 프로세싱되고, 그 출력은 페이지 버퍼 (데이터 화일(305))로서 알려진 버퍼에 기록된다. 페이지 버퍼(305)는 특정 컬러 평면에 대한 출력 이미지의 일부분을 표현한다. 페이지 버퍼(305)에서, 픽셀 각각은 전형적으로 8비트로 표현된다. 표시 리스트(303)에서의 모든 요소가 프로세싱된 후, 페이지 버퍼(305)는 8비트 포맷으로 된 출력 이미지를 포함한다. 다음으로, 페이지 버퍼가 스크린닝된다 (프로세싱 블럭(306)). 프린트 장치에 의해 지원되는 해상도는 픽셀당 1 내지 8비트 중 하나일 수 있다. 렌더링 단계(304)에서 발전된 페이지 버퍼(305)는 프린터에 의해 지원되는 해상도로 변환되어야 한다. 따라서, 변환된 데이터를 장치 이미지라고 지칭한다. 페이지 버퍼(305) 내의 픽셀 각각은, 대응하는 장치 픽셀값으로 변환되어야 한다. 예를 들어, 4비트 장치 픽셀의 경우, 페이지 버퍼(305) 내의 픽셀 각각은 4비트값으로 변환되어야 한다. 스크리닝이라 호칭되는 이러한 프로세서는 스크리닝된 페이지 버퍼 (데이터 화일(307))에 귀착한다. 그 다음은 프린트 (프로세싱 블럭(308))이다. 스크리닝 버퍼(307)에서의 픽셀 각각은 페이퍼에 프린트된 것이다. 이러한 프로세스는 모든 컬러 평면에서 청록색, 노랑색, 자홍색, 및 검은 색으로 반복된다.
전형적인 페이지의 출력에서의 페이지 각각은 8인치×11.5인치로 구성된 것이다. 만일 프린트가 인치당 600픽셀이면, 페이지는 33백만 픽셀을 포함한다. 각각의 픽셀들은 스크리닝할 필요가 있다. 한 픽셀을 스크리닝하는 데 T시간 단위가 걸린다고 가정하면, 이것은 특정 컬러 평면에 대해 완전한 페이지를 스크리닝하는 데에는 33백만 T단위 시간이 된다. 이러한 접근법의 문제점은 픽셀들의 값이 0, 즉 임의의 렌더링 모듈의 출력이 없는 픽셀도 스크리닝된다는 것이다. 전형적인 페이지에 있어서, 유용한 픽셀의 비율은 총 픽셀 수의 일부에 불과하다. 따라서, 많은 픽셀들의 값은 0이다. 표 1에는 다양한 페이지 형태에 대해 사용된 프린트 영역의 비율의 추정값이 기록되어 있다.
페이지 형태 % 프린트 영역
표준 텍스트 30%
텍스트 및 그래픽 40%
텍스트, 그래픽, 및 이미지 80%
페이지의 오직 40%만이 렌더링 모듈에 의해 기록된다고 가정한다면, 페이지의 60%는 불필요하게 스크리닝된다. 이것은 무용한 스크리닝에 이용되는 수가 33백만의 60%, 즉 1.9백만 T단위에 달하는 것이다. 텍스트 페이지의 경우에 있어서, 페이지의 약 30%만이 프린트 영역을 포함한다. 따라서, 텍스트 페이지에 대해서는, 스크리닝 시간의 70%가 공백(blank) 영역에서 낭비된다. 이러한 공백 영역을 스크리닝하지 않음으로써 프로세싱 성능에서 충분히 가능성 있는 이익이 있다. 그래픽 및 이미지 정보를 포함하는 페이지의 경우에 있어서의 가능성 있는 이익은 작지만 분명히 의미있는 것이다.
본 발명의 방법은 이러한 단점을 극복하는 것이다. 본 발명은 2가지 방법 중 하나에 의해 공백 영역 및 프린트 영역 간을 구별한다. 제1 방법은 표시 리스트 성분의 바운딩 박스(bounding box) 내의 영역에서만 스크리닝하는 것이다. 제2 방법은 프린트 픽셀을 가진 주사선들을 확인하는 것이다.
도 9는 유용한 프린트 영역 및 공백 프린트 영역을 구분하는 바운딩 박스법의 응용의 일례를 도시한다. 렌더링 모듈(401) 각각은 렌더링 객체를 둘러싸는 바운딩 박스를 준비한다. 예를 들어, 사다리꼴 요소를 프로세싱하는 렌더링 모듈(401)은 페이지 버퍼에 기록된 사다리꼴을 둘러싸는 바운딩 박스(403)를 준비한다. 유사하게, 폰트 렌더링 모듈(401)도 또한 렌더링된 폰트에서 입력 문자에 대해 바운딩 박스(405)를 준비한다.
렌더링 모듈(401) 각각의 출력은, 렌더링된 요소를 포함하는 바운딩 박스의 파라미터를 부가한, 페이지 버퍼 내의 렌더링된 요소가 될 것이다. 표시 리스트가 프로세싱된 후, 상기 바운딩 박스들의 리스크가 스크리닝 모듈(407)에 주어진다. 스크리닝 모듈(407)은 바운딩 박스들(403 및 405) 각각을 고려한다. 스크리닝 모듈(407)은 바운딩 박스 내의 픽셀들에 대해서만 스크리닝하고, 프린트 연산(411)을 위한 4비트 출력 페이지 버퍼(409)에 출력을 기록한다.
도 10은 유용한 프린트 영역 및 공백 프린트 영역을 구별하는 주사선법의 응용의 일례를 도시한다. 개개의 모듈에 대한 바운딩 박스를 준비하고 렌더링된 객체 각각에 대한 개별적인 바운딩 박스를 스크리닝하는 데에는 문제점이 있을 수 있다. 복잡한 형상에 대해서는, 매우 작게 겹쳐지는 바운딩 박스가 많을 수 있다. 이탤릭체 활자의 장식 꼬리가 있는 텍스트도 또한 겹쳐지는 바운딩 박스가 있을 수 있다. 따라서, 바운딩 박스는 너무나 많은 영역을 제거하지 않을 수 있다. 게다가, 완전한 주사선과 같은 길고 연속적인 데이터에 대해 연산하는 경우에는, 대부분의 스크리닝 구현이 유효하다. 그러한 경우에 있어서, 바운딩 박스법은 효과적이지 않을 수 있다.
주사선법은 주사선 전체로 스크리닝하는 것이 허용되지만, 유용한 픽셀을 가진 이미지의 주사선만이 스크리닝된다. 렌더링된 객체를 가로지르는 주사선만이 스크리닝되는 것이다. 어레이(413)와 같은 데이터 구조는 주사선이 스크리닝되는 것인지를 지시한다. 주사선 각각은 이러한 어레이에서는 하나의 엔트리가 된다. 0값은 주사선이 프린트되지 않는 것을 의미하고, 1값은 주사선이 프린트될 것을 의미한다. 주사선법에 있어서, 전체 페이지는 렌더링 모듈에 의해 렌더링된다. 제1 출력은 모든 렌더링된 모듈을 포함하는 레더링된 페이지이다. 이러한 렌더링된 페이지의 픽셀 각각은 8비트이다. 제2 출력은 페이지에서 주사선의 수와 동일한 수의 요소들을 가진 주사선 어레이이다. 여기서 각각의 요소는, 주사선이 스크리닝될 필요가 있는지의 여부를 지시하는 0 또는 1을 포함한다.
도 10에 도시된 실례의 페이지를 고찰한다. 이 페이지에는 선(10)에서 시작하고 선(15)에서 끝나는 사다리꼴 및 선(14)에서 시작하고 선(31)에서 끝나는 렌더링된 폰트의 문자가 있다. 주사선 어레이에서의 모든 요소들은 0으로 초기화된다. 렌더링이 진행됨에 따라, 렌더링 모듈(501)은 스크리닝될 필요가 있는 주사선에 대응하며 객체를 렌더링하는 위치의 상기 주사선 어레이에 1을 기록한다. 따라서, 이러한 예에서 주사선 어레이는 주사선 0 내지 9에 대해 0을, 주사선 10 내지 31에대해 1을, 주사선 32 이상에 대해 0을 포함한다. 스크리닝 모듈(503)은 이러한 입력을 수신하고, 주사선 어레이가 1인 주사선, 즉 주사선 10 내지 31에 대해서만 스크리닝한다. 스크리닝된 주사선은 프린트 동작(503)에서 프린트된다.
상기 구현은 간단하다. 렌더링 모듈 및 스크리너(screener)의 구현에서 단지 약간의 변경만이 요구될 뿐이다. 이러한 방법은 다수의 비어 있는 주사선들이 있기 때문에 텍스트 이미지에 대해서는 매우 유용할 것이다. 오직 비어 있지 않은 주사선이 스크리닝되기 때문에, 상당히 시간이 단축된다.
도 11은 종래의 스크리닝에서 전형적으로 사용되던 3차원 룩업 테이블의 구조도이다. X 및 Y좌표로 표현되는 픽셀 위치는 M×N 매트릭스로 모듈로 인덱싱된다. 따라서, 픽셀의 X 좌표는 X modulo M으로 선택(preference) 매트릭스의 열을 선택한다. 동일한 방식으로 픽셀의 Y 좌표는 Y modulo N으로 선택 매트릭스의 행을 선택한다.
도 12는 4×4 매트릭스의 한 예이다. 선택 매트릭스 내 액세스된 위치의 데이터는 한 세트의 룩업 테이블 중 하나를 가리킨다. 선택 매트릭스의 요소들 각각은 룩업 테이블 번호를 나타낸다. 도 12의 일례의 선택 매트릭스는 4개의 개별적인 룩업 테이블을 이용한다. 선택 매트릭스에서 요소 (0,0)에 대한 픽셀 인덱싱으로 제1 룩업 테이블 LUT[0]를 이용할 것이다. 선택 매트릭스에서 요소 (0,1)에 대한 픽셀 인덱싱은 LUT[1]을 이용할 것이다. 선택 매트릭스에서 요소 (0,2)에 대한 픽셀 인덱싱은 LUT[1]을 이용할 것이다. 선택 매트릭스에서 요소 (0,3)에 대한 픽셀 인덱싱은 LUT[2]을 이용할 것이다. 따라서, 선택 매트릭스는 입력 이미지의 픽셀들에 대한 이미지 스크리닝으로 이용되는 룩업 테이블을 기입한다. 유사하게도, (1,0) 내지 (1,3), (2,0) 내지 (2,3), 및 (3,0) 내지 (3,3)의 픽셀에 대해 룩업 테이블들이 계산된다. 도 12의 일례의 4×4 선택 매트릭스에서, (X,Y)의 소정의 픽셀에 대해, (X modulo 4, Y modulo 4)에서의 선택 매트릭스 요소는 사용된 룩업 테이블을 선택한다. 따라서, (0,5)에서의 픽셀 - (0,1)로 인덱싱됨 - 에 대한 룩업 테이블은 LUT[1]이다. (7,8)에서의 픽셀 - (3,0)으로 인덱싱됨 - 에 대한 룩업 테이블은 LUT[0]이다. 따라서, 입력 픽셀 위치는 적절한 룩업 테이블에 대한 선택 매트릭스로 매핑된다.
도 11을 다시 참조하면, 모듈로 인덱싱은 한 세트의 룩업 테이블들 중 하나를 선택한다. 픽셀 그레이 스케일값은 상기 선택된 룩업 테이블로의 인덱스가 된다. 만일 픽셀이 b비트를 가지면, 각각의 룩업 테이블은 2b엔트리를 가진다. 각각의 엔트리는 프린트 장치의 동적 범위 내에서 c비트를 포함하며, 크기 c비트로 스트리닝된 대응하는 출력 픽셀을 포함한다. 따라서, (x,y)에서의 픽셀의 스크리닝값 V는 다음 식으로부터 얻게 된다:
V = LUT[preference_matrix[x%m][y%n][image[x][y]]
이러한 종래의 기법은 이용가능한 온-칩 메모리 상에서 몇 가지 필요 조건이 있다. 선택 매트릭스는 최대 512의 행 크기를 가진다. 이것은 다음 섹션에서 어드레싱되는 홀수 선택 매트릭스 행 차원을 처리하는 메모리를 포함한 온-칩 메모리에서 1K 바이트 영역을 필요로 하게 된다. 프로세서 집적 회로는 입출력용 버퍼를 필요로 한다. 2개의 입출력용 버퍼를 이용하고 I/O 버퍼에 2K 바이트를 할당하는 것은 4K 바이트의 메모리를 필요로 한다. 상기 멀티프로세서 집적 회로(100)를 이용하는 경우, 전송 요청을 정의하기 위한 파라미터 공간으로서 약 0.5K 바이트가 필요하다. 이러한 메모리의 총 필요량은 약 5.5K 바이트이다. 공간을 위해 멀티프로세서 집적 회로(100)의 디지털 이미지/그래픽스 프로세서(71, 72, 73, 및 74)를 이용하는 경우, 이러한 메모리 필요량은 룩업 테이블에 대해 약 2K 바이트만을 남겨 둔다. 이것은 최대 8개의 룩업 테이블이 디지털 이미지/그래픽스 프로세서(71, 72, 73, 및 74)의 온-칩 메모리 상에 존재할 수 있다는 것을 의미한다.
다수의 실용적인 실시예들은 프린터 장치 이미지에서 4비트의 데이터를 이용한다. 대부분의 데이터 프로세서들은 8비트 또는 1바이트의 최소 어드레싱가능한 유닛을 제공한다. 따라서, 2개의 4비트 픽셀이 한 번에 프로세싱되고, 1바이트 출력으로 팩킹된다. 선택 매트릭스가 행마다 짝수개의 요소를 가지면, 이는 어떤 문제도 야기하지 않는다. 행 차원이 6인 선택 매트릭스를 고찰해 보자. 픽셀 0과 1의 스크리닝된 출력은 출력 어드레스 0에서 기록되고, 픽셀 2 및 3은 출력 어드레스 1에서 기록될 것이며, 픽셀 4 및 5는 출력 어드레스 2에서 기록될 것이다.
도 13은 홀수개의 요소의 행 차원을 가진 선택 매트릭스의 경우에 대한 종래 기술의 문제점을 예시한다. 이 예에 있어서, 선택 매트릭스는 3의 행 차원을 가진다. 니블(nibble)을 바이트(byte)로 팩킹(packing)하는 경우, 홀수개의 요소가 문제된다. 픽셀 0과 1의 스크리닝된 출력이 출력 어드레스 0에 기록된다. 픽셀 2를 프로세싱하는 경우, 단일의 4비트 출력이 생성된다. 이것은 출력 메모리가 바이트 어드레싱이 가능하고 4비트 어드레싱이 가능하지 않기 때문에 출력 메모리에 독립적으로 기록될 수 없다. 이러한 특별한 경우는 판독-수정-기록 연산을 위한 별도의 프로세싱을 요하므로 성능이 저하된다.
도 14는 이러한 문제점을 해결하기 위해 본 발명이 제안하는 방식을 개략적으로 예시한다. 룩업 테이블의 캐쉬가 온-칩 메모리 내에 보유된다. 이전에 계산된 바와 같이, 멀티프로세서 집적 회로(100)에 있어서, 8개의 룩업 테이블은 임의의 한 시점에서 온-칩 메모리에 보유될 수 있다. 이러한 고속 데이터 처리(caching)를 제작하기 위해, 선택 매트릭스 행은 선택 세그먼트들로 분할된다. 이것은 룩업 테이블의 최대 수에 대한 제한을 없앤다.
입력 이미지는 한 번에 한 주사선으로 프로세싱된다. 선택 매트릭스의 행 각각은 8개의 원소로 된 선택 세그먼트로 나뉜다. 도 14의 예에 도시된 바와 같이, 16행 차원의 선택 매트릭스는 요소 0 내지 7을 가진 선택 세그먼트 0, 및 요소 8 내지 15를 가진 선택 세그먼트 1로 나뉘어 진다. 현재의 입력선은 선택 세그먼트들로 프로세싱된다. 제1 선택 세그먼트와 관계한 룩업 테이블은 온-칩 메모리에 불려져서 이 세그먼트에 대응하는 모든 픽셀이 프로세싱되고 출력된다. 남은 선택 세그먼트들에 대한 프로세스가 차례로 반복된다. 디지털 이미지/그래픽스 프로세서(71, 72, 73, 및 74)와 연관된 데이터 메모리들의 메모리 구성은 이러한 선택 세크먼트 단위로 데이터가 전송되는 것이 가능하다.
세그먼트되지 않는 프로세싱에서는, 룩업 테이블들이 온-칩 메모리에 전송되는 것을 기다리는 데 많은 시간이 소비되거나 모든 개별적인 룩업 테이블이 온-칩 메모리에 맞도록 하는 것이 요구된다. 본 발명의 선택 세그먼트법은 상기 단점들 중 어떤 것도 없이 선택 메모리를 고속 데이터 처리함으로써 스크린닝하는 것을 가능하게 한다.
프로세싱의 간소화를 위해, 룩업 테이블의 각 엔트리는 8비트를 포함한다. 선택 세그먼트가 프로세싱되는 경우, 8비트 요소들은 4비트로 스크리닝된다, 출력 버퍼는 그러한 4비트 세그먼트로 이루어진다. 이것은 전송 제어기의 대역을 80 내지 50% 감소시킨다. 또한, 이것은 오직 8개의 룩업 테이블이 온-칩 메모리 상에 수용될 수 있기 때문이기도 하다. 만일 16개의 룩업 테이블 엔트리가 4비트 엔트리가라면, 16개의 룩업 테이블이 고속 처리될 수 있다. 이것은 16개 요소로 된 선택 세그먼트를 허용하므로, 전송 제어기(80)의 이용율을 100%로 하는 8비트 출력으로 귀착된다.
도 15는 본 발명의 홀수의 행 차원을 가진 선택 매트릭스를 처리하는 방법을 도시한다. 선택 매트릭스 행 차원이 홀수 크기이면, 선택 매트릭스를 2배(doubling)로 한다. 이것은 짝수가 되는 것이다. 도 15에 도시된 바와 같이, 각각 8비트로 된 6개의 입력 픽셀은 6개의 4비트 니블로 스크리닝되고 6바이트 워드로 팩킹된다. 선택 매트릭스를 2배로 하는 것은 선택 매트릭스를 그 차원만큼 복제함으로써 이루어진다. 이것은 타일 크기를 2배로 하지만 상기 타일 각각은 2개의 동일한 반으로 구성된다. 그 다음, 2배가 된 방향의 픽셀 차원은 modulo M보다는 modulo 2M으로 인덱싱된다. 이렇게 2배로 하는 것은 선택 테이블을 저장하는 데 보다 많은 공간을 필요로 한다. 그러나, 2배로 하는 것은 계산의 복잡도를 감소시키고 계산을 일률적이게 한다.
본 방법의 간단한 설명은 하기 의사-코드(pseudo-code)의 형태로 주어진다. 상기 예에 따라, 입력 버퍼 크기는 2K 바이트이고, 출력 버퍼 크기는 1K 바이트이다.
// 행이 0일 때부터 이미지의 높이가 될 때까지
// 한 번에 이미지의 한 행을 프로세싱.
for row=0 to hight of image
pref_row_num=image_y% preference matrix height
transfer preference matrix[pref_row_num]
if the width of the preference matrix is odd,
duplicate in the on-chip buffer
// 선택 행은, 각각의 길이가 8엔트리인 선택 세그먼트들로 나누어진다.
// 입력은 선택 세그먼트로서 프로세싱된다.
// pref_count는 선택 행의 상기 선택 세그먼트의 정수로 된 수를 표시한다.
pref_count=pref_row_size/8
for i=0 to pref_count-1
get preference_segment[i]
get LUTBLOCK[i]
get input block corresponding to
preference_segment[i]
Screen the input
// 입력으로부터 2바이트가 판독되고 4비트값으로 스크리닝된다.
// 8비트값을 형성하기 위해 상기 값들이 연결되고 출력 버퍼에 기록된다.
for (m=0;m〈PAGE_WIDTH;m+=8)
for (k=0;k〈8;k+2)
*output++ = (LUT[k][input[m=k]]〈〈4) |
LUT[k+1][input[m+k+1]]
end for
transfer output of size PAGE_WIDTH/2
end for
end for
이것은 구현한 것이며, 다른 프로세서들의 자원을 잠식하지 않고 단일의 디지털 이미지/그래픽스 프로세서들(71, 72, 73, 및 74)의 자원만을 이용한다. 스크리닝은 이러한 프로세서들 중 하나에 한정되며, 그외의 프로세서들이 임의의 다른 연산을 독립적으로 수행하는 것을 가능하게 한다.
룩업 테이블, 입출력 버퍼, 선택 매트릭스 행을 온-칩 메모리 내에 적절히 할당함으로써, 2배 버퍼링 설계(scheme)는 룩업 테이블 및 선택 매트릭스 행에 대해 확장된다. 이로 인해, 다음 선택 세그먼트가 프로세싱되는 경우 룩업 테이블을 로드하는 것을 기다리고, 다음 선이 프로세싱되는 경우 선택 매트릭스 행을 로드하는 것을 기다리는 것을 피하게 된다.
스크리닝된 출력값이 니블 (4비트)이라는 사실과, 메모리 기억 장소는 바이트 (8비트) 어드레싱이 가능하다는 제한은, 스크리닝의 코어법(core method)이 한 번에 2픽셀을 프로세싱한다는 것을 지시한다. 따라서, 종래 기술에 따른 스크리닝의 코어법은 다음 단계를 포함한다:
단계 1: input_pointer가 가리키는 픽셀을 4비트로 스크리닝하고 제1 일시 메모리 기억 장소에 남겨 두는 단계
단계 2: input_pointer를 증분하는 단계
단계 3: pref_pointer를 증분하는 단계
단계 4: input_pointer가 가리키는 픽셀을 4비트로 스크리닝하고 제2 일시 메모리 기억 장소에 남겨 두는 단계
단계 5: input_pointer를 증분하는 단계
단계 6: pref_pointer를 증분하는 단계
단계 7: 제1 및 제2 일시 니블을 8비트로 팩킹하는 단계
단계 8: output_pointer가 가리키는 기억 장소에 팩킹된 값을 저장하는 단계
단계 9: output_pointer를 증분하는 단계
루프(loop)는 픽셀의 전체 선에 대해 실행하도록 설정되며, 루프 카운터는 선의 길이가 L과 동일하므로 L/2이다. 선택 매트릭스 포인터가 증분되고 픽셀의 모든 쌍에 대해 루프 내에서 검사되므로, 선택 매트릭스의 타일 크기는 짝수여야 한다. 짝수 M의 경우에 대해 크기 M인 어레이를 랩 어라운드(wrap around)하는 (선택 매트릭스 행을 가리키는) 단일 포인터가, 상기한 바와 같이 루프 내에서 이용될 수 있다. 홀수 M의 경우에 대해 동일한 개념으로 확장시키는 것은 그 선을 modulo 2M에 의해 타일로 만드는 것을 필요로 한다. 선택 매트릭스 포인터 검사가 픽셀의 모든 쌍에 대해 수행될 수 있고, 한 번에 2개의 픽셀을 스크리닝하는 코어법이 여전히 이용될 수 있다.
도 16은 홀수 M으로 된 선택 매트릭스로 스크리닝하기 위한 룩업 테이블에 인덱싱하는 종래의 방법을 개략적으로 도시한다. 홀수 M에 대해서 종래의 기술로 한 선의 픽셀을 스크리닝하기 위해, 픽셀의 총수만큼 실행하는 외부 루프가 설정된다. 픽셀의 모든 쌍에 대한 상기 루프에서, 프로그램은 루프가 수행되어 2M에 도달할 때마다 순환 포인터를 그 어레이의 처음으로 재설정하기 위해 검사한다. 도 16에 도시된 바와 같이, loop_pref_pointer가 pre_pointer_end에 도달한 경우, loop_pref_pointer는 pref_pointer_start로 재설정된다.
종래의 스크리닝 루프는 다음 단계를 포함한다:
단계 1: loop_pref_pointer를 pref_pointer_start로 설정.
단계 2: for i=1 to i 1/2 단계 3 및 4를 반복.
단계 3: [스크리닝의 코어법의 모든 단계]
단계 4: loop_pref_pointer와 pref_pointer_end가 동일한지 검사.
if 참이면 상기 포인터를 어레이의 시작에 재설정, 즉 loop_pref_pointer를 pref_pointer_start로 설정.
else 루프를 계속.
주사선이 모듈로 M의 타일들로 분할되고 포인터가 pref_end_pointer에 도달할 때마다 루프에서 모든 M개의 픽셀들이 재설정되는 방법이 선택 매트릭스의 짝수 M의 경우까지 동일하게 확장된다. pref_end_pointer가 pref_pointer_start + M - 1로 설정된다는 것을 유의해야 한다. 스크린닝 루프는 홀수 M의 경우와 동일한 단계를 포함한다.
상기 종래의 방법은, 선택 매트릭스 모듈로 검사가 루프 내에서 수행되기 때문에, 좋지 않은 프로세싱 성능을 가진다. 또한, 상기 종래의 방법은 홀수 M의 경우에 온-칩에 선택 매트릭스를 저장하기 위해 2M 바이트 크기의 어레이를 필요로 한다.
본 발명으로 제안되는 방법은, 루프 내에서 선택 매트릭스 포인터를 검사하지 않음으로써 상기 문제점을 해소하려 한다. 또한, 제안되는 방법은, 홀수 M의 경우에 대해 선택 매트릭스의 메모리 저장 요구치를 감소시킨다. 이 방법은 종래 기술과 동일한 스크리닝의 코어법을 이용한다. 본 발명으로 제안되는 방법은, 선택 매트릭스의 행 크기를 짝수 M에 대해서는 M으로, 홀수 M에 대해서는 2M으로 하여 주사선을 타일로 되게 하고, 외부 루프와 내부 루프를 설정한다. 외부 루프는 주사선에서 짝수 M개의 타일에 대해서는 M, 홀수 M개의 타일에 대해서는 2M의 회수로 실행된다. 내부 루프는 스크리닝의 코어법으로 구성되고, 짝수 M에 대해서는 M/2개의 픽셀, 또는 홀수 M에 대해서는 M개의 픽셀에 대해 실행된다.
주사선이 타일 경계에서 시작하지 않고 끝나지 않는다면, 주사선은 3부분으로 나누어 진다. 이 부분들은 타일 (M 또는 2M) 경계까지가 시작 부분이고, 한 타일 경계를 제외한 그 나머지로부터 주사선의 끝까지가 끝 부분이며, 전체 타일이 중간 부분이다. 부분 내부 루프는 시작 및 끝 부분에서 픽셀을 스크리닝하는 반면, 중간 부분은 외부 및 내부 루프로 프로세싱되도록 설정된다. 타일 크기보다 적은 선 길이에 대해, 부분 내부 루프가 이용된다. 짝수 및 홀수 M 모두에 대해 내부 및 외부 루프를 가진 방법이 이하 설명된다.
도 17은 홀수 M을 가진 선택 매트릭스로 스크리닝하기 위해 룩업 테이블로 인덱싱하는 본 발명의 방법을 개략적으로 도시한다. 제안되는 방법은 선택 매트릭스 어레이에의 2개의 포인터를 이용한다. 선택 매트릭스는 크기 M+1인 어레이에 저장된다. 상기 어레이의 제1엔트리는, 선택 매트릭스 행의 M번째 요소가 있고 그 다음은 선택 매트릭스 행의 M개의 요소가 있다. 선은 2M 모듈로 타일로 나누어 지고, 내부 루프는, 2개의 루프 즉 1에서 M+1개의 픽셀까지 실행하는 루프 및 1부터 M-1까지 실행하는 루프로 나누어 진다. 상기 2개의 내부 루프는 각각 엔트리에서 M+1 및 M-1 선택 루프를 이용한다. M이 홀수인 경우 M+1 및 M-1이 짝수이므로, (M+1)/2 및 (M-1)/2 쌍의 픽셀에 대해 실행하는 내부 루프는 여전히 스크리닝의 동일한 코어법을 이용할 수 있다. 루프의 끝에서, 2개의 선택 매트릭스 포인터는 M+1 또는 M-1개의 선택 매트릭스 어레이의 시작으로 재설정된다. 외부 루프는 그 주사선의 2M개의 타일의 수로 실행된다.
스크리닝 루프는 다음과 같은 단계를 포함한다:
단계 1: 프로세싱될 타일의 수를 계산, tile_cnt = L/(2*M)은 외부 루프에 제공됨
단계 2: loop_pref_pointer1을 pref_pointer_M-1_start로 설정
단계 3: For k=1 to k tile_cnt 단계 4 내지 9를 반복.
단계 4: loop_pref_pointer를 pref_pointer_start_M-1로 재설정.
단계 5: For i=1 to i (M-1)/2 단계 6을 반복.
단계 6: [스크리닝의 코어법의 모든 단계]
단계 7: loop_pref_pointer를 pref_pointer_M+1로 설정.
단계 8: For i=1 to i (M+1)/2 단계 9를 반복.
단계 9: [스크리닝의 코어법의 모든 단계]
주사선이 2M 타일 경계에서 시작하지 않고 끝나지 않는 경우, 주사선의 시작 및 끝은 분리되어 프로세싱될 것이다. 그 프로세싱은 적절하게 M+1 또는 M-1에서 시작하는 선택 매트릭스 포인터로 (외부 루프를 필요로 하지 않는) 부분적인 내부 루프만을 가질 것이다. M+1 또는 M-1 포인터의 순서는 주사선 시작이 분리된 2M 타일의 일부에 따른 주사선의 일부는 떨어진다.
제안되는 방법은 짝수 M에 대하여 모듈로 M의 타일로 나누어지는 주사선을 가지는 것이다. 2개의 루프가 있다. M/2 픽셀에 대한 내부 루프는 2개의 픽셀을 스크리닝하는 코어법을 이용한다. 내부 루프는 스크리닝될 주사선의 타일의 수에 대해 실행된다. 외부 루프의 엔트리에서 선택 매트릭스 어레이 크기 M의 시작을 가리키고 모든 내부 루프의 끝에서 선택 매트릭스의 시작을 가리키도록 재설정되며, 내부 루프에서 증분되는 포인터가 있게 된다.
스크리닝 루프는 다음과 같은 단계를 포함한다:
단계 1: 프로세싱되는 타일의 수를 계산, tile_cnt = L/M가 외부 루프 카운터를 제공.
단계 2: loop_pref_pointer를 pref_pointer_start로 설정.
단계 3: For k=1 to k tile_cnt 단계 3 및 4 반복.
단계 4: loop_pref_pointer를 pref_pointer_start로 재설정.
단계 5: For i=1 to i M/2 단계 6을 반복.
단계 6: [스크리닝의 코어법의 모든 단계]
주사선이 M 타일 경계에서 시작하지 않고 끝나지 않는 경우, 주사선의 시작 및 끝 부분은 분리되어 프로세싱될 것이다. 그 프로세싱은 시작 엔트리를 가리키는 선택 매트릭스 포인터를 가진 (외부 루프를 필요로 하지 않고) 부분적인 내부 루프만을 가질 것이다.
다음은 종래 방법에 대한 제안되는 방법의 성능을 계산하기 위해 수행된 분석의 결과이다. 비교는 픽셀 프로세싱당 명령어로 수행된다. 본 분석에서의 명령어는 산술적 또는 어드레스 연산을 의미한다. 상기 논제에서 사용되는 용어는 다음과 같다:
IPPCM= 종래 방법을 이용한 픽셀 당 총 명령어.
LOOP-IPPCM= 종래 방법을 이용한 루프에 의해 실행된 픽셀 당 총 명령어.
LSCM= 종래 방법을 이용한 픽셀 당 셋업 명령어.
IPPPM= 본 발명의 방법을 이용한 피셀 당 총 명령어.
LOOP-IPP-OPM= (홀수 M에 대하여) 본 발명의 방법을 이용한 루프에서 픽셀 당 총 명령어.
LOOP-IPP-EPM= (짝수 M에 대하여) 본 발명의 방법을 이용한 루프에서 픽셀당 총 명령어.
LSPM= 본 발명의 방법을 이용한 픽셀 당 셋업 명령어.
상기 모든 용어는 주사선 길이가 L이고 선택 매트릭스의 행 크기가 M인 경우에 대한 것이다.
종래의 방법에서:
IPPCM= LOOP-IPPCM+ LSCM
여기서: LOOP-IPPCM= (1 + (L/2) * 11))/L; L/2는 픽셀 쌍의 수이고; 한 쌍의 픽셀에 대한 루프 내의 명령어의 수는 11이다.
LSCM= 5/L
여기서: 선택 매트릭스에 대한 포인터를 셋업하기 위한 명령어의 수 (x mod M 및 y mod N)는 5이다.
홀수 M에 대한 본 발명의 방법에서:
IPPPM= LOOP-IPP-OPM+ LSPM
여기서:
L 〉〉 2M이면, LOOP-IPP-OPM= (2 + (L/M) + (L*9/2))/L
L 〈 2M이면, LOOP-IPP-OPM= (2 + L + (L*9/2))/L
여기서: 내부 루프 내 한 쌍의 픽셀에 대한 명령어의 수는 11이다; 한 명령어는 어레이, 즉 외부 루프 내의 (M+1) 및 (M-1)번째 어레이의 시작에서 선택 매트릭스 포인터를 재설정하기 위한 것이다.
L 〉 M이면, LSPM= 20/L
L 〈 M이면, LPPM= 12/L
여기서: 내부 루프를 셋업하기 위한 명령어의 수는 L 〉 M인 경우 20이고, L 〈 M인 경우 12이다.
짝수 M에 대한 본 발명의 방법에서:
IPPPM= LOOP-IPP-EPM+ LSPM
여기서:
L 〉 M이면, LOOP-IPP-EPM= (2 + (L/M) + (L*9/2))/S
L 〈 M이면, LOOP-IPP-EPM= (2 + L + (L*9/2))/L
여기서: 내부 루프에서 한쌍의 픽셀에 대한 명령어의 수는 11이다; 한 명령어는 어레이, 즉 외부 루프에서 (M+1) 또는 (M-1)번째 어레이의 시작에서 선택 매트릭스 포인터를 재설정하기 위한 것이다.
L 〉 M이면, LSPM= 20/L
L 〈 M이면, LSPM= 12/L
여기서: 내부 루프를 셋업하기 위한 명령어의 수는 L 〉 M인 경우 20이고, L 〈 M인 경우 12이다. 셋업 명령어 카운터는 가장 좋지 않은 경우의 설정 요건에 기초한 것임을 유의해야 한다. 루프 카운터는 디지털 이미지/그래픽스 프로세서(71, 72, 73, 및 74)의 프로그램 흐름 제어 유닛(130)에 의해 지원되고, 또한 디지털 신호 프로세서에 의해 널리 지원되는 바와 같은 제로 오버헤드 루프 카운터를 가정한다.
도 18은 종래의 방법과 비교하여 본 발명의 방법의 주사선 길이 대 프로세싱 시간 비의 감소에 대한 도면이다. 도 18에서, 프로세싱 시간이 명령어의 수에 직접적으로 관련된다고 가정한다. 도 18은 다양한 선 길이에 대한 (100-IPPPM*100)/IPPCM)%의 도면을 예시하고, M의 경우는 8, 9 ,80, 및 90이다. L_break보다 더 긴 길이에 대해, 제안되는 방법은 종래의 방법보다 프로세싱 효율성에서 진보된 증가를 보인다. 등분 길이(break length) L_break는 16/(1-1/M)이다. 작은 선 길이의 경우에 있어서, 루프 셋업 내의 픽셀 당 오버헤드 및 제안되는 방법의 루프 외부에서 재설정되는 포인터는 종래의 방법보다 주사선에 대해 보다 많은 명령어를 필요로 한다. 주사선 길이가 증가함에 따라, 본 발명의 방법의 오버헤드의 상대적인 기여도는 감소한다. 짝수 등분 점이 L_break에 도달한다. L_break를 초과하면, 오버헤드의 상대적인 기여도는 크게 감소하고 결국 무시해도 좋은 포화 상태에 이르게 된다. 제안되는 방법은 홀수 M에 대해 온-칩 메모리 요구량을 종래의 방법보다 50%보다 약간 적게 또는 ((M-1)*100)/(2M)%만큼 감소시킨다. 짝수 M에 대해 제안되는 방법은 180 픽셀 이상의 큰 주사선의 경우에 종래의 기술보다 (짝수 M = 8, 9에 대해) 15.82% 및 (짝수 M = 80, 90에 대해) 18%를 감소시킨다. 홀수 M에 대해 제안되는 방법은 180 픽셀 이상의 큰 주사선의 경우에 종래의 기술보다 최대 (홀수 M = 8, 9에 대해) 16.18% 및 (짝수 M = 80, 90에 대해) 18%를 감소시킨다. 프로세싱 효율성은 L_break 길이보다 더 긴 주사선 길이로 증가함으로써 점진적으로 향상되며, 다양한 M값에 대해 다양한 최대 향상값으로 포화된다. 스크리닝에 대한 전형적인 선 길이가 L_break (18픽셀)보다 훨씬 크게 되므로, 제안되는 방법은 상당한 장점을 가진다.
제안되는 접근 방법에 대한 전형적인 응용은 내장 래스터 이미지(RIP) 소프트웨어의 정수 부분인 실시간 다중-레벨 임계 스크리닝이다. 제한된 온-칩 메모리를 가진 멀티프로세서 집적 회로(100) 상의 스크리닝 프로세스의 구현은 실시간 성능을 만족시키기 위해 메모리 요구량과 프로세싱 시간 간에 균형을 맞추어야 한다. 제안되는 방법은 픽셀 프로세싱 당 최소 임계치로 프로세싱 루프를 이용함으로써 온-칩 자원을 매우 적절하게 할당한다. 따라서, 제안되는 방법은 메모리 및 프로세싱 시간 모두에서, 실시간 삽입 성능 제한을 만족시키는 데 기여한다. 동일한 개념이 입력 픽셀 비트 및 출력 픽셀 비트의 다른 수의 경우에도 용이하게 확장될 수 있다.

Claims (10)

  1. 보다 제한된 범위의 이미지 제작기로 그레이 스케일 톤을 근사화하는 컴퓨터 구현 방법에 있어서,
    페이지 기술 언어로 된 객체들을 상기 이미지 제작기의 주사로 렌더링하는 단계;
    렌더링된 객체들을 가진 이미지 영역들을 렌더링하는 것을 결정하는 단계;
    렌더링된 객체들을 가진 상기 이미지 영역들 내에서 상기 주사된 입력 픽셀들을 상기 보다 제한된 범위의 이미지 픽셀들로 스크리닝하는 단계; 및
    렌더링된 객체들을 가진 상기 이미지 영역들 외부에서 상기 주사된 입력 픽셀들을 스크리닝하지 않는 단계
    를 포함하는 방법.
  2. 제1항에 있어서,
    상기 이미지 영역 결정 단계는 상기 렌더링된 객체들을 최소한으로 감싸고 모든 렌더링된 객체를 둘러싸는 바운딩 박스를 결정하는 단계로 구성되고;
    상기 입력 픽셀 스크리닝 단계는 임의의 바운딩 박스 내의 입력 픽셀들을 스크리닝하는 단계를 포함하며;
    상기 입력 픽셀을 스크리닝하지 않는 단계는 모든 바운딩 박스들 외부의 입력 픽셀들을 스크리닝하지 않는 단계를 포함하는 방법.
  3. 제1항에 있어서,
    상기 이미지 영역 결정 단계는 렌더링된 객체 중 임의의 일부를 포함하는 주사선을 결정하는 단계로 구성되고;
    상기 입력 픽셀 스크리닝 단계는 렌더링된 객체 중 임의의 일부를 포함하는 임의의 주사선 상의 입력 픽셀들을 스크리닝하는 단계를 포함하며;
    상기 입력 픽셀을 스크리닝하지 않는 단계는 렌더링된 객체 중 임의의 일부를 포함하지 않는 임의의 주사선 상의 입력 픽셀들을 스크리닝하지 않는 단계를 포함하는 방법.
  4. 프린터에 있어서,
    통신 채널과 양방향 통신을 하기 위한 트랜시버(transciever);
    메모리;
    수신된 이미지 데이터 및 제어 신호들에 따라 프린트된 페이지 상에 컬러 도트(dots)들을 위치시키기 위한 프린트 엔진; 및
    상기 트랜시버, 상기 메모리, 및 상기 프린트 엔진에 연결된 프로그램 가능 데이터 프로세서
    를 포함하되, 상기 프로그램 가능한 데이터 프로세서는,
    상기 트랜시버를 통해서 상기 통신 채널로부터 프린트될 페이지에 대응하는 프린트 데이터를 수신하고;
    대응하는 페이지를 프린트하기 위한 상기 프린트 엔진에 공급하기 위해서 상기 프린트 데이터를 이미지 데이터 및 제어 신호들로 변환시키도록 프로그램되어 있고, 상기 변환은
    페이지 기술 언어로 된 객체를 프린트될 페이지의 주사로 렌더링하고,
    렌더링된 객체들을 가진 이미지 영역들을 렌더링하는 것을 결정하며,
    렌더링된 객체들을 가진 상기 이미지 영역들 내에서 보다 제한된 범위의 이미지 픽셀들로 상기 주사된 입력 픽셀들을 스크리닝하고,
    렌더링된 객체들을 가진 상기 이미지 영역들 외부의 상기 주사된 입력 픽셀들을 스크리닝하지 않으며,
    상기 이미지 데이터 및 제어 신호에 따라 프린트 엔진을 제어하여 대응하는 페이지를 프린트함으로써 상기 보다 제한된 범위의 프린트 엔진으로 그레이 스케일을 근사화하는 프린터.
  5. 제4항에 있어서, 상기 데이터 프로세서가,
    상기 렌더링된 객체를 최소한으로 감싸고 모든 렌더링된 객체들을 둘러싸는 바운딩 박스를 결정함으로써 이미지 영역을 결정하고,
    임의의 바운딩 박스 내의 입력 픽셀들을 스크리닝하며,
    모든 바운딩 박스들 외부의 입력 픽셀들을 스크리닝하지 않도록 더 프로그램된 프린터.
  6. 제4항에 있어서, 상기 데이터 프로세서가,
    렌더링된 객체의 임의의 일부를 포함하는 주사선들을 결정하고,
    렌더링된 객체의 임의의 일부를 포함하는 임의의 주사선 상의 입력 픽셀들을 스크리닝하며,
    렌더링된 객체의 임의의 일부를 포함하지 않는 임의의 주사선 상의 입력 픽셀들을 스크리닝하지 않도록 더 프로그램된 프린터.
  7. 선택 매트릭스(preference matrix)를 통해서 보다 제한된 범위의 이미지 제작기로 그레이 스케일 톤을 근사화하기 위한 다중-레벨 스크리닝 컴퓨터 구현 방법에 있어서,
    상기 선택 매트릭스의 모든 세그먼트로 맵핑하는 상기 선택된 주사선의 픽셀들이 선택될 때까지
    상기 선택 매트릭스의 행 각각을 고정된 크기의 적어도 2개의 세그먼트로 분할하는 단계;
    상기 선택 매트릭스의 상기 세그먼트 중의 하나와 연관된 룩업 테이블을 메모리 캐쉬로 로드하는 단계;
    상기 선택 매트릭스의 상기 한 세그먼트로 맵핑하는 선택된 주사선 상의 상기 선택 매트릭스의 모든 픽셀들의 상기 한 세그먼트와 연관된 상기 룩업 테이블들을 통해 입력 픽셀들을 스크리닝하는 단계;
    상기 선택 매트릭스의 다음 세그먼트와 연관된 룩업 테이블들을 메모리 캐쉬로 로드하는 단계; 및
    상기 선택 매트릭스의 상기 다음 세그먼트로 맵핑하는 선택된 주사선 상에서 상기 선택 매트릭스의 모든 픽셀들의 상기 다음 세그먼트와 연관된 상기 룩업 테이블들을 통해 입력 픽셀들을 스크린닝하는 단계
    를 포함하는 방법.
  8. 프린터에 있어서,
    통신 채널과 양방향 통신을 하기 위한 트랜시버;
    메모리;
    수신된 이미지 데이터 및 제어 신호들에 따라 프린트된 페이지 상에 컬러 도트들을 위치시키기 위한 프린트 엔진; 및
    상기 트랜시버, 상기 메모리, 및 상기 프린트 엔진에 연결된 프로그램 가능 데이터 프로세서
    를 포함하되, 상기 프로그램 가능 데이터 프로세서는
    캐쉬 메모리를 가지며,
    상기 트랜시버를 통해서 상기 통신 채널로부터 프린트될 페이지에 대응하는 프린트 데이터를 수신하고;
    대응하는 페이지를 프린트하기 위한 상기 프린트 엔진에 공급하기 위해서, 상기 프린트 데이터를 이미지 데이터 및 제어 신호들로 변환하도록 프로그램되어 있고,
    상기 변환은,
    상기 선택 매트릭스의 모든 세그먼트들로 맵핑하는 상기 선택된 주사선의 픽셀들이 스크리닝될 때까지,
    상기 선택 매트릭스의 행 각각을 고정된 크기의 적어도 2개의 세그먼트로 분할하고,
    상기 선택 매트릭스의 상기 세그먼트들 중 하나와 연관된 룩업 테이블들을 상기 캐쉬 메모리에 로드하며,
    상기 선택 매트릭스의 상기 한 세그먼트로 맵핑하는 선택된 주사선 상에서 상기 선택 매트릭스의 모든 픽셀들의 상기 한 세그먼트와 연관된 상기 룩업 테이블들을 통해 입력 픽셀들을 스크리닝하고,
    상기 선택 매트릭스의 다음 세그먼트와 연관된 룩업 테이블들을 상기 캐쉬 메모리로 로드하며,
    상기 선택 매트릭스의 상기 다음 세그먼트로 맵핑하는 선택된 주사선 상에서 상기 선택 매트릭스의 모든 픽셀들의 상기 다음 세그먼트와 연관된 룩업 테이블들을 통해 입력 픽셀들을 스크리닝하고,
    대응하는 페이지를 프린트하기 위해 상기 이미지 데이터 및 제어 신 호들에 따라 상기 프린트 엔진을 제어하는 것을 포함하는 프린터.
  9. 홀수 행 길이를 가지는 선택 매트릭스를 통해서 보다 제한된 범위의 이미지 제작기로 그레이 스케일 톤을 근사화하기 위해, 2개의 출력 픽셀들을 다중-레벨 스크리닝하면서 하나의 데이터 워드로 팩킹하는 컴퓨터 구현 방법에 있어서,
    M-1개의 입력 픽셀들 및 M+1개의 입력 픽셀들을 번갈아 고려하여, M-1개의 입력 픽셀들 또는 M+1개의 입력 픽셀들의 각 셋트를 짝수가 되게 하는 단계;
    고려된 입력 픽셀의 각 쌍에 대해 대응하는 출력 픽셀의 쌍을 생성하는 단계; 및
    상기 출력 픽셀들의 각 쌍을 대응하는 출력 데이터 워드로 팩킹하는 단계
    를 포함하는 방법.
  10. 프린터에 있어서,
    통신 채널과 양방향 통신을 하기 위한 트랜시버;
    메모리;
    수신된 이미지 데이터 및 제어 신호들에 따라 프린트된 페이지 상에 컬러 도트들을 위치시키기 위한 프린트 엔진; 및
    상기 트랜시버, 상기 메모리, 및 상기 프린트 엔진에 연결된 프로그램 가능 데이터 프로세서
    를 포함하되, 상기 프로그램 가능한 데이터 프로세서는
    상기 트랜시버를 통해서 상기 통신 채널로부터 프린트될 페이지들에 대응하는 프린트 데이터를 수신하고,
    대응하는 페이지를 프린트하기 위한 상기 프린트 엔진에 공급하기 위해 상기 프린트 데이터를 이미지 데이터 및 제어 신호들로 변환하도록 프로그램되어 있고,
    상기 변환은,
    M-1개의 입력 픽셀들 및 M+1개의 입력 픽셀들을 번갈아 고려하여, M-1개의 입력 픽셀들 또는 M+1개의 입력 픽셀들의 각 셋트를 짝수가 되게 하고,
    고려된 입력 픽셀들의 각 쌍에 대하여, 대응하는 출력 픽셀들의 쌍을 생성하며,
    상기 출력 픽셀들의 각 쌍을 대응하는 출력 데이터 워드로 팩킹함으로써 홀수 행 길이를 가진 선택 매트릭스를 통해 보다 제한된 범위의 프린트 엔진으로 그레이 스케일 톤을 근사화하기 위해 2개의 출력 픽셀들을 다중-레벨 스크리닝하면서 하나의 데이터 워드로 팩킹하는 것을 포함하는 프린터.
KR1019990032070A 1998-08-06 1999-08-05 페이지 기술 언어로 된 화일을 프린트하기 위한 세그먼트화된 다중 레벨 스크리닝 KR100590673B1 (ko)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
IN1766/MAS/1998 1998-08-06
INAS176698 1998-08-06
US10060398P 1998-09-16 1998-09-16
US60/100,603 1998-09-16

Publications (2)

Publication Number Publication Date
KR20000017098A true KR20000017098A (ko) 2000-03-25
KR100590673B1 KR100590673B1 (ko) 2006-06-19

Family

ID=26324126

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1019990032070A KR100590673B1 (ko) 1998-08-06 1999-08-05 페이지 기술 언어로 된 화일을 프린트하기 위한 세그먼트화된 다중 레벨 스크리닝

Country Status (1)

Country Link
KR (1) KR100590673B1 (ko)

Also Published As

Publication number Publication date
KR100590673B1 (ko) 2006-06-19

Similar Documents

Publication Publication Date Title
KR100328421B1 (ko) 고성능3차원그래픽가속기의아키텍쳐
US6693719B1 (en) Path to trapezoid decomposition of polygons for printing files in a page description language
US6336180B1 (en) Method, apparatus and system for managing virtual memory with virtual-physical mapping
US6349379B2 (en) System for executing instructions having flag for indicating direct or indirect specification of a length of operand data
US6707463B1 (en) Data normalization technique
US6414687B1 (en) Register setting-micro programming system
US6118724A (en) Memory controller architecture
US6061749A (en) Transformation of a first dataword received from a FIFO into an input register and subsequent dataword from the FIFO into a normalized output dataword
US5956744A (en) Memory configuration cache with multilevel hierarchy least recently used cache entry replacement
US5687357A (en) Register array for utilizing burst mode transfer on local bus
US6289138B1 (en) General image processor
US5850632A (en) Memory access controller utilizing cache memory to store configuration information
US5251298A (en) Method and apparatus for auxiliary pixel color management using monomap addresses which map to color pixel addresses
US6731406B1 (en) Segmented multilevel screening for printing files in a page description language
CN102176241A (zh) 使用统一着色器的图形处理结构
US6288724B1 (en) Clipping and trapezoid decomposition of polygons for printing files in a page description language
US7336284B2 (en) Two level cache memory architecture
CN112749120A (zh) 将数据有效地传输至处理器的技术
JP2001084229A (ja) Simd型プロセッサ
US6661534B1 (en) Selective screening for printing files in a page description language
US8478946B2 (en) Method and system for local data sharing
US7012717B1 (en) Multi-level dither screening on a split arithmetic logic unit processor
KR100590673B1 (ko) 페이지 기술 언어로 된 화일을 프린트하기 위한 세그먼트화된 다중 레벨 스크리닝
US6900910B1 (en) Modulo addressing for look up table screening for printing files in a page description language
CN115687194A (zh) 采用降低的能量传输模式的存储器接口

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20130531

Year of fee payment: 8

FPAY Annual fee payment

Payment date: 20140529

Year of fee payment: 9

FPAY Annual fee payment

Payment date: 20160330

Year of fee payment: 11

FPAY Annual fee payment

Payment date: 20170330

Year of fee payment: 12

FPAY Annual fee payment

Payment date: 20180329

Year of fee payment: 13

FPAY Annual fee payment

Payment date: 20190327

Year of fee payment: 14

EXPY Expiration of term