모토로라 68000

위키百科, 우리 모두의 百科事典.
( 모토롤라 68000 에서 넘어옴)

모토로라 68000 아키텍처
設計 企業 및 設計者 모토로라
비트 16/32비트
發表 1979年 (45年 前) ( 1979 )
救助 CISC
分期 條件 코드
엔디言
레지스터
汎用 目的 8× 32-bit + 7 住所 레지스터 (大部分의 오퍼레이션 + 스택 포인터에도 使用 可能)
모토로라 68000 CPU
命令語 集合 모토로라 68000 시리즈
트랜지스터 68,000 [1]
데이터 幅 16비트
住所 幅 24비트
後續 모델 모토로라 68010
패키지
  • 64핀 DIP

모토로라 68000 (Motorola 68000, MC68000 )은 모토로라 (現在 半導體 事業 部分은 프리스케일 洗米컨덕터 로 獨立)가 開發한 16/32비트 [2] CISC 마이크로프로세서 1979年 HMOS 工程을 使用한 첫 製品이 出市된 以後 여러 方面에서 널리 使用되었다.

歷史 [ 編輯 ]

68000은 1976年 MACSS(Motorola Advanced Computer System on Silicon) 프로젝터에서 始作되어 高性能을 위해 旣存의 6800 과의 互換性을 考慮하지 않고 完全히 새로운 아키텍처 로 開發되었다. 그 結果 6800의 周邊 裝置들을 使用하기 위한 버스 프로토콜 虎患 모드만이 남게 되었다. 設計者들은 앞으로의 32비트 命令語 아키텍처에 重點을 두었는데 CPU 레지스터 가 32비트로 構成되어있는 것이 그 證據이다. MACSS 팀은 PDP-11 VAX 시스템 같은 미니컴퓨터 프로세서의 設計에 影響을 받아 비슷한 構造로 設計하게 되었다.

1960年代 中盤 8비트 프로세서 製造社들은 16비트 製品을 開發하느라 競爭하고 있었다. 내셔널 洗米컨덕터 는 1973-1975年 IMP-16 PACE 프로세서를 開發하였지만 性能에 問題가 있었는데 1977年 인텔 8086 이 出市되어 人氣를 얻었다. 競爭者들이 엎치락뒤치락하는 동안 16비트 戰爭에 늦게 뛰어든 모토로라는 挽回할 武器로 더 많은 트랜지스터 集積과 32비트 매크로 命令語를 導入해 喝采를 받았다.

오리지널 MC68000는 HMOS 3.5 μm 工程으로 製造되었는데 初期 엔지니어링 샘플은 1979年 末 出市되었으며 1980年 量産되기 始作하여 初期 製品의 速度는 4, 6, 8MHz였다. 1981年 10 MHz, 1982年 12.5 MHz 製品이 出市되었으며 오리지널 HMOS 칩 中 가장 빠른 16.67 MHz "12F" 버전은 1980年代 末까지 出市되지 못했다.

68000은 高性能 設計로 말미암아 썬 워크스테이션 아폴로/도메인 워크스테이션 을 包含한 유닉스 系列 워크스테이션 의 主要 CPU로 使用되었다. 또한 아미가 아타리 ST , 애플 리사 (Lisa)와 매킨토시 같은 草創期 컴퓨터에서도 찾아볼 수 있으며 애플 레이저라이터(LaserWriter) 데스크톱 레이저 프린터 에도 使用되었다.

1982年에는 假想 메모리 支援을 包含해 Popek과 Goldberg 假想化를 追加한 68010을 出市하였으며 32비트 어드레스 버스를 가진 더 擴張된 버전의 68012度 出市하였다. 또한 低價型으로 8비트 데이터 버스와 20비트 어드레스 버스를 가진 68008度 出市하였다. 1982年以後 모토로라는 68020과 88000 開發에 힘을 기울였다.

세컨드 소스 [ 編輯 ]

