모토로라 68000

Motorola 68000
모토로라 68000 아키텍처
디자이너모토로라
비트16/32비트
소개했다1979; 43년 전 (1998년)
디자인CIC
분기조건코드
엔디안니스
레지스터
  • 32비트 데이터 레지스터 8배
  • 7×32비트 주소 레지스터
  • 스택 포인터(주소 레지스터 7)
모토로라 68000 CPU
일반 정보
시작됨1979
설계자모토로라
퍼포먼스
최대 CPU 클럭 속도4MHz ~ 16.67MHz
데이터 폭16비트
주소 폭24비트
건축과 분류
명령 집합모토로라 68000 시리즈
물리적 사양
트랜지스터
패키지
  • 64핀 DIP
역사
후계자모토로라 68010

모토로라 68000(모토로라 68k 또는 m68k로 단축되기도 하고 보통 "sixty-8000"으로 발음되기도 함)은 모토로라 반도체 제품 섹터가 1979년에 도입한 16/32비트 복합 명령 집합 컴퓨터(CISC) 마이크로프로세서다.

이 설계는 32비트 레지스터와 16비트 내부 데이터 버스를 갖춘 32비트 명령 집합을 구현한다.[2]주소버스는 24비트로 메모리 분할을 사용하지 않아 프로그래밍이 용이하다.내부적으로는 16비트 데이터산술논리단위(ALU)와 주로 주소에 사용되는 2개의 16비트 ALU를 더 사용하고 있으며,[2] 16비트 외부 데이터버스를 보유하고 있다.[3]이 때문에 모토로라는 16/32비트 프로세서라고 불렀다.

32비트 명령어 세트를 탑재한 최초의 널리 이용 가능한 프로세서 중 하나로서, 그 시대에 비교적 빠른 속도로 구동되는 68k는 1980년대를 거쳐서 대중적인 디자인이 되었다.매킨토시, 아미가, 아타리 ST, X68000그래픽 사용자 인터페이스를 갖춘 신세대 개인용 컴퓨터에서 널리 사용되었다.1988년식 메가 드라이브 콘솔도 68000으로 구동된다.

68k는 곧 더 많은 가족 구성원과 함께 확장되어 32비트 ALU를 성장 중인 모토로라 68000 시리즈의 일부로 구현했다.원래의 68k는 16비트 와이드 외장 버스로 제한되었음에도 불구하고 일반적으로 나머지 노선과 소프트웨어 전방 호환이 가능하다.[2]

1979년 출시된 XC68000 칩
모토로라 68000의 죽음

생산 43년이 지났지만, 68000개의 아키텍처는 여전히 사용되고 있다.[4][5]

역사

모토로라 MC68000(리드리스캐리어(CLCC) 패키지)
Motorola MC68000(플라스틱 리드캐리어(PLCC) 패키지)

모토로라가 처음으로 널리 생산한 CPU는 모토로라 6800이었다.유능한 설계지만, Zilog Z80과 같은 좀 더 강력한 설계와 MOS Technology 6502 (MOS 6502)와 같은 덜 비싼 설계에 의해 가려졌다.6800년대의 판매 전망이 어두워지자 모토로라는 이를 대체할 새로운 디자인을 시작했다.이것은 1976년에 시작된 실리콘 프로젝트의 모토로라 어드밴스드 컴퓨터 시스템이 되었다.

MACSS는 6800과의 역호환성 없이 완전히 새로운 아키텍처를 개발하는 것을 목표로 했다.그것은 궁극적으로 기존의 6800 주변 장치에 대한 버스 프로토콜 호환성 모드를 유지하며, 8비트 데이터 버스를 가진 버전이 생산되었다.그러나 설계자들은 주로 미래 또는 전방 호환성에 초점을 맞췄으며, 이는 68000개의 설계가 32비트 명령 집합 아키텍처(ISA)에 대한 선발을 가능하게 한다.예를 들어 CPU 레지스터의 폭은 32비트이지만 프로세서 자체의 자체에서 32비트로 작동하는 구조는 거의 없다.MACSS 팀은 유사하게 마이크로코드 기반인 PDP-11VAX 시스템과 같은 미니컴퓨터 프로세서 설계의 영향을 많이 받았다.

