ASCII R800
"오늘의AI위키"의 AI를 통해 더욱 풍부하고 폭넓은 지식 경험을 누리세요.
1. 개요
ASCII R800은 MSX turbo R 개발 당시 Zilog Z80과 호환되도록 개발된 고성능 프로세서이다. Z80 명령어 세트를 기반으로 개발되어 기존 Z80 기반 소프트웨어와의 호환성을 유지하면서, M1 사이클 폐지, 페이지 어드레스 모드 도입, 캐시 메모리 사용 등을 통해 성능을 향상시켰다. 16비트 ALU, 24비트 어드레스 공간 지원, DRAM 인터페이스 내장, DMA 컨트롤러 탑재 등의 특징을 가지며, Z80과 호환되는 인터럽트 모드 외에 7가지 새로운 인터럽트 모드를 제공한다. R800은 100핀 QFP 형태로 제공되었으며, Z80의 명령어 집합을 확장하여 곱셈 명령어를 추가하고, IX, IY 레지스터를 8비트로 다루는 명령어를 정식으로 포함했다.
더 읽어볼만한 페이지
- 8비트 마이크로프로세서 - 인텔 8080
인텔이 1974년에 출시한 8비트 마이크로프로세서인 인텔 8080은 8008의 후속 제품으로서 성능과 기능 향상을 통해 초기 마이크로컴퓨터 시장 성장을 이끌었으며, 64KB 메모리 공간 지원, 다양한 애플리케이션 구현, CP/M 운영체제 핵심 프로세서 역할 수행, 후속 x86 아키텍처 기반 마련 등 중요한 역할을 수행했다. - 8비트 마이크로프로세서 - 인텔 8008
인텔 8008은 1972년 인텔이 출시한 8비트 마이크로프로세서로, 데이터포인트 3300 터미널용으로 구상되었으나 인텔이 지적 재산을 인수하여 상업적 성공을 거두며 인텔 8080과 x86 제품군의 발판이 되고 최초의 상업용 개인용 컴퓨터에 사용되었다. - MSX - 아스키 (기업)
아스키는 1977년 설립된 일본의 출판 및 IT 기업으로, 잡지 발행, MSX 규격 개발 참여, 게임 제작 등 다양한 사업을 펼쳤으며, 현재는 카도카와 그룹의 자회사이다. - MSX - MSX 베이직
MSX BASIC은 MSX 컴퓨터를 위한 BASIC 프로그래밍 언어 및 인터프리터로, 다양한 버전과 확장을 통해 텍스트, 그래픽, 하드웨어 스프라이트, 인터럽트 기능 등을 지원하며, MSX 고유 기능을 활용하는 애드온 모듈 개발도 이루어졌다. - 마이크로프로세서 - 중앙 처리 장치
중앙 처리 장치(CPU)는 컴퓨터 시스템의 핵심 부품으로, 프로그램 명령어를 해석하고 실행하여 데이터를 처리하는 장치이다. - 마이크로프로세서 - ARM 아키텍처
ARM 아키텍처는 저전력 설계로 모바일 기기에서 널리 쓰이는 RISC 기반 프로세서 아키텍처로서, IP 코어 라이선스 모델과 ARM Flexible Access를 통해 다양한 분야로 확장되고 있다.
| ASCII R800 |
|---|
2. 개발 배경
MSX 터보 R 개발 과정에서 아스키 코퍼레이션은 Z80과 호환되거나 호환되지 않는 다양한 프로세서를 후보로 고려했다. 당시 회사 직원이자 ASIC을 연구 개발하던 키시오카 카즈야(岸岡和也|기시오카 가즈야일본어)는 MSX 아키텍처에 맞춰 고속으로 Z80을 개량한 버전을 개발하고 있었다.[1]
R800 프로세서는 기존 Z80 프로세서와 호환성을 유지하면서도 성능을 크게 향상시킨 것이 특징이다. 주요 특징은 다음과 같다.
아스키는 MSXturboR을 개발하면서 Z80 호환 및 비호환을 포함해 다양한 기존 제품을 CPU 후보로 검토했다. 당시 사내에 있던 키시오카 카즈야가 독자적으로 ASIC을 사용한 Z80 고속 버전 연구를 진행했고, 이를 바탕으로 MSX용으로 커스터마이징하여 채택했다.[5]
R800은 RISC의 머리글자를 따서 지어졌다. R800이 RISC인지 CISC인지에 대한 논쟁에서, 내부 구조는 RISC이지만 Z80 바이너리 호환을 위해 완전한 로드-스토어형 명령 집합은 아니라는 의견이 있었다. 그러나 Z80의 명령은 전형적인 CISC (예: VAX)에 비해 충분히 단순하므로, "Z80 호환 명령 집합을 가지고 RISC의 내부 구조로 구현된 프로세서"라고 하는 것이 타당하다고 여겨진다.
3. 주요 특징
R800은 MSXturboR 개발 과정에서 아스키 코퍼레이션이 채택한 프로세서로, Z80과의 호환성을 유지하면서도 성능 향상을 목표로 개발되었다.[1] 당시 아스키 코퍼레이션의 직원이었던 키시오카 카즈야는 ASIC을 연구 개발하던 중 Z80을 고속으로 개량한 버전을 개발하고 있었고, 이것이 R800의 기반이 되었다.[5]
3. 1. Z80 명령 코드 호환
R800은 Z80 명령어와 호환성을 유지하면서도 성능을 크게 향상시켰다. 클럭 속도는 7.16MHz로 오리지널 Z80(3.57MHz)의 두 배이며, 16비트 ALU를 사용하여 연산 속도가 빨라졌다.[1]
MULUB(8비트), MULUW(16비트) 곱셈 명령어가 추가되었고, IX, IY 레지스터를 8비트(IXh, IXl, IYh, IYl)로 사용하는 등 기존에 문서화되지 않았던 Z80 명령어를 정식으로 지원한다.[1] ADD HL, BC와 같이 기존에 11클럭이 걸리던 명령어를 1클럭에 실행할 수 있게 되는 등 일부 명령어 실행 속도가 빨라졌다.
하지만 R800은 Z80을 직접 기반으로 한 것이 아니라 Z800 계열에서 파생되었기 때문에, Z80의 다른 문서화되지 않은 기능은 일부 갖추지 못했다. 예를 들어, F 레지스터의 비트 3과 5로 표시되는 문서화되지 않은 플래그는 Z80과 동일한 값을 가지지 않으며(ZEXALL 테스트 실패), SLL이라고 흔히 불리는 문서화되지 않은 opcode는 SLA 명령어의 별칭일 뿐이다.[6][7]
3. 1. 1. 메모리 접근 사이클 고속화
R800은 메모리 접근 사이클을 고속화하기 위해 몇 가지 기술적 개선을 도입했다.
MSX는 명령어와 데이터를 256×256바이트 블록의 메모리에 배치하여 수행하는데, R800은 마지막으로 수행한 상위 8비트의 상태를 저장하였다가 다음 명령이 같은 256바이트 영역을 이용하는 경우 상위 8비트 어드레스를 생략하는 수법으로 사이클을 절약할 수 있다.
Z80의 메모리 접근은 다음과 같은 사이클로 이루어진다.[4]
1. Z80, 사이클 1: 상위 8비트 주소 설정
2. Z80, 사이클 2: 하위 8비트 주소 설정
3. Z80, 사이클 3: 대기 상태
4. Z80, 사이클 4: 리프레시, 파트 1
5. Z80, 사이클 5: 리프레시, 파트 2
R800은 각 명령어가 실행될 때 RAM의 한 행을 리프레시하는 대신 전체 RAM 블록을 리프레시한다. CPU는 30μs마다 4μs 동안 중단되며, 이 시간은 RAM 블록을 리프레시하는 데 사용된다. 가져오기 명령어 사이에 리프레시가 없고, 더 빠른 RAM 칩으로 인해 대기 상태가 제거되므로, 간단한 명령어는 단 1 사이클만 사용하여 실행할 수 있다.[6][7]
3. 1. 2. 숨겨진 명령어 지원
R800은 이전 MSX 소프트웨어와의 호환성을 위해 Z80과 동일한 명령어 집합을 사용하며, 몇 가지 유용한 기능이 추가되었다. 특히 IX와 IY 레지스터를 8비트 레지스터(IXH, IXL, IYH, IYL)로 다루는 명령어를 정식으로 지원하는데[1], 이는 기존에 문서화되지 않았던 Z80 명령어를 공식적으로 포함시킨 것이다.
하지만 R800은 Z80을 직접 기반으로 한 것이 아니라 Z800 계열에서 파생되었기 때문에, Z80의 다른 문서화되지 않은 기능은 일부 갖추지 못했다.[6][7]
3. 2. 16비트 ALU
R800은 16비트 ALU를 탑재하여 연산 능력이 향상되었다.[6][7] 설계자들은 더욱 파이프라인화된 실행 속도를 유지하기 위해 완전한 16비트 ALU를 구현했으며, Z80에서 11 클럭 사이클이 걸리는 ADD HL,BC와 같은 명령어는 파이프라인 처리 덕분에 R800에서는 단 1 버스 사이클(1-2 클럭)로 실행될 수 있었다.
3. 2. 1. 곱셈 기능 추가
R800은 16비트 ALU를 갖춰 연산 능력이 향상되었다.[6][7] 특히, 32비트 및 16비트 곱셈 명령어(MULUB, MULUW)가 추가되어 기존 Z80에 비해 연산 속도가 빨라졌다.[6][7] 16비트 연산은 8비트 연산과 동일한 속도로 처리할 수 있었다.[6][7]
3. 3. 24비트 어드레스 공간 지원
R800은 메모리 관리 장치(MMU)를 통해 24비트 주소 버스로 16MB의 메모리 공간을 지원한다. 데이터 버스는 이전의 Z80과 동일하게 8비트를 유지했다.[6][7] 메모리 접근 속도를 높이기 위해 M1 사이클을 폐지하고 페이지 주소 모드를 도입했는데, 이는 주소의 상위 바이트가 바뀌지 않을 때 접근 속도를 빠르게 하는 방식이다. MSX는 명령어와 데이터를 256×256바이트 블록의 메모리에 배치하여 수행하는데, R800은 마지막으로 수행한 상위 8비트의 상태를 저장하였다가 다음 명령이 같은 256바이트 영역을 이용하는 경우 상위 8비트 어드레스를 생략하여 사이클을 절약한다.[6][7]
3. 3. 1. DRAM 인터페이스 내장
DRAM 인터페이스를 내장하여 CPU가 직접 DRAM을 연결할 수 있도록 설계되었다. 이를 통해 DRAM 리프레시 및 노 웨이트(no-wait) 액세스 제어가 가능하다. 또한 외부에서 DRAM에 접근할 수 있도록 중재(아비트레이션) 기능도 내장되어 있다.[6][7]
3. 4. 클럭 제너레이터 내장
MSXturboR는 28.63636MHz로 동작하며, 4분주한 7.159090MHz를 시스템 클럭으로 출력했다.[6][7] 이는 기존 MSX(Z80A 3.579545MHz, M1 사이클 1 웨이트)에 비해 단순한 M1 사이클 명령으로 10배 빠른 속도이다.[6][7]
3. 5. 인터럽트 모드 추가
ASCII R800은 기존 Z80 호환 인터럽트 모드 외에 7종류의 새로운 인터럽트 모드를 제공한다.[6][7] 이 두 인터럽트 모드는 상호 배타적으로 사용된다.3. 6. DMA 컨트롤러 내장
R800은 DMA 컨트롤러를 내장하고 있으며, DMA0과 DMA1 두 개의 채널을 지원한다.[6][7] 메모리-메모리, 입출력-메모리, 메모리-입출력, 입출력-입출력 간 전송이 가능하다.[6][7] 전송 주소는 24비트 리니어 지정이 가능하며, DMA 주소 자동 증가 기능이 내장되어 있다.[6][7]
3. 7. 패키지 형태
패키지는 100핀, 0.65mm 피치의 QFP(플랫 패키지)를 채용하였다.[6][7]
4. 하드웨어 변경 사항
R800은 MSXturboR에 탑재된 CPU로, Z80 호환 프로세서 및 다른 CPU들을 검토한 끝에 채택되었다. 아스키(ASCII) 사내의 키시오카 카즈야가 독자적으로 연구하던 ASIC을 사용한 Z80 고속 버전을 기반으로, MSX용으로 커스터마이징되었다.[5]
R800의 'R'은 RISC를 의미한다. R800은 내부적으로 RISC 구조를 가지고 있지만, Z80과의 바이너리 호환성을 위해 완전한 로드-스토어형 명령어 집합을 사용하지는 않는다. Z80 명령어는 전형적인 CISC(예: VAX)에 비해 단순한 편이므로, "Z80 호환 명령어 집합을 가진 RISC의 내부 구조로 구현된 프로세서"라고 할 수 있다.
R800은 ALU와 Opcode Fetch 방식을 개선하여 성능을 향상시켰다. (자세한 내용은 하위 섹션 참조)
4. 1. ALU 변경
R800은 16비트 ALU를 사용하여 연산 속도를 향상시켰다.[2] 기존 Z80이 내부적으로 4비트 ALU를 사용한 것과 달리, R800은 16비트 ALU를 통해 더욱 파이프라인화된 실행 속도를 유지할 수 있었다. 예를 들어 Z80에서 11 클럭 사이클이 걸리던 ADD HL,BC 명령어는 R800에서 단 1 버스 사이클(1-2 클럭)로 실행되었다.[6][7] 이는 파이프라인 처리 덕분에 가능해진 결과이다.클럭 속도는 14.32 MHz로, 기존의 3.57 MHz보다 4배 빨라졌으며, 버스 클럭은 7.16 MHz로 증가했다. 다만, 데이터 버스는 기존 하드웨어와의 호환성을 위해 8비트로 유지되었다.[6][7]
4. 2. Opcode Fetch 방식 변경
R800 CPU는 opcode를 가져오는(fetch) 방식을 개선하여 성능을 향상시켰다. 기존의 Z80 CPU는 메모리 주소를 설정하기 위해 상위 8비트와 하위 8비트를 আলাদা(따로) 설정해야 했고, 이 과정에서 대기 상태(wait state)가 발생했다. MSX는 메모리를 256x256 바이트 블록으로 구성했기 때문에 이러한 과정이 필요했다.R800은 마지막으로 수행한 상위 8비트 주소값을 기억하는 방식을 도입했다. 만약 다음에 실행할 명령어가 이전 명령어와 같은 256바이트 블록 내에 있다면, 상위 8비트 주소 설정을 생략하여 사이클을 절약할 수 있었다.
하지만 Z80의 리프레시 사이클은 상위 8비트 정보를 손상시키기 때문에, R800은 다른 해결책을 사용했다. 각 명령어 실행 시 RAM의 한 행을 리프레시하는 대신, 30μs마다 4μs 동안 CPU를 중단시켜 전체 RAM 블록을 한 번에 리프레시했다.
이러한 RAM 블록 리프레시 방식 덕분에 명령어 가져오기 사이에 리프레시가 필요 없어졌고, 더 빠른 RAM 칩을 사용하여 대기 상태를 제거할 수 있었다. 결과적으로 간단한 명령어는 단 1사이클 만에 실행될 수 있게 되었다. 프로그램이 256바이트 경계를 넘어갈 때만 상위 8비트 주소 설정 사이클(위 Z80 예제에서 사이클 1)이 실행되었다.[4] [6] [7]
5. 호환성
R800은 이전 MSX 소프트웨어와의 호환성을 위해 Z80과 동일한 명령어 집합을 사용한다.[1] MULUB (8비트)와 MULUW (16비트)라는 8x8비트 및 16x16비트 곱셈 명령어가 추가되었다.[1] 또한, IX와 IY를 8비트 레지스터(IXH, IXL, IYH, IYL)로 다루는 명령에 대한 모든 opcode를 포함하여, 문서화되지 않은 많은 Z80 명령어가 정식으로 포함되었다.[1]
R800은 Z800 계열에서 파생되었기 때문에, Z80의 다른 문서화되지 않은 기능은 일부 갖추지 못했다.[1] 예를 들어, F 레지스터의 비트 3과 5로 표시되는 문서화되지 않은 플래그는 Z80과 동일한 값을 가지지 않으며(그로 인해 ZEXALL 테스트에 실패), SLL이라고 흔히 불리는 문서화되지 않은 opcode는 SLA 명령어의 별칭일 뿐이다.[1]
6. 외부 하드웨어
카트리지 슬롯을 통해 연결된 외부 하드웨어는 Z80과 유사한 타이밍을 사용한다.[6][7] 터보 R의 내부 롬조차도 이 페치 방식에 충분히 빠르지 않으므로, 터보 R의 추가 칩은 롬의 내용을 램에 미러링하여 더 빠르게 실행할 수 있도록 한다.[6][7]
7. 기타 사항
MSX turbo-R에서는 기존 MSX와의 호환성 문제로 DMA와 MMU를 사용하지 않았고, 주소 확장도 뱅크 교환 방식의 메모리 매핑으로 구현했다. 또한 MSX2+까지의 상위 호환성을 위해 Z80 상당품을 추가로 탑재하여 R800과 상호 배타적으로 전환하여 사용했다.[5] 이 Z80 상당품은 MSX-ENGINE에 포함되어 있었다.
MSXturboR "FS-A1ST"는 R800을 탑재하고 출시되었지만, 탑재 예정이었던 신형 VDP의 개발 지연으로 인해 기존의 저속 V9958을 그대로 사용했기 때문에, 고속화된 CPU의 성능을 충분히 활용하지 못했다.
참조
[1]
간행물
MSXturboR development story
1990-11
[2]
웹사이트
The Z-80 has a 4-bit ALU. Here's how it works
http://www.righto.co[...]
[3]
문서
[4]
웹사이트
R800 - MSX Wiki
https://www.msx.org/[...]
[5]
간행물
MSXturboR開発秘話
1990-11
[6]
문서
R800ユーザーズマニュアル 暫定版
http://d4.princess.n[...]
[7]
문서
MSXturboRに関するハードウェア資料
http://k-ichi.blogsp[...]
본 사이트는 AI가 위키백과와 뉴스 기사,정부 간행물,학술 논문등을 바탕으로 정보를 가공하여 제공하는 백과사전형 서비스입니다.
모든 문서는 AI에 의해 자동 생성되며, CC BY-SA 4.0 라이선스에 따라 이용할 수 있습니다.
하지만, 위키백과나 뉴스 기사 자체에 오류, 부정확한 정보, 또는 가짜 뉴스가 포함될 수 있으며, AI는 이러한 내용을 완벽하게 걸러내지 못할 수 있습니다.
따라서 제공되는 정보에 일부 오류나 편향이 있을 수 있으므로, 중요한 정보는 반드시 다른 출처를 통해 교차 검증하시기 바랍니다.
문의하기 : help@durumis.com