히타치 (HD68000), 모스텍 (MK68000), 락웰 (R68000), 시그네틱스 (SCN68000), 톰슨/ SGS-톰슨 (EF68000 나중에 TS68000로 變更), 도시바 (TMP68000) 같은 다른 會社들도 세컨드 소스로 HMOS 68000을 製造하였다. 도시바는 CMOS 68HC000 (TMP68HC000)의 세컨드 소스 製造社이기도 하다.

CMOS 버전 [ 編輯 ]

68HC000은 68000의 CMOS 버전으로 히다치가 設計하여 1985年 共同으로 出市하였는데 [3] 모토로라 버전은 MC68HC000, 히다치는 HD68HC000로 表記했다. 68HC000은 8 ~ 20 MHz 速度로 出市되었으며 CMOS 回路를 使用했음에도 HMOS MC68000과 同一했지만 消耗 電力은 크게 줄어들었다. 오리지널 HMOS MC68000은 25 °C의 溫度에서 使用時 클럭 速度에 相關없이 1.35 와트 의 電力을 消費하는 反面 MC68HC000는 8 MHz 製品은 0.13와트, 20 MHz 製品은 0.38와트의 電力만을 消費한다. (CMOS 回路와 다르게 HMOS는 아이들時에도 電流가 흐르기 때문에 클럭 速度에 따라 電力 消耗의 差異가 적다.)

모토로라는 1990年 MC68008을 MC68HC001로 交替하였다. 이 칩은 68HC000과 大部分 비슷한데 리셋視 데이터 버스 핀에 入力되는 信號에 따라 데이터 버스가 16비트나 8비트 모드로 動作한다. 그래서 68008科 같이 값 싼 8비트 메모리를 使用할 수 있다.

68000은 임베디드 컨트롤러로도 變化하였는데 68EC000와 SCM68000는 어드레스 버스를 32비트로 擴張하였고 M6800 周邊機器 버스를 없애고 유저 모드 프로그램에서 SR의 MOVE 命令語를 削除하였다. [4] 1996年 모토로라는 完全한 스태틱 回路로 低電力 모드에서 0.5 μW의 電力만 消費하는 MC68SEC000을 出市하였다. [5]

1996年 모토로라는 HMOS MC68000와 MC68008의 生産을 멈추었지만 [6] 모토로라에서 分離된 프리스케일 洗米컨덕터에서 MC68HC000과 MC68HC001, MC68EC000, MC68SEC000을 비롯해 MC68302와 MC68306 마이크로컨트롤러 , 드래곤볼 시리즈를 販賣하고 있으며 68000 아키텍처의 後繼로 680x0, CPU32, 콜드파이어 또한 販賣하고 있다.

마이크로컨트롤러 코어 [ 編輯 ]

68000은 眞짜 32비트 마이크로프로세서로서 成功한 以後 많은 마이크로컨트롤러 코어로도 使用되었다. 1989年 모토로라는 MC68302 通信 프로세서를 出市하였다. [7]

使用處 [ 編輯 ]

68000은 1980年代 初에는 高架 시스템에 使用되었다. WICAT 150 [1] 과 初期의 Alpha Microsystems 컴퓨터, 탠디 TRS-80 Model 16, Fortune 32:16같은 멀티유저 마이크로컴퓨터와 휴렛 팩커드 의 HP 9000 시리즈 200 시스템, 最初의 Apollo/Domain 시스템, 썬 마이크로시스템즈 의 Sun-1, Corvus Concept같은 싱글유저 워크스테이션, DEC(Digital Equipment Corporation)의 VAXstation 100, 실리콘 그래픽스 IRIS 1000/1200같은 그래픽 端末機 等이 包含된다. 以後 유닉스 시스템들은 더 强力한 68K의 後續 製品을 使用하였다.

1980年代 中盤에는 個人用 컴퓨터 家庭用 컴퓨터 에 使用되었는데 애플 리사 (Lisa)와 매킨토시 를 始作으로 코모도어 아미가 , 아타리 ST , 샤프 X68000 等에 使用되었다. 68008을 使用한 컴퓨터로는 Sinclair QL과 그 자매품인 ICL One Per Desk이 있다.

