WDC 65C816
WDC 65C816PDIP40 패키지 | |
| 일반정보 | |
|---|---|
| 런칭 | |
| 공통 제조업체 |
|
| 성능 | |
| 최대 CPU 클럭 속도 | 1MHz ~ 14MHz |
| 자료폭 |
|
| 주소폭 | 24 |
| 건축과 분류 | |
| 명령어세트 | 6502 |
| 명령어수 | 92 |
| 물리적 규격 | |
| 패키지 | |
| 역사 | |
| 이전 버전 |
|
| 후임자 | WDC 65C832[citation needed] (해제되지 않음) |
W65C816S(65C816 또는 65816)는 WDC(Western Design Center)에서 개발 및 판매하는 16비트 마이크로프로세서(MPU)입니다.1983년에 [1]출시된 W65C816S는 WDC 65C02 8비트 MPU의 향상된 버전으로, 그 자체는 오랜 MOS Technology 6502 NMOS MPU의 CMOS 향상된 버전입니다. 65C816은 Apple IIGS의 CPU이며, 변형된 형태로 슈퍼 닌텐도 엔터테인먼트 시스템입니다.
부품 명칭 중 65는 65C02 호환 모드에서 따온 것이고, 816은 MPU가 8비트와 16비트 레지스터 크기를 선택할 수 있다는 것을 의미합니다.W65C816S는 16비트 레지스터를 사용할 수 있을 뿐만 아니라 메모리 어드레싱을 24비트로 확장하여 최대 16메가바이트의 랜덤 액세스 메모리를 지원합니다.향상된 명령어 세트와 16비트 스택 포인터가 있으며, 시스템 하드웨어 관리를 개선하기 위한 여러 새로운 전기 신호가 있습니다.
65816은 24비트 주소 지정에도 불구하고 진정한 24비트 컴퓨터가 아닙니다.Apple, Atari 및 Comdore는 65816의 [2][3]주기가 빨라졌음에도 불구하고 6502개의 8비트 컴퓨터 라인을 대체할 때 완전히 32비트 프로그래밍 모델을 제공하는 모토로라 68000 프로세서 대안을 선택했습니다.
재설정 시 W65C816S는 "에뮬레이션 모드"로 시작하며, 이는 실질적으로 65C02로 동작함을 의미합니다.그 후, W65C816S는 두 개의 명령어 시퀀스가 있는 "네이티브 모드"로 전환되어 모든 향상된 기능을 사용할 수 있게 하지만 대부분의 65C02 소프트웨어와 상당한 수준의 하위 호환성을 유지할 수 있습니다.그러나 NMOS 조상에 대한 핀 호환 대체품인 65C02의 PDIP40 버전과는 달리 PDIP40 W65C816S는 다른 6502 제품군 MPU와 핀 호환되지 않습니다.
W65C802 또는 65802는 65C816과 완전히 소프트웨어 호환되지만 6502 및 65C02와 전기적으로 호환됩니다.따라서 65C802는 6502 또는 65C02가 장착된 대부분의 시스템에서 드롭인 대체품으로 사용될 수 있습니다.그러나 65C802는 24비트 주소를 전송할 수 없으므로 64KB 주소 공간으로 제한됩니다.65C802는 더 이상 생산되지 않습니다.
역사