1970년대 중반, 8비트 마이크로프로세서 제조업체들은 16비트 세대를 도입하기 위해 경쟁했다.내셔널 반도체는 1973~1975년 IMF-16PACE 프로세서를 처음 도입했지만 속도에는 문제가 있었다.인텔은 1975년부터 진보된 16/32비트 인텔 iAPX 432(가명 8800)와 1976년부터 인텔 8086(이것은 1978년에 도입되었으나 몇 년 후 IBM PC에서 거의 동일한 8088의 형태로 널리 보급되었다.16비트 아레나에 늦게 도착하는 새로운 프로세서는 더 많은 트랜지스터(8086년에는 거의 40,000개[citation needed], 20,000개), 32비트 매크로 인스톨레이션, 그리고 찬사를 받은 일반적인 사용 편의성을 제공한다.

원래의 MC68000은 3.5 µm의 피쳐 크기를 가진 HMOS 프로세스를 사용하여 제작되었다.1979년 9월에 정식으로 소개된 [6]초기 샘플은 1980년 2월에 출시되었고, 11월에는 생산용 칩을 판매대에서 구입할 수 있었다.[7]초기 속도 등급은 4, 6, 8 MHz이며, 1981년[citation needed] 10 MHz 칩이 출시되었고, 1982년 6월까지 12.5 MHz 칩이 출시되었다.[7]오리지널 HMOS 칩의 가장 빠른 버전인 MC68000의 16.67 MHz "12F" 버전은 1980년대 후반에야 생산되었다.

IBM은 IBM PC용 68000을 고려했지만 68000이 준비되지 않았기 때문에 인텔 8088을 선택했다. 라인은 이에 대해 "모토롤라는 뛰어난 기술로 지난 50년 동안 가장 중요한 디자인 공모전에서 패배했다"[8]고 썼다. (IBM Instruments는 68000년 기반의 IBM System 9000 실험실 컴퓨터 시스템을 간략히 판매했다.)68k 명령 집합은 특히 유닉스 구현에 적합하며,[9] 68000과 그 계승자는 선 워크스테이션아폴로/도메인 워크스테이션 등 유닉스 기반 워크스테이션의 지배적인 CPU가 되었다.68000은 애플 리사, 매킨토시, 아미가, 아타리 ST와 같은 대중 시장용 컴퓨터에도 사용된다.68000은 Microsoft Xenix 시스템뿐 아니라 초기 NetWare Unix 기반 서버에서도 사용된다.68000은 애플사의 오리지널을 포함한 1세대 데스크탑 레이저 프린터에서 사용된다.LaserWriterHP LaserJet.

1981년 모토로라는 교육 및 훈련용 싱글보드 컴퓨터인 모토로라 68000 Education Computer Board를 도입했는데, 이 컴퓨터 자체에는 메모리, I/O 장치, 프로그램 가능한 타이머, 맞춤형 회로를 위한 와이어와랩 영역이 포함되어 있었다.이사회는 1990년대 초까지 미국 대학에서 조립 프로그래밍을 배우기 위한 도구로 사용되어 왔다.[10]

1982년, 68000은 가상 메모리를 지원하고 PopekGoldberg 가상화 요구 사항을 준수하기 위한 지침 집합 아키텍처(ISA)의 소규모 업데이트를 받았다.업데이트된 칩은 68010이라고 불린다.소형 루프 속도를 높이고 같은 클럭 속도에서 전체 성능을 약 10% 끌어올리는 '루프 모드'도 새로 추가했다.주소 버스의 31비트를 노출하는 추가 확장 버전도 68012와 같이 소량으로 제작되었다.

모토로라는 저비용 시스템과 메모리 크기가 작은 제어 애플리케이션을 지원하기 위해 1982년에도 8비트 호환 MC68008을 도입했다.이것은 8비트 데이터 버스와 더 작은(20비트) 주소 버스를 갖춘 68000이다.1982년 이후 모토로라는 6802088000개의 프로젝트에 더 많은 관심을 쏟았다.

세컨드소싱

히타치 HD68000
톰슨 TS68000

몇몇 다른 회사들은 HMOS 68000의 2차 생산 업체였다.These included Hitachi (HD68000), who shrank the feature size to 2.7 µm for their 12.5 MHz version,[7] Mostek (MK68000), Rockwell (R68000), Signetics (SCN68000), Thomson/SGS-Thomson (originally EF68000 and later TS68000), and Toshiba (TMP68000).도시바는 CMOS 68HC000(TMP68HC000)의 제2의 제조사였다.

암호화된 변형인 68000은 히타치 FD1089와 FD1094로 배터리 지원 메모리에 opcode 및 opcode 데이터 암호 해독 키를 저장하며, 해적 행위와 불법 부트레그 게임을 방지하기 위해 시스템 16을 비롯한 특정 세가 아케이드 시스템에 사용되었다.[11]

CMOS 버전

모토로라 MC68HC000LC8

68000의 최초의 CMOS 버전인 68HC000은 히타치가 설계하고 1985년에 공동으로 도입했다.[12]모토로라의 버전은 MC68HC000이고, 히타치는 HD68이다.HC000. 68HC000은 8–20 MHz의 속도를 제공한다.CMOS 회로를 사용하는 것을 제외하고는 HMOS MC68000과 동일하게 행동하였으나, CMOS로의 변경으로 전력 소모가 크게 감소하였다.원래의 HMOS MC68000은 클럭 속도에 관계없이 25 °C의 주변 온도에서 약 1.35와트를 소비한 반면, MC68HC000은 8 MHz에서는 0.13와트, 20 MHz에서는 0.38와트만을 소비했다.(CMOS 회로와 달리 HMOS는 여전히 유휴시에도 전력을 끌어들이기 때문에 클럭 속도에 따라 전력 소비량은 거의 차이가 없다.)애플은 68을 선택했다.Macintosh Portable에 사용하기 위한 HC000.

모토로라는 1990년에 MC68008을 MC68HC001로 대체했다.[13]이 칩은 68과 닮았다.대부분의 경우 HC000이지만, 데이터 버스는 재설정 시 입력 핀 값에 따라 16비트 또는 8비트 모드로 작동할 수 있다.따라서 68008과 마찬가지로 8비트 메모리가 저렴한 시스템에서 사용할 수 있다.

68000의 이후 진화는 보다 현대적인 임베디드 제어 애플리케이션과 온칩 주변 장치에 초점을 맞췄다.68EC000 칩과 SCM68000 코어는 M6800 주변 버스를 제거하고 SR 명령에서 MOVE를 제외하여 사용자 모드 프로그램에서 68EC000과 68SEC000은 사용자 모드에서 실행할 때 이전 68000개의 CPU와 100% 호환되지 않는 유일한 68000개의 CPU가 된다.감독자 모드에서 실행하면 차이가 없다.[14]1996년 모토로라는 완전 정전기 회로로 독립형 코어를 업데이트해 저전력 모드에서 2µW만 끌어와 MC68SEC000이라고 불렀다.[15]

Motorola ceased production of the HMOS MC68000 and MC68008 in 1996,[16] but its spin-off company Freescale Semiconductor was still producing the MC68HC000, MC68HC001, MC68EC000, and MC68SEC000, as well as the MC68302 and MC68306 microcontrollers and later versions of the DragonBall family.68000명의 건축 후손인 680x0, CPU32, 콜드파이어 계열도 여전히 생산 중이었다.최근에는 센다이 팹 폐쇄로 68명 모두HC000, 68020, 68030, 68882 부품은 단종돼 68SEC000 생산만 남았다.[17]

마이크로컨트롤러 코어로서

"진정한" 32비트 마이크로프로세서에 의해 성공한 이후, 68000은 많은 마이크로컨트롤러의 핵심으로 사용된다.1989년에 모토로라는 MC68302 통신 프로세서를 도입했다.[18]

적용들

두 개의 히타치 68아케이드 게임 PCB에서 사용되는 HC000 CPU

그것의 도입에서 68000먼저 고가의 시스템에서, WICAT 150,[19]초기 알파 마이크로 시스템스 컴퓨터 같은 다중 사용자 microcomputers, 세이지 II/IV, 탠디 6000/라디오 모델 16살이고, 포춘 32:16, 휴렛 패커드의 HP9000시리즈 200시스템과 같은 개인 사용자 작업대, 첫번째 Apollo/Domain 시스템, 태양 Micros을 포함하여 사용되었다.ystems' Sun-1Corvus Concept, 그리고 디지털 장비 회사VAXstation 100과 Silicon Graphics의 IRIS 1000과 1200과 같은 그래픽 터미널.유닉스 시스템은 1980년대 내내 그 시장에서 인기를 유지했던 68k 라인의 더 유능한 후세대로 빠르게 이동했다.

1980년대 중반까지, 생산비 하락으로 68000은 애플 리사매킨토시를 시작으로, 아미가, 아타리 ST, 샤프 X68000을 시작으로, 개인용가정용 컴퓨터에서 사용할 수 있게 되었다.반면, 싱클레어 QL 마이크로컴퓨터는 68008의 가장 상업적으로 중요한 활용이었고, ICL One Per Desk 비즈니스 터미널과 같은 파생 모델도 함께 활용되었다.Helix Systems(미국 미주리 주)는 SWTPC SS-50 버스인 SS-64에 대한 확장을 설계했으며 68008 프로세서를 중심으로 구축된 시스템을 생산했다.

RISC와 x86의 채택으로 68000 시리즈가 데스크탑/워크스테이션 CPU로 대체되는 동안 프로세서는 임베디드 애플리케이션에서 상당한 사용을 발견했다.1990년대 초까지 CPU 6만8000개를 부품당 30달러 미만으로 구매할 수 있었다.[citation needed]

비디오 게임 제조업체들은 68000을 많은 아케이드 게임과 홈 게임 콘솔의 중추로 사용했다.1982년부터 시작된 아타리의 음식 싸움은 최초의 6만8000개의 오락실 게임 중 하나이다.그 밖에 세가시스템 16, 캡콤CP 시스템과 CPS-2, SNK네오 지오 등이 있었다.1980년대 후반까지, 68000은 세가의 메가 드라이브/제네시스 콘솔과 같은 홈 게임 콘솔에 전원을 공급할 만큼 저렴했고, 또한 그것을 위한 메가 CD도 첨부했다(메가 CD 시스템은 3개의 CPU를 가지고 있는데, 그 중 2개는 68000s이다.1993년 출시된 멀티프로세서 아타리 재규어 콘솔은 친숙함 때문에 일부 개발자가 1차 프로세서로 사용했지만 서포트 칩으로 68000을 사용했다.1994년 멀티프로세서 세가 새턴 콘솔은 사운드 코프로세서로 68000을 사용하였다(메가 드라이브/제네시스와 마찬가지로 소리 및/또는 기타 목적으로 Z80을 공동프로세서로 사용).1995년까지 68000은 세가의 Genesis Nomad라는 핸드헬드 게임기를 그것의 주요 CPU로 만들었다.

(철골 거너 등 남코 시스템 2일처럼)1타점 3루타 68000CPU구성으로 이중 68000CPUconfiguration,[20]과 시스템을 사용하여 특정 아케이드 게임들에 대한 소리를 낮은 의사가 있는 자레코(한 미국 이용해 온 쿼드 68000CPU구성과 함께(갤럭시 포스 그리고 다른 사람들은 세가 Y위원회처럼)[21]존재한다.시계 rBig Run, Cisco Heat와 같은 게임의 경우 다른 6만8000개의 CPU와 비교했을 때,[22] 또 다른 6만8000개의 CPU는 Jaleco 아케이드 게임 입출력(I/O) 처리를 위한 Wild Pilot에 사용되었다.[23]

68000도 임베디드 컨트롤러로서 큰 성공을 거두었다.1981년 초에 이미젠 각인트-10과 같은 레이저 프린터는 68000이 장착된 외부 보드에 의해 제어되었다.1984년에 도입된 최초의 HP LaserJet은 8 MHz 68000을 내장했다.다른 프린터 제조업체들은 1985년 LaserWriter를 도입하면서 애플을 포함한 68000을 채택했다.68000은 1980년대 나머지 기간 동안 계속해서 프린터에서 널리 사용되었고, 1990년대까지 보급형 프린터에서 잘 유지되었다.

68000년대는 또한 산업 통제 시스템 분야에서도 성공을 거두었다.마이크로프로세서로 68000이나 파생상품을 보유함으로써 이익을 얻은 시스템들 중에는 텍사스 인스트루먼트사앨런-브래들리에 의해 제조된 프로그램 가능한 로직 제어기(PLC) 제품군과 그 후, 지멘스에 의해 TI 분할을 취득한 후, 지멘스에 의해 이익을 얻은 시스템도 있었다.그러한 시스템의 사용자들은 국내 사용자들과 같은 비율로 제품 노후화를 받아들이지 않고 있으며, 20년 전에 설치되었음에도 불구하고 많은 68000 기반의 컨트롤러들이 21세기까지 신뢰할 수 있는 서비스를 계속할 가능성이 높다.

디지털 oscilloscopes의 80s,[24]에서 봤을 때는 68000파형 디스플레이 프로세서로;LeCroy 9400[25]을 포함한 일부 모델 또한 파형 계산(덧셈, 뺄셈, 곱셈, 두waveforms/references/waveform 기억의 분할 등), 일부 디지털 oscilloscopes은 68000을 사용한다 사용되어 왔다. 번째를 사용하여e 68000(9400/9400A 포함)은 파형에서 빠른 푸리에 변환 기능을 수행할 수도 있다.

68000개의 아키텍처를 기반으로 하는 683XX 마이크로컨트롤러는 네트워킹 및 통신 장비, 텔레비전 셋톱 박스, 실험실 및 의료 기기, 심지어 휴대용 계산기에 사용된다.MC68302와 그 파생상품은 시스코, 3com, 어센드, 마르코니, 사이클라데스 등의 많은 통신제품에 사용되어 왔다.Palm PDA와 Handspring Visor의 과거 모델들은 68000의 파생 모델인 DragonBall을 사용했다.알파스마트는 이후 버전의 휴대용 워드프로세서에서 드래곤볼 제품군을 사용했다.텍사스 인스트루먼트는 고급 그래프 계산기인 TI-89TI-92 시리즈와 Boyage 200에 68000을 사용했다.

68000의 수정된 버전은 System 370 프로세서의 IBM XT/370 하드웨어 에뮬레이터의 기초를 형성했다.

건축

모토로라 68000 등록기
31 ... 23 ... 15 ... 07 ... 00 (비트 위치)
데이터 레지스터
D0 데이터 0
D1 데이터 1
D2 데이터 2
D3 데이터 3
D4 데이터 4
D5 데이터 5
D6 데이터 6
D7 데이터 7
주소 레지스터
A0 주소 0
A1 주소 1
A2 주소 2
A3 주소 3
A4 주소 4
A5 주소 5
A6 주소 6
포인터 쌓기
A7 / USP 스택 포인터(사용자)
A7' / SSP 스택 포인터(감독자)
프로그램 카운터
PC 프로그램 카운터
상태 코드 레지스터
15 14 13 12 11 10 09 08 07 06 05 04 03 02 01 00 (비트 위치)
T S M 0 I 0 0 0 X N Z V C CCR

주소 버스

68000에는 24비트 외부 주소 버스와 2바이트 선택 신호 "대체" A0이 있다.따라서 이 24개 라인은 바이트 분해능으로 16MB의 물리적 메모리를 처리할 수 있다.어드레스 저장과 계산은 내부적으로 32비트를 사용하지만, 8개의 고차 어드레스 비트는 장치 핀의 물리적인 부족으로 무시된다.이를 통해 논리적으로 플랫된 32비트 주소 공간에 대해 작성된 소프트웨어를 실행하는 동시에 24비트 물리적 주소 공간에만 액세스할 수 있다.내부 32비트 주소 공간을 가진 모토로라의 의도는 전방 호환성이었고, 이후 68000 명령어 세트의 32비트 구현을 최대한 활용할 수 있는 68000 소프트웨어 쓰기가 가능했다.[2]

그러나, 이것은 프로그래머들이 양립할 수 없는 소프트웨어를 쓰는 것을 막지는 못했다.상위 주소 바이트를 폐기하거나 주소 지정 이외의 목적으로 사용한 "24비트" 소프트웨어는 32비트 68000 구현에서 실패할 수 있다.예를 들어, 애플의 초기 (7.0 이전) 버전의 Mac OS는 높은 바이트의 메모리 블록 마스터 포인터를 사용하여 잠긴 플래그와 퍼지 가능 플래그를 보유했다.이후 OS 버전은 깃발을 가까운 위치로 옮겼고, 애플은 1989년 맥 IIci의 출시로 시작하여 "32비트 클린" ROM을 탑재한 컴퓨터를 출하하기 시작했다.

68000가구는 멀티바이트 정수를 빅엔디안 순서로 메모리에 저장한다.

내부 레지스터

CPU에는 32비트 범용 데이터 레지스터(D0-D7) 8개와 주소 레지스터(A0-A7) 8개가 있다.마지막 주소 레지스터는 스택 포인터로, 조립자는 라벨 SP를 A7과 동등한 것으로 받아들인다.이것은 그 당시 여러 가지 면에서 상당한 수의 등록부였다.그것은 68000이 인터럽트에 빠르게 반응할 수 있을 정도로 작았고(모든 8개의 데이터 레지스터 D0–D7과 7개의 주소 레지스터 A0–A6을 저장해야 하는 최악의 경우에도, 총 15개의 레지스터) 대부분의 계산을 빠르게 할 수 있을 만큼 충분히 컸다. 왜냐하면 그것들은 어떤 부분적인 결과도 유지하지 않고 프로세서 내에서 완전히 수행될 수 있기 때문이다.(감독자 모드의 예외 루틴도 사용자 스택 포인터 A7을 저장할 수 있으며, 이 포인터에는 총 8개의 주소 레지스터가 저장된다.그러나 68000의 듀얼 스택 포인터(A7 및 슈퍼바이저 모드 A7') 설계는 작업 스위치가 멀티태스킹 시스템에서 수행되는 경우를 제외하고, 일반적으로 불필요하게 만든다.)

두 가지 유형의 레지스터를 갖추면 한 번에 32비트 주소 1개와 16비트 데이터 계산 1개가 가능하다.이는 주소와 데이터를 병렬로 처리할 수 있기 때문에 명령 실행 시간이 단축되는 결과를 초래한다.[2]

상태 레지스터

68000에는 16비트 상태 레지스터가 있다.상위 8비트는 시스템 바이트로, 수정은 특권이 있다.하위 8비트는 조건 코드 레지스터(CCR)라고도 하는 사용자 바이트로, 수정은 특권이 없다.68000 비교, 산술 및 논리 연산은 조건 코드를 수정하여 이후의 조건부 점프에서 사용할 결과를 기록한다.조건 코드 비트는 "0"(Z), "carry"(C), "overflow"(V), "extend"(X), "negative"(N)이다.'확장(X) 깃발'은 운반 깃발과 별개라는 점에서 특별히 언급할 만하다.이를 통해 산술, 논리 및 시프트 연산의 추가 비트를 제어 흐름 및 연결용 캐리어에서 분리할 수 있다.

명령 집합

설계자들은 조립 언어를 직교하도록 시도했다.즉, 지시사항은 작동 모드와 주소 모드로 나뉘며, 거의 모든 주소 모드가 거의 모든 지시사항에 대해 이용 가능하다.56개의 지침과 16비트의 최소 지침 크기가 있다.많은 지침과 주소 지정 모드는 더 많은 주소 또는 모드 비트를 포함하기 위해 더 길다.

권한 수준

CPU와 이후 전체 제품군은 두 가지 수준의 권한을 구현한다.사용자 모드는 인터럽트 수준 제어와 같은 권한 있는 지시사항을 제외한 모든 것에 대한 액세스를 제공한다.[26]감독관의 특권은 모든 것에 대한 접근권을 준다.방해는 항상 감독자가 된다.감독자 비트는 상태 레지스터에 저장되며 사용자 프로그램에서 볼 수 있다.[26]

이 시스템의 장점은 감독자 레벨에 별도의 스택 포인터가 있다는 것이다.설계자가 인터럽트의 최대 스택 프레임 보유에 필요한 메모리를 할당할 필요가 없기 때문에 멀티태스킹 시스템은 작업에 매우 작은 스택을 사용할 수 있다.

인터럽트

CPU는 7가지 인터럽트 레벨을 인식한다.레벨 1부터 레벨 5까지가 엄격히 우선시된다.즉, 번호가 높은 인터럽트는 항상 번호가 낮은 인터럽트를 인터럽트할 수 있다.상태 레지스터에서 권한 있는 명령으로 현재 최소 인터럽트 수준을 설정하여 우선 순위가 낮거나 같은 인터럽트를 차단할 수 있다.예를 들어 상태 레지스터의 인터럽트 레벨을 3으로 설정하면 4에서 7까지의 레벨이 높을 경우 예외가 발생할 수 있다.레벨 7은 레벨 트리거 비마스크 인터럽트(NMI)이다.레벨 1은 더 높은 레벨에 의해 중단될 수 있다.레벨 0은 인터럽트가 없음을 의미한다.레벨은 상태 레지스터에 저장되며 사용자 레벨 프로그램에서 볼 수 있다.

하드웨어 인터럽트는 대기 중인 가장 높은 인터럽트 우선 순위를 인코딩하는 세 개의 입력을 사용하여 CPU에 신호를 보낸다.세 개 이상의 하드웨어 인터럽트가 필요하지 않은 시스템의 경우 소프트웨어 복잡성을 더 많이 희생하여 인터럽트 신호를 인코딩된 입력에 직접 연결할 수 있지만, 인터럽트를 인코딩하기 위해서는 보통 별도의 인코더가 필요하다.인터럽트 컨트롤러는 74LS148 우선 순위 인코더처럼 간단할 수도 있고, MC68901 다기능 주변장치(컴퓨터의 아타리 ST 범위와 샤프 X68000에서 사용됨)와 같은 매우 큰 규모의 통합(VLSI) 주변 칩의 일부일 수도 있으며, UART, 타이머 및 병렬 I/O도 제공한다.

"exception table"(Interrupt 벡터 테이블 인터럽트 벡터 주소)은 주소 0부터 1023까지에 고정되며, 32비트 벡터 256개가 허용된다.첫 번째 벡터(RESET)는 두 개의 벡터, 즉 시작 스택 주소와 시작 코드 주소로 구성된다.벡터 3 ~ 15는 버스 오류, 주소 오류, 불법 명령, 제로 디비전, CHK 및 CHK2 벡터, 권한 상승 차단을 위한 권한 위반, 라인 1010 에뮬레이터, 라인 1111 에뮬레이터, 하드웨어 중단점 등 다양한 오류를 보고하는 데 사용된다.벡터 24는 실제 인터럽트를 시작한다: 가짜 인터럽트(하드웨어 승인 없음) 및 레벨 1에서 레벨 7까지의 자동 벡터, 그 다음 16개의 TRAP 벡터, 그 다음 몇 개의 더 예약 벡터, 그 다음 사용자가 정의한 벡터.

시작 코드 주소 벡터는 항상 재설정할 때 유효해야 하므로 시스템은 일반적으로 벡터와 부트스트랩 코드를 포함하기 위해 주소 0에서 시작하는 일부 비휘발성 메모리(예: ROM)를 포함했다.그러나 범용 시스템의 경우 운영 체제가 런타임에 벡터를 변경할 수 있는 것이 바람직하다.이는 종종 ROM의 벡터를 RAM점프 테이블을 가리키거나 런타임에 ROM이 RAM으로 대체될 수 있도록 뱅크 스위칭을 사용하여 수행되었다.

68000은 사용자 모드 소프트웨어의 읽기 전용 액세스를 소량의 권한 있는 상태로 허용하는 권한 없는 단일 명령인 "MOVE from SR"을 가지고 있기 때문에 전체 프로세서 가상화에 대한 PopekGoldberg 가상화 요구 사항을 충족하지 못한다.68000의 이후 파생상품인 68EC000과 68SEC000은 "MOVE from SR" 지침이 특권이기 때문에 요건을 충족한다.68010 이상 CPU에서도 같은 변화가 도입되었다.

또한 68000은 가상 메모리를 쉽게 지원할 수 없기 때문에 실패한 메모리 액세스에서 트랩하고 복구할 수 있는 기능이 필요하다.68000은 트랩에 사용할 수 있는 버스 오류 예외를 제공하지만, 운영 체제에서 해당 예외를 처리한 후에는 오류 발생 명령을 재개할 수 있을 만큼 충분한 프로세서 상태를 저장하지 않는다.여러 회사가 서로 다른 단계 시계에 병렬로 실행되는 두 개의 68000 칩을 사용함으로써 작동하는 가상 메모리를 가진 68000 기반의 유닉스 워크스테이션 제작에 성공했다."선도" 68000이 메모리 액세스 불량에 직면했을 때, 추가 하드웨어가 "메인" 68000을 중단시켜 메모리 액세스 불량에 직면하는 것을 방지한다.이 인터럽트 루틴은 가상 메모리 기능을 처리하고 올바른 상태에서 "선도" 68000을 재시작하여 "주" 68000이 인터럽트에서 반환되었을 때 적절하게 동기화된 작동을 계속한다.

이러한 문제들은 MC68010의 출시와 함께 68k 아키텍처의 다음 주요 개정에서 고정되었다.버스 오류 및 주소 오류 예외는 복구를 용이하게 하기 위해 많은 양의 내부 상태를 감독자 스택으로 밀어 넣었고, "MOVE from SR" 지시는 특권이 주어졌다.사용자 모드 소프트웨어에서 사용할 수 있도록 권한 없는 새로운 "MOVE from CCR" 지침이 제공된다. 운영 체제는 원하는 경우 사용자 모드 "MOVE from SR" 지침을 트랩하고 에뮬레이트할 수 있다.

명령 집합 세부 정보

표준 주소 지정 모드는 다음과 같다.

  • 직접등록
    • 데이터 레지스터(예: "D0")
    • 주소 레지스터(예: "A0")
  • 간접등록
    • 간단한 주소(예: (A0))
    • 증가 후 주소(예: (A0)+)
    • 사전 감소가 있는 주소(예: -(A0))
    • 16비트 서명된 오프셋이 있는 주소(예: 16(A0))
    • 인덱스 레지스터 및 8비트 서명된 오프셋에 간접 등록(예: 8(A0,D0) 또는 8(A0,A1)
    (A0)+ 및 -(A0)의 경우, 실제 증가 또는 감소 값은 피연산자의 크기에 따라 결정된다는 점에 유의하십시오. 바이트 액세스는 주소 레지스터를 1, 워드 2 및 롱 X 4로 조정한다.
  • 변위 관련 PC(프로그램 카운터)
    • 상대적인 16비트 부호화된 오프셋(예: 16(PC)).이 모드는 위치 독립적인 코드에 매우 유용했다.
    • 인덱스를 포함한 8비트 서명 오프셋의 상대적(예: 8(PC,D2)
  • 절대 메모리 위치
    • 숫자(예: "$4000") 또는 조립자가 번역한 기호 이름
    • 대부분의 68000명의 조립자는 "0x" 또는 후행 H 대신 16진수에 "$" 기호를 사용했다.
    • 이 주소 지정 모드의 16비트 및 32비트 버전이 있음
  • 즉시 모드
    • 지침에 저장된 데이터(예: "#400")
  • 빠른 즉시 모드
    • 값이 opcode에 저장된 3비트 미서명(또는 moveq로 서명된 8비트)
    • addq 및 subq에서 0은 8과 같다.
    • 예: moveq #0,d0은 clr.l d0보다 빨랐다(둘 다 D0을 0으로 만들었지만)

추가: 상태 레지스터에 대한 액세스 및 이후 모델에서는 다른 특수 레지스터에 대한 액세스.

대부분의 지침에는 도트 문자 접미사가 있어 8비트 바이트(.b"), 16비트 워드(.w") 및 32비트 롱스(.l")에서 연산을 허용한다.

그 시대의 많은 CPU와 마찬가지로 일부 명령의 사이클 타이밍도 소스 피연산자에 따라 달랐다.예를 들어, 서명되지 않은 곱셈 명령은 'n'이 피연산자에 설정된 비트 수와 동일한 경우 완료되는 데 (38+2n) 클럭 사이클이 필요하다.[27]고정 주기 카운트를 사용하는 함수를 생성하려면 곱하기 명령 뒤에 추가 코드를 추가해야 한다.이것은 일반적으로 원래 곱셈 피연산자에 설정되지 않은 각 비트에 대해 추가 사이클을 소비한다.

대부분의 지시사항은 diadi, 즉 작전에 출처와 목적지가 있고, 목적지가 변경되는 것이다.주목할 만한 지침은 다음과 같다.

  • 산술: ADD, SUB, MULS(부호 곱하기), MULS(서명 곱하기), DIVU, DIVS, NEG(추가 부정) 및 CMP(인수를 빼고 상태 비트를 설정하여 수행한 일종의 비교의 일종이지만 결과는 저장하지 않았다.
  • 이진 코드 소수점 산술: ABCD, NBCD 및 SBCD
  • 논리: EOR(전용 또는), AND, NOT(논리적 아님), OR(전용 또는)
  • 시프트: (논리적, 즉 오른쪽 시프트가 가장 중요한 비트에 0을 넣는다)LSL, LSR, (산술적 시프트, 즉 가장 중요한 비트를 확장한다) ASR, ASL, ASL, (eXtend를 통과하거나 그렇지 않은 경우) ROXL, ROR
  • 메모리 또는 데이터 레지스터의 비트 테스트 조작: BSET(1로 설정), BCLR(0으로 설정 삭제), BCHG(반전) 및 BTST(변경 없음)이 모든 지침은 먼저 대상 비트를 테스트하고 대상 비트가 각각 0(1)일 경우 CCR Z 비트를 설정(삭제)한다.
  • 다중 처리 제어:TAS는, 테스트와 세트로, 분리할 수 없는 버스 운용을 실시해, 단일 메모리를 공유하는 여러 프로세서를 동기화하는 데 세마포어를 사용할 수 있도록 했다.
  • 제어 흐름: JMP(점프), JSR(서브루틴으로 점프), BSR(서브루틴으로 상대 주소 점프), RTS(서브루틴에서 복귀), RTE(예: 인터럽트로부터 복귀), TRAP(소프트웨어 인터럽트와 유사한 소프트웨어 예외 트리거), CHK(조건부 소프트웨어 예외)
  • 지점: BCc(상태 레지스터에서 사용할 수 있는 상태 레지스터의 상태 코드: 동일, 큼, 작음, 이월 및 대부분의 조합과 논리적 반전의 14가지 테스트 중 하나를 "cc"가 지정했다.)나머지 두 가지 가능한 조건(항상 참 및 항상 거짓)은 별도의 지침 연상학, BRA(지점 항상), BSR(지점부터 서브루틴까지의 지점)을 갖는다.
  • 노화지점: DBcc("cc"가 지점 지침과 관련됨)는 조건이 거짓이라면 D-register의 낮은 단어를 감소시키고, 결과가 -1($FFF)이 아니면 목적지에 분기했다.이러한 종료값으로 0 대신 -1을 사용함으로써, 루프로 들어가기 전에 다른 점검이 필요 없이 카운트가 0일 경우 아무것도 하지 않아도 되는 루프의 코딩이 쉬워졌다.이것은 또한 DBcc의 보금자리를 용이하게 했다.

68EC000

Motorola 68EC000 컨트롤러

68EC000은 임베디드 컨트롤러 애플리케이션을 위해 설계된 약간 다른 핀을 가진 68000의 저가 버전이다.68EC000은 재설정 시 전환 가능한 8비트 또는 16비트 데이터 버스를 가질 수 있다.[28]

프로세서는 8 MHz와 16 MHz 구성을 포함한 다양한 속도로 사용할 수 있으며 각각 2,100 Dhrystone과 4,376 Dhrystone을 생산한다.이들 프로세서는 부동 소수점 단위가 없으며, EC 시리즈에는 필요한 코프로세서 지침이 없어 FPU 코프로세서(MC68881/2)를 하나로 구현하기 어렵다.

68EC000은 엔소니크 악기와 사운드 카드를 포함한 많은 오디오 어플리케이션에서 제어기로 사용되었는데, MIDI 신디사이저의 일부였다.[29]엔소니크 사운드보드에서 컨트롤러는 CPU가 탑재되지 않은 경쟁사 대비 몇 가지 장점을 제공했다.프로세서는 종료 및 체류형 프로그램을 사용하지 않고 MPU-401 MIDI 합성 또는 MT-32 에뮬레이션과 같은 다양한 오디오 작업을 수행하도록 보드를 구성할 수 있도록 했다.이것은 소프트웨어 호환성을 향상시키고, CPU 사용량을 낮추고, 호스트 시스템 메모리 사용량을 줄였다.

모토로라 68EC000 코어는 후에 모토로라/프리스케일로부터 m68k 기반 DragonBall 프로세서에 사용되었다.

또한 세가 새턴 게임 콘솔의 사운드 컨트롤러와 1990년대 중반 HP LaserJet 프린터의 HP JetDirect Ethernet 컨트롤러 보드의 컨트롤러로도 사용되었다.

예시 코드

아래 68000 어셈블리 코드는 명명된 서브루틴에 대한 것이다.strtolower. 8비트 문자의 null-messages 문자열을 대상 문자열에 복사하여 모든 영문자를 소문자로 변환한다.

                                                                                                                                                                                 00100000 00100000 4E56 000000004 306E 00100008 326E 00100008 326E 000C 1018 001000000E 0C40 0010000E 0041 00100012 6500E 00100016 0C40 0010001A 0010001A 620000060010001E 0640E 0640 0020 00100022 12C0 00100024 66E6 00100026 4E5E 00100028 4E75 0010002A
; 스트롤러워: ; null 종단 ASCII 문자열 복사, 변환 ; 모든 알파벳 문자는 소문자로 한다. ; ; 입력 매개 변수: ; (SP+0): 소스 문자열 주소 ; (SP+4): 대상 문자열 주소                  조직화하다     $00100000       ;00100000에서 시작 스트롤로어      공중의                 연결하다    a6,#0           ;스택 프레임 설정                 이사하다   8(a6),a0        ;A0 = src, 스택으로부터                 이사하다   12(a6),a1       ;A1 = dst, 스택으로부터 고리를 틀다            이사하다.b  (a0)+,d0        ;D0 로드 from (src), incr src                 cmpi    #'A',d0         ;D0 < 'A'라면                 부풀어오르다     베끼다            ;의                 cmpi    #'Z',d0         ;D0 > 'Z'이면,                 bhi     베끼다            ;의                 애디    #'a'-'A',d0     ;D0 = 소문자(D0) 베끼다            이사하다.b  d0,(a1)+        ;D0 저장 위치(dst), incr dst                 bne     고리를 틀다            ;D0 <>NUL 동안 반복                 풀다    a6              ;복원 스택 프레임                 rts                     ;리턴                 종지부를 찍다 

서브루틴은 레지스터 A6를 프레임 포인터로 사용하여 통화 프레임을 설정한다.이러한 종류의 통화 규약재입력 코드와 재귀 코드를 지원하며, 일반적으로 C와 C++와 같은 언어에서 사용된다.그런 다음 서브루틴이 서브루틴에 전달된 파라미터를 검색한다(src그리고dst() 스택에서.그런 다음 에서 ASCII 문자(1바이트)를 읽으면서 루프를 한다.src문자열, 대문자 알파벳 문자인지 확인하고, 대문자인지 확인하고, 만약 그렇다면 소문자로 변환하고, 그렇지 않으면 그대로 둔 다음, 문자로 표기한다.dst끈을 매다마지막으로 문자가 null 문자인지 확인하고, 그렇지 않으면 루프를 반복하며, 그렇지 않으면 이전 스택 프레임(및 A6 레지스터)을 복원하고 반환한다.문자열 포인터(register A0 및 A1)는 루프의 각 반복에서 자동으로 증가한다는 점에 유의하십시오.

대조적으로, 아래 코드는 독립 실행형 기능에 대한 것으로서, TI-89 계산기 시리즈에 대한 가장 제한적인 AMS 버전에서도, 커널 독립적이며, 실행할 때 테이블, 파일 또는 라이브러리에서 조회되는 값도 없고, 예외 처리도 없으며, 사용할 레지스터도 최소화하고, 저장할 필요도 없다.그것은 서기 3월 1일 이후의 역사적 율리우스 날짜 또는 그레고리우스 날짜에 유효하다.20개 미만의 작업에서, 해당 위치에 저장된 세 개의 입력으로 호출될 때 ISO 8601과 호환되는 일 수를 계산한다.

;;; WDN, 주소 - 결과 d0; GLAGE, 0 또는 2 - 각각 줄리안과 그레고리안 중 하나를 선택하기; 기본 ISO 형식의 이진 워드&바이트로 날짜 스탬프;(Year, year = Year=DATE);move.l DATE,d0      move.l d0,d1;; 1단계 적용 - 라흐만의 조화      andi.l #$f00,d0      divu #100,d0      addi.w #193,d0      andi.l #$ff,d0      divu #100,d0 ; d0 has the month index i in the upper word (mod 100); 2단계 적용 - DATE 전 줄리안 윤일의 연도로 spqr 찾기swap d0      andi.l #$ffff,d0      add.b d1,d0      add.w YEAR,d0      subi.l #$300,d1      lsr  #2,d1      swap d1      add.w d1,d0 ; spqr/4 + year + i + da; ; (0단계 적용 - 그레고리안 조정)mulu FLAG,d1      divu #50,d1      mulu #25,d1      lsr  #2,d1      add.w d1,d0      add.w FLAG,d0 ; (sp32div16) + spqr/4 + year + i + da;divu #7,d0      swap d0  ;  d0.w becomes the day number;move.w d0,WDN ; returns the day number to address WDN      rts; 요일은 다음과 같이 주의 일수에 해당한다. ;; Sun=0 Mon=1 Tue=2 Wed=3 Thu=4 Fri=5 Sat=6;

참고 항목

참조

  1. ^ Heath, Steve (1995). Microprocessor Architectures and Systems: RISC, CISC, and DSP (second ed.). p. 13. ISBN 0-7506-2303-9. Retrieved 2019-10-12.
  2. ^ a b c d e Starnes, Thomas W. (April 1983). "Design Philosophy Behind Motorola's MC68000". Byte. Vol. 8, no. 4. Retrieved 2018-06-19.
  3. ^ Motorola M68000 Family Programmer's Reference Manual (PDF). Phoenix, Arizona: Motorola. 1992. p. 1-1. ISBN 0-13-723289-6.
  4. ^ "MC68000: Low Cost 32-Bit Microprocessor (Including HC000, HC001, EC000 and SEC000)". NXP Semiconductor. Retrieved 2021-03-24.
  5. ^ Turley, Jim (2020-08-10). "Wallowing in 68K Nostalgia Want to Build a New, 40-year-old Computer?". Electronic Engineering Journal. Retrieved 2021-03-24.
  6. ^ Ken Polsson. "Chronology of Microprocessors". Processortimeline.info. Retrieved 2013-09-27.
  7. ^ a b c DTACK GROUNDED, The Journal of Simple 68000/16081 Systems, March 1984, p. 9.
  8. ^ Rhines, Walden C. (2017-06-22). "The Inside Story of Texas Instruments' Biggest Blunder: The TMS9900 Microprocessor". IEEE Spectrum. Retrieved 2020-06-16.
  9. ^ Rood, Andrew L.; Cline, Robert C.; Brewster, Jon A. (September 1986). "UNIX and the MC68000". Byte. p. 179.
  10. ^ The Atmel AVR Microcontroller: MEGA and XMEGA in Assembly and C. Han-Way Huang. 14 January 2013. ISBN 978-1285500089.
  11. ^ "FD1094 – Sega Retro". segaretro.org. 19 October 2017.
  12. ^ 1985년 9월 21일자 뉴욕타임즈 "회사 개요"는 타임즈 선택(구독)에서 구할 수 있다.
  13. ^ "68HC001 obsoletes 68008". Microprocessor Report. June 20, 1990.
  14. ^ "Motorola streamlines 68000 family; "EC" versions of 68000, '020, '030, and '040, plus low-end 68300 chip"". Microprocessor Report. April 17, 1991.
  15. ^ "Motorola reveals MC68SEC000 processor for low power embedded applications" (Press release). Motorola. November 18, 1996. Archived from the original on March 28, 1997.
  16. ^ comp.sys.m68k Usenet 게시물, 1995년 5월 16일; 다른 게시물들도 실에서 본다.모토로라의 표준 종말 관행에 따르면, 최종 주문은 1995년에 이루어졌을 것이며, 1996년에 최종 주문은 선적되었을 것이다.
  17. ^ "Freescale 150mm Sendai Fab Closure-General Product Discontinuance". November 24, 2010.
  18. ^ "Multiprotocol processor marries 68000 and RISC". ESD: The Electronic System Design Magazine. November 1, 1989 – via AccessMyLibrary.
  19. ^ "museum ~ WICAT 150". Old-computers.com. Retrieved 2013-09-27.
  20. ^ "Google Code Archive - Long-term storage for Google Code Project Hosting". code.google.com. Retrieved 2016-01-15.
  21. ^ "openlase-mame/segaybd.c at master - jv4779/openlase-mame". GitHub. Retrieved 2016-01-15.
  22. ^ "Google Code Archive - Long-term storage for Google Code Project Hosting". code.google.com. Retrieved 2016-01-15.
  23. ^ "historic-mess/cischeat.c at master - mamedev/historic-mess". GitHub. Retrieved 2016-01-15.
  24. ^ Philips PM3320 250 MS/s 듀얼 채널 디지털 스토리지 오실로스코프 서비스 설명서, 섹션 8.6, 코드 4822 872 05315 주문.
  25. ^ LeCroy 9400/9400A 디지털 오실로스코프 서비스 설명서, 섹션 1.1.1.3 마이크로프로세서, 1990년 8월
  26. ^ a b M68000 8-/16-/32-Bit Microprocessors User's Manual Ninth Edition (PDF). Motorola. 1993. p. 6-2.
  27. ^ "Standard Instruction Execution Times". oldwww.nvg.ntnu.no.
  28. ^ Boys, Robert (January 6, 1996). "M68k Frequently Asked Questions (FAQ), comp.sys.m68k".
  29. ^ 1995년 4월 25일, Google 그룹 팩스 시트의 사운드스케이프 엘리트 사양.

추가 읽기

데이터시트 및 설명서
책들
  • 68000, 68010, 68020 프라이머; 1차 에드; 스탠 켈리 부틀과 밥 파울러; 하워드 샘스 & 코; 370페이지; 1985; ISBN 978-067224058. (아카이브)
  • 마스터링 68000 마이크로프로세서; 1차 Ed; Phillip Robinson; Tab Books; 244페이지; 1985; ISBN 978-0830608867. (아카이브)
  • 68000 시리즈용 포켓 가이드 어셈블리 언어; 1차 Ed; Robert Erskine; Pitman 출판; 70페이지; 1984; ISBN 978-0273021520. (아카이브)
  • 모토로라 M68000 다이 도식 [1]
  • 68000 머신 코드 프로그래밍(68000, 68008, 68010, & 68020 프로세서), 1차 에드, 데이비드 바로우, 콜린스 프로페셔널 및 기술 도서, 234페이지, 1985년, ISBN 0-00-383163-9.

외부 링크