68000은 컨트롤러로도 널리 使用되었는데 1981年初 Imagen Imprint-10 레이저 프린터는 68000이 內藏된 外部 컨트롤러로 作動되었다. 最初의 HP 레이저젯 (LaserJet)은 1984年 出市되었는데 8 MHz 68000이 內藏된 컨트롤러를 使用하였다. 이와 類似한 68000 基盤의 統合 컨트롤러는 1985年 出市된 最初의 포스트스크립트 레이저 프린터인 애플 레이저라이터 (LaserWriter)를 비롯해 많은 레이저 프린터에서 使用되었다. 68000은 1980年代 末까지 레이저 프린터에 폭넓게 使用되었고 1990年代에도 低價型 프린터에는 繼續 使用되었다.

企業用이나 家庭用 컴퓨터 外에도 68000은 産業用 制御 시스템 領域에서도 널리 使用되었다. 이런 시스템에는 68000과 거기에서 派生된 프로그래머블 로직 컨트롤러(PLC)가 主로 使用되었다. 그러한 시스템의 使用者는 舊式 製品일지라도 一般 使用者처럼 使用 中斷하는 일이 없어서 設置된 지 20年이 넘었어도 繼續 使用하는 境遇가 많으며 21世紀가 되어도 많은 68000 基盤의 컨트롤러가 安定的으로 作動하고 있다.

技術의 發展으로 68000이 컴퓨터 市場에서 單獨으로 使用되는 일은 없어졌지만 컨슈머(consumer)와 임베디드 用途에서는 使用이 增加하였다. 비디오 게임 製造社들은 아케이드 게임과 家庭用 게임 콘솔에 68000을 主力으로 使用하였다. 아타리가 1983年 出市한 푸드 파이트(Food Fight)는 68000을 使用한 첫 番째 아케이드 게임이다. 68000은 1980年代 末에서 1990年代 初까지 아케이드 게임機의 메인 CPU로 使用되었는데 그 例로 世가 시스템 16 , 캡콤 CPS-1 CPS-2 , SNK 네오지오 等이 있다. 아웃런 같이 多數의 아케이드 시스템에서는 2個以上의 68000을 使用했다. 68000은 90年代까지 아케이드 시스템에 널리 使用되었으며 2000年代 初에도 IGS PGM같은 機器에 使用되었다.

68000은 1980年代 末 ~ 1990年代 初盤의 家庭用 게임 콘솔에 核心 프로세서로 使用되었는데 世家의 메가 드라이브 메가 CD , 家庭用 게임機 버전의 네오지오 等이 있다. 最近의 게임 콘솔에서는 메인 CPU 外에 다른 用途로 使用되는 境遇가 있는데 世가 새턴 에서는 사운드 制御用으로, 아타리 재규어 에서는 그래픽과 사운드 칩 制御用으로 使用된다.

68000 基盤의 683XX 마이크로컨트롤러는 네트워크/電話 設備, 텔레비전 셋탑 박스, 實驗室과 醫療 機器 等 多用途로 널리 使用되었다. MC68302는 Cisco, 3com, Ascend, Marconi, Cyclades等의 通信 機器에서 使用되었으며 드래곤볼 시리즈는 팜 컴퓨팅 팜(Palm) PDA 핸드스프링 바이저 시리즈에서 使用되었으나 팜은 漸次 ARM 프로세서로 바뀌게 된다. 携帶型 워드프로세서 알파스마트 (AlphaSmart)의 後記 모델도 드래곤볼을 使用했다.

텍사스 인스트루먼트 는 TI-89과 TI-92, Voyage 200 같은 高級型 그래픽 計算器에 68000을 使用하였는데 初期 버전은 스태틱 68EC000 코어의 專用 마이크로컨트롤러를 使用하였지만 나중에는 MC68SEC000 프로세서를 使用했다.

아키텍처 [ 編輯 ]

어드레스 버스 [ 編輯 ]