1981년 WDC의 설립자이자 CEO인 Bill Mensch는 65C02의 개발을 그의 생산 파트너인 Rockwell Semiconductor와 Synertek와 함께 시작했습니다.65C02 작업의 주된 목표는 원래 6502의 NMOS 프로세스에서 CMOS 프로세스로 이동하여 훨씬 낮은 전력 레벨에서 실행할 수 있도록 하는 것이었습니다.주어진 클럭 속도에서 1 ≥ 10 및 1 ≥ 20.또한 지원되는 최대 클럭 속도를 높일 수 있는 기능도 원했습니다.65C02 디자인은 NMOS 6502에 존재하는 칩 에라타(예: 악명 높은 칩)를 처리했습니다.JMP (<addr>)bug) 및 일부 기존 [4]명령어에 대한 새로운 명령어 및 새로운 주소 지정 모드를 도입했습니다.
W65C816S의 개발은 1982년 멘쉬가 애플 컴퓨터와 애플 II 시리즈의 새로운 버전의 개인용 컴퓨터를 협의한 후 시작되었습니다.애플은 6502와 호환되는 MPU를 원했는데 애플 II에서 사용되고 있었지만 더 많은 메모리를 처리하고 16비트 워드를 로드하고 저장할 수 있는 기능이 있었습니다.그 결과 65C816이 1984년 3월에 완성되었고 하반기에 Apple과 Atari에 샘플을 제공하고 [5]1985년에 완전히 출시되었습니다.Mensch는 설계 과정에서 그의 여동생 Kathryn의 도움을 받았는데, Kathryn은 그 장치의 레이아웃의 일부를 담당했습니다.
65C802 역시 65C816과 동일한 공정을 거쳤습니다.두 제품 모두 동일한 제조 라인에서 생산되었으며 칩을 외부 핀에 연결하는 마지막 금속화 단계에서만 분기되었습니다.65C802의 핀은 원래 6502와 동일한 레이아웃으로 CPU의 16비트 처리를 사용하면서 드롭인 교체로 사용할 수 있었습니다.그러나 원래 핀아웃을 사용했기 때문에 16개의 주소 지정 핀만 가지고 있었기 때문에 64KB의 외부 [6]메모리에만 액세스할 수 있었습니다.일반적으로 하드웨어 제조업체는 처음부터 프로젝트를 설계할 때 65C802가 아닌 65C816을 사용하여 생산이 중단되었습니다.
이후 애플은 65C816을 애플 IIGS 컴퓨터에 통합했습니다.기본 65C816 디자인은 1980년대 중후반부터 1990년대 초까지 GTE, Sanyo 등에서 세컨드 소싱했습니다.
1990년대에, 65C816과 65C02는 완전히 정적 코어로 변환되었고, 이것은 레지스터 내용의 손실 없이 프로세서의 Ø2 클럭을 완전히 정지시킬 수 있게 했습니다.이 기능은 비동기식 정적 RAM의 사용과 함께 대기 상태에서 최소한의 전력을 사용하는 설계를 생성할 수 있게 했습니다.
W65C816S는 2023년 현재[update] WDC에서 40핀 PDIP, PLCC44 또는 44핀 TQFP 패키징 및 ASIC 통합을 위한 코어(예: Winbond의 TV Edutainment IC 시리즈의 W55V9x)로 제공됩니다.WDC는 자체적으로 팹리스 반도체 회사로서 다양한 주조 공장들과 협력하여 W65C816S는 물론 기타 호환 가능한 제품들을 생산하고 있습니다.이산형 프로세서는 다수의 전자제품 유통업체를 통해 구입할 수 있습니다.W65C816S 기능을 맞춤형 ASIC에 포함하고자 하는 설계자의 경우, WDC는 Verilog에서 RTL(등록자-전송 수준) 코드를 제공합니다.

