mir.pe (일반/어두운 화면)
최근 수정 시각 : 2024-12-02 11:00:41

모스 테크놀로지 6502


명령어 집합
CISC AMD64 x86 · M68K · 68xx · Z80 · 8080 · MOS 65xx · VAX
RISC AArch64 ARM · RISC-V · MIPS · DEC Alpha · POWER PowerPC · CELL-BE
LoongArch · OpenRISC · PA-RISC · SPARC · Blackfin · SuperH · AVR32 AVR
VLIW
EPIC
E2K · IA-64 · Crusoe
파일:mos6502.jpg
MOS Technology 6502
출시 연도 1975년
연산 단위 8비트
주소 범위 16비트
1. 개요2. 역사3. 내부 구조4. 특징5. 파생형6. 사용
6.1. 컴퓨터6.2. 게임기6.3. 아케이드 기판

[clearfix]

1. 개요

모스 테크놀로지[1] 사에서 1975년 출시한 8비트 마이크로프로세서[2]이다.

애플 1~2, 코모도어 64, 닌텐도 패밀리 컴퓨터, 아타리 2600등 수많은 명작을 만들어냈다.

2. 역사

모토로라에서 척 페들(Chuck Peddle, 1937~2019)과 여러 엔지니어들은 8비트 마이크로프로세서 모토로라 6800을 만들었으나, 지나치게 비싸서 바이어들이 구매하지 않는 것을 알게 되었다. 가격을 낮추기 위해선 칩 크기를 줄여야 했고, 그러려면 모토로라 6800보다 명령어 세트를 간소화하고 소비 전력을 절감할 수 있었던 새로운 반도체 공정 기술이었던 NMOS(Depletion-load n-type metal-oxide semiconductor, 디플리션 부하 N형 금속 산화물 반도체)로 만들어야 한다고 모토로라 경영진에 주장했다. 그러나 모토로라는 마침 텍사스 오스틴에 건설한 반도체 공장에서 생산에 어려움을 겪고 있었기에 이를 거절했다.

결국 이들은 1974년 모토로라를 퇴사한 후 MOS 테크놀로지로 이직했고, 1975년 8월 모토로라 6800의 저비용 대체품 6501를 개발하게 되는데 6501는 모토로라 6800과 동일한 핀 배치 및 하드웨어 사양을 가지고 있었기에 모토로라 6800에 맞게 설계된 프로그램은 약간의 수정만 하면 정상적으로 동작할 수 있었다.

하지만 이러한 유사성으로 인해 6501는 모토로라 6800의 설계를 바탕으로 만들어졌다는 의혹이 들었고 결국 모토로라는 모스 테크놀로지를 상대로 특허 침해 및 영업 기밀 도용 혐의로 소송을 제기했다. 결국 모스 테크놀로지는 모토로라 측과 합의하여 6501 판매 중단 및 회수 조치를 해야만 했다. 이후 핀 배치를 변경하고 일부 기능의 추가와 개선이 이루어진 6502 프로세서를 출시하였으며 본격적으로 다양한 전자제품에 탑재되기 시작한다.

3. 내부 구조

레지스터는 총 6개로 8비트 A, X, Y, P, S와 16비트 프로그램 카운터를 가지고 있다. 8비트 레지스터만으로 구성되어 있지만 16비트의 메모리를 다룰 수 있었다. 이 시기에 다른 8비트 CPU는 8080, Z80 정도가 있었는데 범용 레지스터만 해도 7개를 가지고 있었다. 6502의 모든 레지스터는 7개 안에 전부 들어가는 셈.
6502의 전체 레지스터
8비트
누산기 A
인덱스 레지스터 X Y
상태 레지스터 P : [N] [V] x [B] [D] [I] [Z] [C]
스택 포인터 S
16비트
프로그램 카운터 PC
전체 메모리의 첫 256바이트 가량은 제로 페이지 레지스터 구역으로 사용하여 6502의 적은 수의 레지스터를 커버했다. 그 다음 256바이트는 스택 메모리 공간으로 예약되어 있다.

명령어 세트는 작고 간결했지만 대신 많은 주소 지정 모드를 지원하므로 적은 수의 레지스터를 효율적으로 이용할 수 있었다. 13가지의 주소 지정 모드가 있었으며 다음과 같다.

연산 대상으로 X, Y 레지스터를 사용할 수 없는데 그 이유는 거의 모든 연산을 메모리하고만 한다. 간혹 X, Y 레지스터를 이용하여 연산하는 명령어가 있긴 하나 증가 연산, 비교 연산 정도로 간단한 것들뿐이다. 레지스터의 개수가 적은 대신 메모리를 대상으로 하는 다양한 주소 지정 모드를 지원했기에 큰 문제는 아니었지만 복잡해서 다루기 어려웠다.

명령어 세트가 간결해 어셈블리어만 보고 바로 기계어 코드를 만들 수 있는 사용자들이 많다.

4. 특징

트랜지스터 개수가 약 3천개 중반으로 동시대 프로세서에 비하면 절반 밖에 안되는 칩 크기를 가졌고 이 덕에 칩 가격이 저렴해 수많은 기기에 채용될 수 있었다. 지금은 트랜지스터 겨우 몇천 개 줄이는게 의미가 없을 수도 있지만 이 시절에는 CPU는 물론이고 DRAM도 트랜지스터를 겨우 수천 개만 넣을 수 있었던 시절이었다. 8비트 프로세서가 접근 가능한 최대 용량인 64 kiB를 기본적으로 전부 사용할 수 있는 컴퓨터가 나온건 프로세서가 나온지 7년의 세월이 흐른 코모도어 64 시절 이야기이고 그 전에는 메모리의 용량을 측정하는 단위는 바이트가 아닌 비트였을 정도다. 아타리 2600은 단 128바이트의 메모리만 가지고 있었다.

또 6502는 위에 서술한 이유로 수많은 기기에 채용된 덕에 소프트웨어 환경이 풍부했다. 특히 1977년에 나온 게임기 아타리 2600과 개인용 컴퓨터 Apple II가 큰 성공을 거두었기 때문이었다.

역공학을 통해 트랜지스터 각각의 회로구조가 밝혀져 이를 이용한 에뮬레이터가 존재한다. #

5. 파생형

6. 사용

6.1. 컴퓨터

6.2. 게임기

6.3. 아케이드 기판


[1] MOS Technology, 1970년대 중반부터 1980년대 초반까지 날렸던 메모리 제조업체 모스텍(Mostek)과는 별개의 회사다. [2] 1.023MHz [N] Negative, 연산 결과가 음수일 경우 1이 된다. [V] Overflow, 연산 범위를 초과할 경우 1이 된다. [B] Break, 디버거에서 사용한다. [D] Decimal, BCD 모드일 경우 1. [I] Interrupt Mask, 0이면 인터럽트를 허용한다. [Z] 연산 결과가 0일 경우 1이 된다. [C] 올림 또는 빌림이 발생할 경우 1이 된다. [10] 6502를 기반으로 한 RICOH의 2A03(NTSC), 2A07(PAL, SECAM)이 들어갔다. 자세한 것은 해당 문서를 참고. [11] 6502 기반으로 독자적인 명령어와 메모리 관리 유닛을 추가한 허드슨-세이코 엡손 HuC6280. 문서 참고. [12] 2001~2008년 적외선 통신 모델. 해킹 결과 6502 기반 프로세서가 들어갔음을 밝혀냈다. # [13] 저가형인 6507을 사용. [14] 커스텀 버전인 6502C를 사용 [15] 커스텀 버전인 6502C를 사용 [16] 웨스턴 디자인 센터의 65C02를 사용.