68000은 24비트의 外部 어드레스 버스를 가지고 있지만 A0 핀은 2가지 바이트 選擇 信號로 代替할 수 있기 때문에 16 MB의 實際 메모리를 바이트 單位로 利用 可能하다. 어드레스의 貯藏과 計算은 32비트지만 핀 不足으로 上位 바이트는 無視된다. 또한 32비트의 플랫(flat) 메모리 空間을 使用하는 소프트웨어를 實行할 수 있는데 現代的인 定義로 이것은 68000이 32비트 마이크로프로세서라는 意味가 된다. 모토로라가 內部 32비트 어드레스를 採用한 意圖는 소프트웨어 作成에서 上位 互換性 을 念頭에 둔 것이다.

하지만 利點은 프로그래머들이 互換性없는 프로그램을 製作하는 것을 豫防하지는 못했다. 24비트 소프트웨어는 上位(upper) 어드레스 바이트를 無視하거나 魚드레싱 用途外에 다른 用途로 使用되었기 때문에 32비트 68K에서는 實行할 수 없었다.

內部 레지스터 [ 編輯 ]

68000에는 32비트 汎用 데이터 레지스터 8個(D0-D7)와 어드레스 레지스터 8個(A0-A7)가 있는데 마지막 A7 어드레스 레지스터는 스택 포인터로도 使用된다. 內藏된 레지스터 數는 여러 가지로 適當한 數字였는데 68000이 인터럽트에 재빨리 應答하기에 充分한 程度로 작고 大部分의 演算을 빠르게 實行하는데 充分한 만큼 컸다.

데이터와 어드레스 2種類의 레지스터는 當時에는 生疏한 것이었지만 배우고 使用하는데 어렵지는 않았다. 들리는 바에 따르면 데이터와 어드레스를 나눔으로서 設計者들이 더 높은 水準으로 어드레스 레지스터 補助 實行 유닛의 竝列火를 設計하는데 寄與했다고 한다. 또 68000 시리즈의 精髓 標示는 빅엔디言 方式을 使用한다.

狀態(Status) 레지스터 [ 編輯 ]

68000은 比較, 算術 演算과 論理 演算에서 그 結果를 狀態 레지스터에 비트 플래그로 設定해 나중에 條件 分期에서 使用할 수 있다. 비트 플래그에는 e X tend, N egative, Z ero, o V erflow, C arry 가 있다. 二重 eXtend 플래그는 多精密度(Multiprecision)의 算術 演算과 論理, 시프트 演算에서 特別한 비트로 使用된다.

命令語 셋 [ 編輯 ]

設計者들은 어셈블리어 가 直交性(orthogonal)을 가지도록 試圖하였다. 命令語는 오퍼랜드와 어드레스 모드로 區別되며 大部分의 어드레스 모드는 모든 命令語를 使用할 수 있다. 비트 레벨에서 어셈블러로 作成된 命令語가 어떤 오프코드(op-code)로 변환되는지 明確히 알 수 있는데 이것은 直交性 있는 머신으로의 便宜性과 CPU 設計者들이 오프코드 票를 자유롭게 作成하는데 좋은 妥協點이 되었다.

56個의 命令語만이 最小 크기의 命令語로 當時에는 巨大한 16비트 크기였다. 더군다나 많은 命令語와 어드레스 모드에는 어드레스와 어드레스 모드 비트等을 담은 餘分의 워드(word)를 追加로 使用한다. 많은 設計者들은 MC68000 아키텍처가 費用에 걸맞은 컴팩트한 코드를 生成한다고 믿고 있었는데(특히 컴파일러 로 코드를 生成할 境遇) 이 컴팩트한 코드에 對한 믿음은 아키텍처가 널리 오랫동안 使用하게 되는데 도움이 되었다. 이러한 믿음 或은 特徵은 ARM 아키텍처의 썸(Thumb) 命令語 셋이 發表될 때까지 繼續 이어졌다.

特權 레벨 [ 編輯 ]