특징들
| |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
WDC 65c816 기능:
- 완전 정적 CMOS 설계는 낮은 소비 전력(1MHz에서 300µA)과 향상된 노이즈 내성을 제공합니다.
- 넓은 작동 전압 범위: 1.8V ~ 5.0V ± 5%
- 단상 클럭 소스를 사용하여 5V(SuperCPU의 경우 20Mhz)에서 공식적으로 최대 14Mhz의 넓은 작동 주파수 범위(취미자는 20Mhz를 훨씬 초과하여 65C816을 성공적으로 작동함).
- 에뮬레이션 모드를 사용하면 문서화되지 않은 opcode를 제외하고 NMOS 6502 및 CMOS 65C02와 상당한 소프트웨어 호환이 가능합니다.65C816의 모든 256개의 opcode는 두 작동 모드에서 모두 작동합니다.
- 24비트 메모리 주소 지정을 통해 16MB의 메모리 공간에 액세스할 수 있습니다.
- 16비트 ALU, 누산기(
C, 스택 포인터()SP, 및 인덱스 레지스터()X그리고.Y). - 16비트 직접페이지(일명 제로페이지) 레지스터 (
DP). - 8비트 데이터 뱅크(
DB) 및 프로그램 뱅크(PB) 레지스터를 통해 24비트 코드 및 데이터 주소의 비트 16~23을 생성합니다.별도의 프로그램 및 데이터 뱅크 레지스터를 통해 프로그램 분할 및 16MB 선형 데이터 어드레싱이 가능합니다. - 유효한자료주소(
VDA) 및 유효한 프로그램 주소(VPA메모리 품질 검증, 이중 캐시 및 사이클 스틸 DMA 구현을 위한 제어 출력. - 벡터 당김(
VPB인터럽트 벡터를 가져오는 시점을 나타내기 위해 출력을 제어합니다. - 중단()
ABORTB) 입력 및 연관 벡터는 페이지 오류 및 메모리 액세스 위반과 같은 버스 오류 상태의 프로세서 복구를 지원합니다. - 직접 페이지 레지스터 및 스택 상대 주소 지정을 통해 재진입, 재귀 및 재위치 가능한 프로그래밍 기능을 제공합니다.
- 24개의 어드레싱 모드 - 65C02에 구현된 대부분의 새로운 opcode를 포함하여 256개의 opcode를 사용하는 92개의 명령어와 함께 13개의 오리지널 6502 모드.
- 블록 복사 지침(
MVN그리고.MVP), 최소 코드로 RAM의 한 영역에서 다른 영역으로 데이터 구조를 신속하게 복사할 수 있습니다. - 인터럽트 대기)
WAI) 및 Stop-the-Clock (STP명령어는 전력 소모를 더욱 줄이고 인터럽트 지연 시간을 줄이며 외부 이벤트와 동기화할 수 있습니다. - 공동 처리기(
COP) 연관된 벡터를 사용하는 명령어는 부동 소수점 프로세서와 같은 공동 탐색 구성을 지원합니다. - 예약 "탈출"()
WDM) 미래 2바이트 opcode에 대한 지침과 미래 디자인에 대한 링크 (WDM은 W65C816S 디자이너 William D의 이니셜입니다. 멘쉬).
이전 모델과의 비교
투모드
65C816은 16비트 동작이 보이지 않는 "에뮬레이션 모드"와, 인덱스 레지스터가 8비트로 강제되는 칩이 6502와 매우 유사하고, opcode의 사이클 타이밍이 동일한 것으로 보이며, 모든 새로운 기능을 노출하는 "네이티브 모드"가 있습니다.CPU는 전원이 켜지거나 재설정되면 자동으로 에뮬레이션 모드로 전환되며, 이 모드를 통해 65([4]C)02를 교체할 수 있습니다.
16비트 레지스터
네이티브 모드에서 실행할 때 65C816의 가장 명확한 변경 사항은 다양한 레지스터를 8비트에서 16비트로 확장한 것입니다.이러한 향상은 누산기에 영향을 미칩니다(A), .X그리고.Y 인덱스 레지스터 및 스택 포인터(SP프로그램 카운터()에는 영향을 주지 않습니다.PC), 항상 [7]16비트였습니다.
네이티브 모드로 실행하면 상태 레지스터의 두 비트가 의미를 바꿉니다.원래 6502에서는 비트 4와 비트 5를 사용하지 않았지만 비트 4를 브레이크(break)라고 합니다.b) flag. 네이티브 모드에서 비트 4는x플래그와 비트 5는 다음이 됩니다.mflag. 이 비트들은 인덱스 등록 여부를 제어합니다 (x) 및/또는 누적기/메모리(m)의 크기는 8비트 또는 16비트입니다.이러한 비트의 0은 16비트 크기를 설정하고, 1은 8비트 크기를 설정합니다.이러한 비트는 프로세서의 전원이 켜지거나 재설정될 때 1비트로 잠기지만 프로세서가 네이티브 [7]모드로 전환되면 변경할 수 있습니다.
네이티브 모드 동작에서, 누적기와 인덱스 레지스터는 프로그래머의 재량에 따라 16비트 또는 8비트 크기로 설정될 수 있습니다.REP그리고.SEP조작하기 위한 명령.m그리고.x상태 레지스터 비트입니다.이 기능을 통해 프로그래머는 워드 및 바이트 크기 데이터에 대한 연산을 수행할 수 있습니다.누산기와 인덱스 레지스터 크기는 독립적으로 설정할 수 있으므로, 예를 들어 누산기는 8비트, 인덱스 레지스터는 16비트로 설정할 수 있으므로, 프로그래머는 포인터 연산을 수행할 필요 없이 64KB 범위에서 개별 바이트를 조작할 수 있습니다.
레지스터 크기를 16비트로 설정하면 메모리 액세스는 클럭 주기당 1바이트의 속도로 연속되는 두 바이트를 가져오거나 저장합니다.따라서 다음과 같은 읽기-수정-쓰기 명령어.ROR <addr>, 누산기가 16비트로 설정된 상태에서 사용할 경우, 는 메모리의 하나가 아닌 2개의 연속 바이트에 영향을 미치며 누산기가 8비트로 설정된 경우보다 더 많은 클럭 사이클을 소비합니다.마찬가지로 모든 산술 연산과 논리 연산은 16비트 [8]연산이 됩니다.
24비트 주소 지정
네이티브 모드로 실행되는 동안 시스템의 또 다른 주요한 변화는 메모리 모델이 원래 6502의 16비트 형식에서 24비트 형식으로 확장되었다는 것입니다.65c816은 두 개의 8비트 레지스터, 즉 데이터 뱅크 레지스터 (DB) 및 프로그램 뱅크 레지스터(PB), 주소의 16-23 비트를 설정하여 효과적으로 24 비트 주소를 생성합니다.두 경우 모두 'bank'는 주소 범위에 의해 경계지어지는 연속적인 64KB 메모리 세그먼트를 나타냅니다.$xx0000-$xxFFFF,어디에xx은행 주소, 즉 유효 주소의 비트 16-23입니다.둘다요.DB그리고.PB초기화되어 있습니다$00전원을 켜거나 [9]재설정할 때.
opcode 또는 operand fetch cycle 동안,PB프로그램 카운터 앞에 붙여집니다(PC24비트 유효 주소를 형성합니다.할까PC"0"(0으로 되돌림),PB증분되지 않습니다.따라서 프로그램은 실행 중인 은행의 한계에 의해 제한됩니다.이 메모리 모델은 다른 뱅크에서 코드를 실행하기 위해 "긴" 점프 또는 서브루틴 호출을 사용하지 않는 한 분기 및 서브루틴 대상은 분기 또는 호출을 수행하는 명령어와 동일한 뱅크에 있어야 한다는 것을 암시합니다.다음과 같은 프로그램적 수단은 없습니다.PB직접 [10]변경할 수 있습니다.
데이터 가져오기 또는 저장 주기 동안,DB는 데이터에 액세스할 24비트 유효 주소를 형성하기 위해 16비트 데이터 주소 앞에 추가됩니다.이러한 프로세서 특성을 통해 데이터 요소를 참조하기 위해 16비트 주소를 사용하는 6502 또는 65c02 코드를 정상적으로 실행할 수 있습니다.와는 달리PB,DB프로그램 제어 하에서 변경할 수 있습니다. 16비트 주소 지정의 한계를 넘어 데이터에 액세스하기 위해 수행할 수 있는 작업입니다.또한.DB주소가 현재 은행의 한도를 초과하여 색인화된 경우 일시적으로 증가합니다.DB.DB24비트 주소가 데이터 가져오기/저장 명령의 피연산자로 지정되거나 유효 주소가 직접(0) 페이지 또는 하드웨어 스택에 있는 경우에는 무시됩니다.후자의 경우, 묵시적인 은행은$00유효 [11]주소를 생성하는 데 사용됩니다.
레지스터 세트에 추가된 것은 16비트 직접 페이지 레지스터(DP), 이것은 이전에는 제로 페이지라고 불렸지만 지금은 다이렉트 페이지라고 불리는 것의 기본 주소를 설정합니다.직접 페이지 주소 지정은 8비트 주소를 사용하므로 16비트 또는 24비트 주소를 사용할 때보다 액세스 속도가 빨라집니다.또한 간접을 제공하는 일부 주소 지정 모드는 직접 페이지에서만 가능합니다.65(c)02에서 직접 페이지는 항상 처음 256바이트의 메모리이므로 "제로 페이지"입니다.네이티브 모드에서 65c816은 은행 어디에서나 직접(0) 페이지를 재배치할 수 있습니다.$00(메모리의 첫 64KB) 16비트 시작 주소를 다음에 기록함으로써DP. 다음과 같은 경우 1주기 접속 위약금이 있습니다.DP정확한 페이지 경계로 설정되지 않았습니다. 즉, 의 값이DP그렇지 않습니다$xx00,어디에xx는 가장 중요한 [12]바이트입니다.
모드간 전환
현재 동작 모드는 에뮬레이션에 저장됩니다(e) bit. 이미 새것을 추가한 상태입니다.x그리고.m상태 레지스터의 이전 6개 플래그 집합에 대한 비트(SR), 새 모드 비트를 유지하기에 충분한 비트가 남아 있지 않습니다.대신에, 모드 비트를 직접 접근할 수 없는 "보이지 않는" 상태로 두는 독특한 솔루션이 사용되었습니다.XCE(eXchange Carry with Emulation) 명령어는 에뮬레이션 비트의 값을 Carry와 교환합니다 (c) 비트, 비트 0 inSR. 예를 들어, 프로세서가 시작된 후 네이티브 모드로 들어가려면 다음을 사용합니다.CLC캐리 비트를 치우고 나서XCE에뮬레이션 [13]비트에 기록합니다.65c02 에뮬레이션 모드 사용으로 돌아가기SEC뒤를XCE.[14]
내부적으로 65c816은 완전한 16비트 디자인입니다.m그리고.x에 있어서의.SR사용자 레지스터(계산기 및 인덱스)가 시스템의 나머지 부분에 어떻게 표시되는지 확인합니다.재설정하면 65c816은 6502 에뮬레이션 모드로 시작합니다.m그리고.x가둬져 있는1. 따라서 레지스터는 8비트 크기로 잠깁니다.누산기의 MSB(가장 의미 있는 바이트)B-accumulator)는 직접 접근할 수 없지만, 어큐뮬레이터의 최하위 바이트(LSB)와 바꿀 수 있습니다.A-변속기)를 사용하여XBA설명.인덱스 레지스터에 해당하는 작업이 없습니다(X그리고.Y), MSB가 잠겨 있습니다.$00.
네이티브 모드로 전환되면 MSB의X그리고.Y0이 될 것이고, 그리고B- 레귤레이터는 변경되지 않습니다.만약에m물고 늘어지다SR문제가 해결되었습니다.B- 레귤레이터가 "강에" 연결됩니다.A-16비트 레지스터를 형성하기 위한 레귤레이터(일명:C-조절기).누적기 및/또는 메모리를 포함하는 로드/스토어 또는 산술/논리 연산은 16비트 연산이 됩니다. 16비트 값을 가져오거나 저장하려면 두 번의 버스 사이클이 필요합니다.
만약에x물고 늘어지다SR를 지웁니다. 두 인덱스 레지스터가 모두 16비트로 설정됩니다.예를 들어 주소를 색인화하는 데 사용되는 경우,LDA SOMEWHERE,X, 인덱스 레지스터의 16비트 값이 기본 주소에 추가되어 유효 주소가 형성됩니다.
만약에m물고 늘어지다SRis set는 누산기가 8비트 레지스터로 돌아가고 몇 가지 예외를 제외한 누산기의 후속 작업은 8비트 작업이 될 것입니다.B-누적기가 16비트 모드로 동작할 때의 값을 유지합니다.직접 페이지 레지스터를 전송하는 지침은 예외입니다(DP) 및 스택 포인터(SP)에서 축열기로/축열기로.이러한 동작은 상태에 관계없이 네이티브 모드에서 항상 16비트 폭입니다.m물고 늘어지다SR.
만약에x물고 늘어지다SR는 설정되어 있습니다. 인덱스 레지스터가 8비트로 되돌아갈 뿐만 아니라 MSB에 있던 것이 16비트 너비일 때는 손실됩니다. 어셈블리 언어 프로그래머라면 잊어버릴 [15]수 없는 것입니다.
적용들
65c816 변형 모델 기반 시스템:
- 에이콘 통신기
- 애플 IIGS
- 코모도어 64용 C-One 및 SuperCPU 향상 기능
- 슈퍼 닌텐도 엔터테인먼트 시스템: 콘솔의 Ricoh 5A22 CPU는 65c816을 기반으로 합니다.
- Foenix Retro Systems C256 U/U+ 모델[16] 및 F256K 모델[17]
참고 항목
참고문헌
인용문
- ^ 마이크로프로세서 연표 (1980-1989)
- ^ "8MHz 65816은 속도가 16MHz 68000과 거의 맞먹으며 16MHz 68000은 존재하지 않습니다.", 스티브 워즈니악과의 인터뷰 "애플 스토리 파트 2: 더 많은 역사와 애플 III", 10권, 1번, "시간 유리를 통해", 바이트 매거진, 1985, 175페이지, https://www.apple2history.org/museum-a-l/articles/byte8412/
- ^ [https://archive.org/details/byte-magazine-1985-01-rescan Byte Magazine 1985년 1월호
- ^ a b Eyes & Lichty 1986, 페이지 42.
- ^ Eyes & Lichty 1986, 페이지 44.
- ^ Eyes & Lichty 1986, p. 45.
- ^ a b Eyes & Lichty 1986, 페이지 46.
- ^ Eyes & Lichty 1986, p. 52.
- ^ Eyes & Lichty 1986, 페이지 53.
- ^ Eyes & Lichty 1986, 페이지 54.
- ^ Eyes & Lichty 1986, 페이지 55.
- ^ Eyes & Lichty 1986, 페이지 80.
- ^ Eyes & Lichty 1986, 페이지 64.
- ^ Eyes & Lichty 1986, 페이지 65.
- ^ Eyes & Lichty 1986, 페이지 51.
- ^ "16bits CPU – New Retro Computers". Foenix Retro Systems.
- ^ "F256K". Foenix Retro Systems.
서지학
- Eyes, David; Lichty, Ron (1986). Programming the 65816 - including the 6502, 65C02, 65802. Prentice Hall. ISBN 978-0893037895.
추가열람
- 65C816 데이터시트; Western Design Center; 55페이지; 2018년
외부 링크
- 65C816 웹페이지 - Western Design Center
- 6502/65C02/65C816 명령어 세트 디코딩됨
- 65816/65C816 기술 문서 - zophar.net
- 6502 프로그래머의 65816 소개 – Brett Tabke의 코모도어 월드 기사; CMD의 명령어 세트 요약 포함
- 65C816 인터럽트 조사 – 65C816 인터럽트 처리에 대한 광범위한 논의