일반 계측기 CP1600

General Instrument CP1600
인텔리비전 비디오 게임 콘솔은 CP1600 패밀리에서 유일하게 널리 보급된 응용 프로그램이었다.

CP1600[1]1975년 General Instrument와 Honeywell의 파트너십으로 개발된 16비트 마이크로프로세서입니다.최초의 싱글 칩 16비트 프로세서 중 하나이며, Texas Instruments TMS9900만이 출시일이 [2]임박했습니다.전체적인 디자인은 PDP-11과 매우 유사했다.

Honeywell은 CP1600을 다수의 프로세스 제어 컴퓨터 및 관련 시스템에서 사용했지만, 가장 널리 사용되는 것은 Intelivision 비디오 게임 콘솔의 CP1610 버전입니다.이 시스템은 General Instrument의 마케팅 철학으로 인해 매우 많은 주문만으로 고객을 찾고 소규모 고객을 무시하기 때문에 다른 용도는 거의 없었다.또한 마이크로프로세서 설계 초기에는 대부분의 잠재 고객이 필요로 [2]했던 두 번째 소스 배치를 추구하지 않았습니다.

묘사

물리적인 실장

CP1600 핀 할당

CP1600은 확장 모드 nMOS로 구현되었으며 +12, +5, -3 V 전원장치가 필요합니다.클럭을 제외한 I/O 접속은 TTL(5 V)[a] 호환성이 있습니다.각 마이크로스테이트 또는 프로세서사이클은 겹치지 않는2개의 클럭에 의해 생성된4개의 내부 타임슬롯을 사용합니다.3.3MHz 2상 클럭은 600나노초의 마이크로 사이클을 생성합니다.5MHz 2상 클럭은 400나노초의 마이크로 사이클을 생성합니다.클럭 신호의 전압 요건으로 인해 마이크로프로세서 [2]설계의 시대에 흔히 볼 수 있듯이, 이러한 신호들은 외부 회로로 생성되어야 했습니다.

CP1600은 16비트 프로세서를 40핀 DIP(Dual In-Line Package) 칩 설계에 장착하기 위해 데이터와 주소 핀을 다중화했습니다.이를 통해 16개의 핀 세트를 주소 선택과 데이터 읽기 및 쓰기에 모두 사용할 수 있었지만, 그러기 위해서는 2개의 버스 사이클이 필요했습니다.또한 프로세서가 핀을 데이터 모드로 전환하는 동안 주소를 래치하기 위해 메모리 버스에 버퍼가 필요했기 때문에 전체 머신의 레이아웃이 복잡해졌습니다.시스템 인터페이스도 마찬가지로 복잡하여 3개의 핀이 필요했습니다.BDIR,BC1그리고.BC2메모리 버스의 [3]상태를 파악하기 위해서는 디코딩이 필요했습니다.

CP1600의 비교적 드문 기능은 "외부 브랜치" 개념이었습니다.이것은 칩에 4개의 핀으로 구현되었습니다.EBCA0통해.EBCA3아래 4비트를 고정하고 있습니다.BEXT명령 opcode.이 명령을 실행하면 핀이 활성화되어 최대 16개의 외부 시스템 중 어떤 시스템을 샘플링해야 하는지 나타내기 위해 사용됩니다.그런 다음 이러한 디바이스는 다음 설정에 따라 쿼리에 응답합니다.EBCI이 핀의 상태에 따라 브랜치가 찍혔는지 [3]여부가 결정됩니다.예를 들어 외부 디바이스에 처리할 필요가 있는 입력 데이터가 있는지 여부를 테스트하기 위해 사용할 수 있습니다.프로세서는 이 값을EBCA디바이스 2의 샘플링을 실시하려면BEXT그 후, 그 디바이스는, 를 설정해 응답합니다.EBCItrue를 지정하면 프로세서가 코드에 뛰어들어 해당 디바이스에서 데이터를 읽습니다.

이것은 외부 디바이스를 처리하는 일반적인 솔루션과는 대조적입니다.대부분의 시스템에서는, 프로세서가 특별한 코드(인터럽트 핸들러)를 호출하는 인터럽트가 발생하고 있습니다.이것에 의해, 인터럽트라고 불리는 디바이스가 추가의 데이터를 읽어내 특정됩니다.이 추가 데이터는 CPU의 전용 핀을 사용하여 표시할 수 있지만 데이터 버스에서는 값으로 표시되는 경우가 많습니다.다음으로 인터럽트 핸들러 코드가 데이터를 처리하기 위해 호출할 디바이스 드라이버를 결정합니다.CP1600에서는 이를 보다 적은 명령으로 구현할 수 있습니다.인터럽트 핸들러는 단순히 일련의BEXT관련 드라이버를 포인트 하는 순서입니다.이 드라이버는, 문제의 디바이스가, 1 개씩을 설정할 때까지 한 번에 1 개씩 실행됩니다.EBCI자동으로 코드가 분기됩니다.