이 CPU와 以後 모든 시리즈는 2種類의 特權 레벨을 가지는데 유저 레벨은 인터럽트 레벨의 컨트롤을 除外한 모든 액세스가 可能하며 슈퍼바이저(Supervisor) 레벨은 모든 액세스가 可能하다. 인터럽트가 發生하면 슈퍼바이저 모드로 變更된다. 슈퍼바이저 비트는 狀態 레지스터에 貯藏되며 유저 프로그램에서 볼 수 있다.

이 시스템의 長點으로 슈퍼바이저 레벨은 別途의 스택 포인터를 가진다는 點이다. 이것은 멀티태스킹 시스템에서 作業(task)에 使用되는 스택의 크기를 줄일 수 있는데 設計者가 인터럽트의 最大 스택 프레임을 考慮해 메모리를 割當할 必要가 없었다.

인터럽트 [ 編輯 ]

이 CPU에는 7段階의 인터럽트 레벨이 있는데 레벨 1에서 7까지 優先權이 있다. 높은 數字의 인터럽트는 낮은 數字의 인터럽트에 언제나 끼어들 수 있다. 狀態 레지스터에서 特權 命令語로 인터럽트 레벨을 設定할 수 있으며 낮은 優先權을 가진 인터럽트는 遮斷할 수 있다. 인터럽트 레벨 7은 NMI(non-maskable interrupt)로 끼어들거나 遮斷할 수 없다. 인터럽트 레벨은 狀態 레지스터에 貯藏되며 유저 레벨의 프로그램으로 볼 수 있다.

하드웨어 인터럽트는 인터럽트 優先 順位에 따라 인코드되어 3個의 信號로 CPU에 傳達된다.별도의 인터럽트 컨트롤러는 一般的으로 인터럽트 인코딩에 必要하지만 시스템에 3個以下의 하드웨어 인터럽트를 使用할 境遇 直接 連結해 인터럽트 信號를 入力받을 수 있지만 소프트웨어의 複雜性이 增加한다. 인터럽트 컨트롤러는 簡單한 74LS148 優先權 인코더부터 MC68901과 같이 UART와 타이머, 竝列 I/O 機能이 包含된 多技能 VLSI 周邊 칩 等도 使用할 수 있다.

例外 테이블(인터럽트 벡터 어드레스)는 어드레스 0에서 1023까지로 固定되어 있으며 256個의 32비트 벡터로 標示된다. 첫 番째 벡터는 始動 스택 어드레스이며 두 番째는 始動 코드 어드레스이다. 벡터 3부터 15는 各種 에러 報告에 使用되는데 버스 에러나 어드레스 에러, 否定 命令語, 0으로 나눗셈, CHK과 CHK2 벡터, 特權 違反, 그리고 Line 1010 에뮬레이터, Line 1111 에뮬레이터와 하드웨어 停止支店(breakpoint)같은 豫約된 벡터가 抱合된다. 벡터 24부터 實際 인터럽트가 始作되는데 하드웨어에서 認定되지 않는 假짜(spurious) 인터럽트, 레벨 1에서 7까지의 벡터, 15個의 트랩 벡터, 몇가지의 豫約된 벡터, 使用者 定義 벡터의 順序로 羅列된다.

리셋視에는 最小限 始動 코드 어드레스 벡터에 有效한 어드레스가 있어야 하기 때문에 시스템에서는 一般的으로 0番地에 들어갈 벡터와 부트스트랩 코드를 貯藏한 非揮發性 메모리 (ROM 같은)를 裝着하고 있다. 하지만 一般的인 시스템에서는 實行中인 運營體制가 벡터를 變更할 수 있도록 하는 게 바람직하다. 이것을 實現하기 위해 ROM 의 벡터가 RAM 의 점프 테이블을 가리키거나 뱅크 스위칭으로 RAM을 ROM으로 代替하여 使用하기도 한다.

68000은 Popek과 Goldberg의 가상화 要求 條件과 一致하지 않는데 그 理由는 유저 모드 소프트웨어가 特權 狀態를 읽어들일 수 있고 特權이 없는 "MOVE from SR" 命令語 하나 때문이었다.

68000은 假想 메모리 支援이 不可能했는데 이것은 메모리 액세스 失敗時 트랩 과 復舊 機能이 必要했다. 68000은 트랩에 使用되는 버스 에러 例外를 準備해 놓았지만 運營體制에서 例外 事項을 處理하는 境遇 잘못된 命令語를 다시 始作하기 위한 프로세서의 狀態를 貯藏하지 않았다. 몇몇 會社는 2個의 68000칩을 使用해 假想 메모리가 作動하는 유닉스 워크스테이션을 製作하기도 하였다. "leading" 68000街 잘못된 메모리 액세스를 接하면 "main" 68000街 잘못된 메모리 액세스하는 것을 防止하기 위해 끼어들어 假想 메모리 機能을 處理하고 올바른 狀態를 維持하게 되면 인터럽트를 返還해서 "main" 68000를 作動시켰다.

이런 問題點들은 MC68010에서 修正되었다. 버스 에러와 어드레스 에러가 發生할 境遇 內部 狀態를 슈퍼바이저 스택에 밀어 넣는 것으로 本來의 作業으로 復歸가 可能했다. “MOVE from SR” 命令語는 特權 命令語로 變更되었고 유저 모드 소프트웨어 用途로 特權없는 命令語 "MOVE from CCR"李 追加되어 運營體制에서 트랩과 유저모드에서 “MOVE from SR” 命令語를 에뮬레이터 할 수 있었다.

어드레스 모드 [ 編輯 ]

基本的인 어드레스 모드는 다음과 같다.

  • 레지스터 直接 指定 (Register direct)
    • 데이터 레지스터, 예 "D0"
    • 어드레스 레지스터, 예 "A6"
  • 레지스터 間接 指定 (Register indirect)
    • 單純 레지스터 (Simple address), 예 (A0)
    • 後增加 어드레스 (Address with post-increment), 예 (A0)+
    • 前減少 어드레스 (Address with pre-decrement), 예 -(A0)
    • 16비트 富豪 오프셋 어드레스 (Address with a 16-bit signed offset), 예 16(A0)
    • 8비트 富豪 오프셋 인덱스 레지스터 間接 指定 (Indexed register indirect with 8-bit signed offset) 예 8(A0, D0) 또는 8(A0, A1)

(A0)+ 과 -(A0)에서 實際로 增加되거나 減少되는 값은 被演算子의 크기에 따라 決定된다. 바이트 액세스視에는 어드레스 레지스터가 1 增加하며 워드日 때는 2, 롱(32비트)일 때는 4 增加한다.

  • 프로그램 카운터 相對 指定 (Program counter relative with displacement)
    • 16비트 富豪 오프셋 (Relative 16-bit signed offset), 예 16(PC). 이 모드는 매우 有用하다.
    • 인덱스 8비트 富豪 오프셋 (Relative with 8-bit signed offset with index), 예 8(PC, D2)
  • 節댓 魚드레싱 (Absolute memory location)
    • "$4000"같은 數値나 어셈블러가 飜譯하는 賞直積인 이름(symbolic name)
    • 68000 어셈블러는 16眞髓를 標示하는 記號로 "0x" 보다는 "$"를 使用한다.
  • 卽時 모드 (Immediate mode)
    • 命令語에 데이터가 包含된다, 예 "#400".
  • 빠른 卽時 모드 (Quick Immediate mode)
    • 오프코드에 데이터 값으로 速度가 빠르다.
    • addq와 subq, 3비트의 富豪없는 精髓값 (0 ~ 8)
    • moveq, 8비트의 富豪 精髓값 (-128 ~ 127), 예 moveq.l #0,d0는 clr.l d0 보다 빠르다.

追加: 狀態 레지스터로의 액세스, 以後 모델에서는 다른 特殊 레지스터度 같다.

命令語 셋 [ 編輯 ]

大部分 命令語에는 處理 單位로서 點 文字의 接尾辭가 붙는데 8비트 byte (".b"), 16비트 word (”.w”), 32비트 long (”.l”)으로 指定한다