CP1600을 사용하여 시스템을 구현하려면 추가 지원 칩과 로직이 필요한 경우가 많았습니다.여기에는 외부 분기를 사용하는 경우 16개의 신호를 단일 핀에 다중화하는 시스템과 외부 [2]부품의 버스 상태 신호를 디코딩할 필요가 없도록 3비트/8라인 변환기가 포함되어 있습니다.

명령 집합 및 레지스터

CP1600 레지스터
15 14 13 12 11 10 09 08 07 06 05 04 03 02 01 00 (비트 위치)
메인 레지스터
R0 등록 0 / 누적
R1 레지스터 1 / 간접
R2 레지스터 2 / 간접
R3 레지스터 3 / 간접
R4 레지스터 4 / 자동 증분
R5 레지스터 5 / 자동 증분
R6 / SP 레지스터 6 / 스택 포인터
R7 / PC 등록 7 / 프로그램 카운터
상태 플래그
N Z OV C 상태 플래그

명령 opcode에서 사용 가능한 16비트 중 CP1600은 10비트만 사용했습니다.나머지 6비트는 "향후 사용"[4]으로 표시되었습니다.사용되지 않는 비트는 코드 밀도를 낮추지만 General Instrument는 임베디드 시스템용 특수 10비트 와이드 ROM을 만들었습니다.또한 2개의 10비트 ROM 읽기로부터 16비트 인수를 조합한SDBD 명령도 있었습니다.

사용되지 않는 6비트는 코프로세서에서 사용하기 위한 것으로 보여 CPU를 해방할 때까지 정지시키는 PCIT 회선을 주장합니다.초기 문서에는 "확장 명령 세트"를 추가한 1616과 1618 "우선순위 확장기"[5]라는 두 가지 계획된 칩이 나와 있습니다.

이 시스템에는 87개의 기본 지침이 포함되어 있습니다.명령어는 사용하는 주소 지정 형식에 따라 1~[3]3개의 16비트 단어가 될 수 있습니다.CP1600에서는 메모리메모리 간접 어드레싱(오프셋)은 지원되지 않습니다.또, 메모리내의 주소에 대해서 싱글 사이클 변경을 실시하는 전용의 가산기를 사용해 루프가 실장되었습니다.산술로직유닛(ALU)은 16비트 폭으로 2.4마이크로초만에 2개의 16비트 내부 레지스터를 추가할 수 있으며 메모리는 3.2마이크로초만에 [6]2개의 16비트 숫자를 추가할 수 있습니다.

PDP-11과 마찬가지로 CP1600은 8개의 16비트 "범용" 프로세서 레지스터를 사용했습니다.다만, 이것들은 현대의 설계에서는, 실제로는 범용적인 것은 아니었습니다.R0만이 사전 정의된 목적을 가지고 있지 않으며 "프라이머리 어큐뮬레이터"[7]로 기술되어 있습니다.R1 ~ R3 는, 일반적으로 레지스터 베이스의 어드레싱(「임프레드 어드레싱」)에 사용되는 데이터 포인터를 사용할 수 있습니다.R4 및 R5는 액세스 후 자동으로 증가하므로 데이터 수집을 루프 오버할 때 유용합니다.

R6은 스택포인터, R7은 프로그램카운터입니다.이 두 레지스터는 프로그래머가 볼 수 있었기 때문에 여러 스택을 구현하거나 보다 복잡한 분기를 지원하기 위해 사용할 수 있었습니다.암묵적인 스택명령어는 없었습니다.R6 가 「읽기」조작에 사용되고 있는 경우, R6 는 주소를 줄이고, 다음에 포인트 되고 있는 데이터를 반환해, 시뮬레이션을 실시합니다.POP「쓰기」에 사용되고 있는 경우는, R4/R5 와 같이, 인크리먼트 후를 기입해, R4/R5 를 시뮬레이트 합니다.PUSH.

I/O