大部分 命令語는 出發地(source)와 目的地(destination)를 가지며 目的地는 變更할 수 있다. 主要 命令語는 다음과 같다.

  • 算術 演算: ADD, SUB, MULU (富豪없는 數値 곱셈), MULS (富豪있는 數値 곱셈), DIVU, DIVS, NEG (네가티브 덧셈), CMP (뺄셈의 一種으로 狀態 비트만 設定하고 結果값은 貯藏하지 않는다.)
  • 이진化 십진 (Binary Coded Decimal) 演算: ABCD 와 SBCD
  • 論理 演算: EOR (Exclusive OR), AND, NOT, OR
  • 시프트 演算:
    • 論理 시프트, 오른쪽으로 비트를 移動한 後 最上位 비트를 제로로 채운다: LSL, LSR
    • 算術 시프트, 最上位 비트의 符號擴張을 한다: ASR, ASL
    • eXtend를 使用하거나 使用하지 않는 로테이트(Rotates): ROXL, ROXR, ROL, ROR
  • 메모리의 비트 造作(manipulation): BSET (1로 造作), BCLR (0으로 造作), BTST (SR의 Zero비트 설정)
  • 멀티프로세서 制御: TAS( test-and-set ), 하나의 메모리를 共有하는 多數의 프로세서를 一致시키는 細麻布어 (semaphore)를 實行하는 分轄할 수 없는(indivisible) 버스 演算
  • 플로우 制御: JMP (점프), JSR (서브루틴으로 점프), BSR (相對 어드레스에서 서브루틴으로 점프), RTS (서브루틴에서 復歸), RTE (인터럽트같은 例外에서 復歸), TRAP (소프트웨어 인터럽트와 비슷한 소프트웨어 例外를 發生), CHK (條件附 소프트웨어 例外)
  • 分期: Bcc (”cc”는 分期 條件으로 16種類의 狀態 레지스터의 테스트 條件中 하나를 指定: equal, greater than, less-than, carry, 그리고 狀態 레지스터의 모든 組合과 論理 反轉)
  • 減少 分期 (Decrement-and-branch): DBcc (”cc”은 分期 命令과 같은 意味) 指定한 데이터 레지스터가 減少된 後 指定된 條件이 참이고 減少 結果가 -1이 아니면 分岐된다. 0 代身 -1을 체크하는 것은 루프를 作成할 때 코드를 單純化하기 위해서이다. 루프 카운터가 처음부터 0으로 指定되었을 境遇 減少되어 -1이 되므로 分期되지 않는다. 따라서 0인지 아닌지를 루프에 들어가기 미리 確認할 必要가 없다.

어셈블리어 예제 [ 編輯 ]

                     ; strtolower:

                     ; Copy a null-terminated ASCII string, converting

                     ; all alphabetic characters to lower case.

                     ;

                     ; Entry parameters:

                     ;   (SP+0): Source string address

                     ;   (SP+4): Target string address


                                     org
     $00100000
       ;Start at 00100000

00100000
             strtolower
      public

00100000
  CE56
 0000
                  link
    a6
,
#0
           ;Set up stack frame

00100004
  206
E
 0004
                  movea
   4
(
a6
),
a0
        ;A0 = src, from stack

00100008
  226
E
 0008
                  movea
   8
(
a6
),
a1
        ;A1 = dst, from stack

0010000
C
  1018
       loop
            move.b
  (
a0
)
+
,
d0
        ;Load D0 from (src)

0010000
E
  0
C00
 0041
                  cmpi
    #'A',d0         ;If D0 < 'A',

00100012
  650
A
                       blo
     copy
            ;skip

00100014
  0
C00
 0059
                  cmpi
    #'Z',d0         ;If D0 > 'Z',

00100018
  6204
                       bhi
     copy
            ;skip

0010001
A
  0600
 0020
                  addi
    #'a'-'A',d0     ;D0 = lowercase(D0)

0010001
E
  12
E0
       copy
            move.b
  d0
,(
a1
)
+
        ;Store D0 to (dst)

00100020
  66
E8
                       bne
     loop
            ;Repeat while D0 <> NUL

00100022
  4
E5E
                       unlk
    a6
              ;Restore stack frame

00100024
  4
E75
                       rts
                     ;Return

00100026
                             end

68EC000 [ 編輯 ]

68EC000은 모토로라에서 出市한 마이크로프로세서이다. 68000의 低價型 버전으로 임베디드 컨트롤러用으로 設計되었다. 68EC000은 리셋視 8비트나 16비트로 데이터 버스를 바꿀 수 있다. [8]

이 프로세서는 8 ~ 16 MHz 速度로 作動하는데 各各 2,100 ~ 4,376 드라이스톤(Dhrystone)의 性能을 낼 수 있다. EC 시리즈는 浮動小數點 裝置가 內藏되지 않았으며 補助 프로세서 使用에 必須的인 命令語가 削除되었기 때문에 MC68881/2 FPU 補助 프로세서를 使用하기가 힘들다.

68EC000는 오디오 機器의 컨트롤러로 널리 使用되었는데 엔소닉 (Ensoniq) 電子 樂器와 사운드카드 미디 신시사이저 의 한 部分으로 使用되었다. [9] 엔소닉 사운드 카드는 CPU를 使用하지 않은 競爭者들의 製品과 比較해 몇가지 長點이 있었다. CPU는 使用한 카드는 TRS 프로그램 을 使用하지 않고도 MPU-401 미디 信書사이즈나 MT-32 에뮬레이션 같은 여러 가지 오디오 作業을 構成, 實行할 수 있었다. 이것은 소프트웨어 互換性이 높고 CPU 使用率이 적으며 컴퓨터의 메모리 使用量도 無視할 수 있었다.

모토로라 68EC000 코어는 모토로라/프리스케일에서 出市한 드래곤볼 에 使用되었다.

世가 새턴 게임 콘솔과 90年代 中盤 휴렛 팩커드의 레이저젯 프린터用 젯다이렉트 (JetDirect) 이더넷 컨트롤러에도 使用되었다.

같이 보기 [ 編輯 ]

各州 [ 編輯 ]

  1. Heath, Steve (1995). 《Microprocessor Architectures and Systems: RISC, CISC, and DSP》 seco版. 13쪽. ISBN   0-7506-2303-9 . 2019年 10月 12日에 確認함 .  
  2. Motorola Literature Distribution, Phonenix, AZ (1992). M68000 Family Programmer's Reference Manual Archived 2015年 9月 24日 - 웨이백 머신 . [motorola]. pp. pg 1?1. ISBN   0-13-723289-6 .
  3. "Company Briefs" Archived 2007年 11月 14日 - 웨이백 머신 , The New York Times, September 21, 1985, available from TimesSelect (subscription).
  4. "Motorola streamlines 68000 family; "EC" versions of 68000, '020, '030, and '040, plus low-end 68300 chip." , Microprocessor Report, April 17, 1991; available from HighBeam Research (subscription).
  5. "Motorola reveals MC68SEC000 processor for low power embedded applications" , Motorola press release, November 18, 1996; archived by Internet Archive on March 28, 1997.
  6. comp.sys.m68k Usenet posting , May 16, 1995; also see other posts in thread. The end-of-life announcement was in late 1994; according to standard Motorola end-of-life practice, final orders would have been in 1995, with final shipments in 1996.
  7. "Multiprotocol processor marries 68000 and RISC." , ESD: The Electronic System Design Magazine, November 1, 1989; available from AccessMyLibrary.
  8. Boys, Robert. M68k Frequently Asked Questions (FAQ) Archived 2009年 1月 13日 - 웨이백 머신 , comp.sys.m68k, October 19, 1994.
  9. Soundscape Elite Specs. from Fax Sheet , Google Groups, April 25, 1995.

參考 文書 [ 編輯 ]

外部 링크 [ 編輯 ]