CP1600은 인텔 시스템에서 수 있는 개별 I/O 핀이 아닌 메모리 매핑 I/O를 사용했습니다.멀티플렉스 버스와 멀티스테이트 버스 스테이터스의 사용으로 I/O의 실장은 메모리 매핑시스템에서의 통상적인 경우보다 어려워졌습니다.즉, 실장에서는, CPU와의 인터페이스를 실현하기 위해서 래치나 버퍼를 사용할 필요가 있었습니다.이는 버스를 주소 표시에서 [7]데이터로 변경했기 때문입니다.이로 인해 I/O 퍼포먼스가 저하되고 I/O 디바이스의 복잡성이 높아졌습니다.

이 문제에 대처하기 위해 GI는 필요한 버스 로직을 구현하는 164x 전용 I/O칩을 공급했습니다.예를 들어 1641 키보드 컨트롤러, 1643 카세트 테이프 컨트롤러, 1647 디스플레이 [5]컨트롤 등이 있습니다.이 중 가장 유명한 것은 1640 "Programmable Interface Controller"로 CP1600과 연동하여 CPU의 채널 컨트롤러로 동작하도록 설계되어 있습니다.다른 1640 시리즈 칩과 마찬가지로 PIC는 내부적으로 버스 로직을 디코딩했지만 I/O를 수행하기 위해 자체 프로그램을 실행할 수 있는 매우 단순한 프로세서를 추가했습니다.다이렉트 메모리 액세스예를 들어 플로피 디스크 카드의 PIC에 디스크 상의 특정 섹터에서 데이터를 읽도록 명령을 보낼 수 있습니다.그런 다음 PIC는 데이터를 내부 버퍼에 읽어 버스 상태 핀이 모두 0일 때 사용되지 않는 시간을 감시하고 데이터를 메인 [5]메모리에 보냅니다.

General Instrument는 16비트 이상의 [8]미니컴퓨터와 호환되는 크로스 어셈블러와 시뮬레이터/디버거를 제공했습니다.GI는 GIC1600에 [9]스탠드아론 CP1600 기반의 마이크로컴퓨터 시스템도 제공했습니다.

사용하다

Champion 2711이나[10] Intellivision 등의 게임 콘솔에서 사용되는 CP1610은 1600 마이크로프로세서 패밀리와 호환성이 있습니다.2MHz 2상 클럭을 사용하여 1마이크로초의 프로세서 사이클을 생성합니다.NTSC Intellivision의 CP1610은 1.7897725 MHz 2상 클럭을 사용합니다.CP1600의 전통적인 컴퓨터 역할 사용자는 비교적 드물었지만 1980년부터 비디오 게임 크래시로 1984년 [11]인텔리비전 생산 라인이 폐쇄될 때까지 300만 대 이상의 인텔리비전이 생산되었습니다.

CP1600의 생산은 1985년 General Instrument가 마이크로일렉트로닉스 사업부를 분사하여 마이크로칩 기술을 개발하면서 종료되었습니다.이 시점까지 MC68000과 같은 32비트 디자인이 다수 제공되어 CP1600과 같은 16비트 설계에 대한 관심이 한정되어 있었고, 주요 기존 고객인 Intellivision은 더 이상 생산되지 않았습니다.다른 많은 제품들도 동시에 단종되었으며, 주요 제품은 PIC였습니다.

메모들

  1. ^ 를 들어 National Semiconductor PACE는 12V 신호를 출력하고 TTL 컴포넌트와 함께 사용하기 위해 광범위한 인터페이스를 필요로 했습니다.

레퍼런스

인용문

  1. ^ Belzer, Jack; Holzman, Albert G.; Kent, Allen (1978). Encyclopedia of Computer Science and Technology: Volume 10 - Linear and Matrix Algebra to Microorganisms: Computer-Assisted Identification. CRC Press. p. 402. ISBN 9780824722609.
  2. ^ a b c d 오스본 1981, 2.1페이지
  3. ^ a b c 시리즈 1600 1975, 2.1
  4. ^ CP-1600 Microprocessor Users Manual (PDF) (S16DOC-CP 1600 -04 ed.). General Instruments. May 1975. Retrieved 5 July 2022.
  5. ^ a b c 시리즈 1600 1975, 페이지 i
  6. ^ 시리즈 1600 1975.
  7. ^ a b 로웰 터너, "General Instruments CP1600", 2001년 7월 10일
  8. ^ CP-1600 Cross Assembler Simulator Users Manual (PDF). General Instrument. November 1974.
  9. ^ GIC1600 Microcomputer Users Manual (PDF). General Instrument. September 1975.
  10. ^ "Champion 2711 Pre-83". pre83.com. Retrieved 2022-05-23.
  11. ^ "Mattel Intellivision - 1980-1984". ClassicGaming. IGN. Archived from the original on 2008-06-23. Retrieved 2008-05-16.

참고 문헌

외부 링크