NEC Vシリーズ
NEC Vシリーズは、日本電気(NEC、現在はルネサス エレクトロニクスに分離)が製造したマイクロプロセッサー・マイクロコントローラのシリーズである。
V30・V40・V50は16ビットの8086互換のシリーズである。V60以上は、独自仕様の32ビットプロセッサのシリーズである。なお、VR3000などのMIPSプロセッサやV850などのV810系列のプロセッサの名称もVから始まるが直接のつながりは無い。名称のVはVLSIの頭文字を取ったもので、Victoryの意味も込められている[1]。
総論
[編集]日本電気(NEC)は、NEAC、続いてACOSと、大型コンピュータを開発してきたメーカであり、またトランジスタ、続いて集積回路を開発・製造してきた半導体メーカでもあった。NECのマイクロプロセッサは半導体部門から始まっているが、NECは世界で最初期にマイクロプロセッサを開発した企業のひとつである。世界最初のマイクロプロセッサのひとつであるμPD707・708に続き、NECは1970年代にはμCOMシリーズを開発・展開した。μCOMシリーズには、オリジナル仕様のもの、インテル系を主とした(ザイログのZ80も含む)互換製品や類似仕様のもの、などがあった。
1980年代に入ると、NECはVシリーズを開発・展開した。まず、1980年代前半より開発・販売していた8088・8086互換モデルをCMOS化するとともに、内部バスの本数を増やして能力を向上させたV20・V30を開発した[2]。また、これらのCPUをコアとして周辺回路を集積したV40・V50や、より高性能化を図ったV33等へと展開した。しかし、V30は提訴により、充分な商機を得ることができなかった。海外では、8088コンパチでIBM PC互換機・PC/XT互換機に採用されたV20の方が、V30よりもメジャーである。
一方で、より高性能を目指した、独自仕様の32ビットCPU、V60・V70・V80を開発した。また、Vシリーズ以外にマイクロコントローラの78Kシリーズを展開している。
V10は欠番となっている。これは当初CMOS版Z80コード互換CPUであるμPD70008にV10の呼称を与えて販売を計画したものの、訴訟問題への影響を考えて、Vシリーズから除外する方針としたため、結局用いられなかったためである[1]。μPD70008の元となったμPD780にはμCOM-82と命名して販売したが、ザイログとセカンドソース契約をしていなかったため訴えられている(後に和解)。
1990年代にNECが開発した独自仕様のRISCがV810である。V805、V820、V821、V830、V850ファミリと展開した。
8ビット
[編集]- V10 (μPD70008) ※実際にはその名称で正式に発売されていないためVシリーズではない。Z80コード互換NMOS-CPUであるμPD780(μCOM-82)のCMOS版。Aも-数字もつかないもの(D70008C)は4MHz版。
V30系
[編集]- V20 (μPD70108) - データバス8bit版、8088ピン互換。
- V25 (μPD70320,μPD70322) - V20をコアに、周辺I/Fを追加した組み込み用途向けプロセッサ。また、レジスタセットが複数バンクあり、コンテキストスイッチを高速に行うことができる。組み込み機器向けを意図して設計されている。μPD70320はμPD70322からROMを取り除いたもの。
- V25+ (μPD70325) - V25のDMA転送速度を改善し、高速化したもの。
V30
[編集]V30 (μPD70116) は、NECが製造した、インテル8086の(正確にはNECのμPD8086(μCOM-86)の)上位互換マイクロプロセッサである。外部バス8ビットのV20 (μPD70108) がある。V30はPC-9800シリーズの他、同社の輸出向けノートPCのw:NEC UltraLiteにも(V20ではなくV30が)採用された。V20はワープロ専用機文豪ミニ5の一部機種や、一部のPC/XT互換機などに採用された。またV30・V20のセカンドソース製品には、ソニーCXQ70116・CXQ70108、シャープLH70116・LH70108、ザイログZ70116・Z70108 がある。
ハードウェア面では、オリジナルの8086に対してピン配置が互換である。信号のタイミングは、8086のクロックのデューティ比が1:2なのに対し、V30は1:1と多少異なっており、これに付随して他のタイミングの定義も異なる。ただし、実際にはそのまま差し替えても問題なく動くことが多かった。
- 8MHzまでは、原発振を2分周するクロックジェネレータμPD71011のほかに、3分周のμPD71084も使用できる[3]事から、1:2も許容されている模様。10MHz以上(8MHz超)はμPD71011指定で、1:1のみ。最低クロック周波数は2MHzで、停止することはできない。
- 8086の中には沖電気(現 ラピスセミコンダクタ)のMSM80C86A-10(10MHzバージョン)のように、メーカやクロック周波数によってはデューティ比が1:1のもの(MSM80C86A-10データシート J2O0010-27-X3。これはクロックの停止も可能)もあり、これらからの交換の場合はさらに有利だった。実際にJ-3100SS(元祖DynaBook)のCPUをMSM80C86A-10からV30に載せ替えた例もある。ただし、フラットパッケージ同士でパッケージ形状およびピン配置(MSM80C86A-10は56ピン、V30は52ピン)が異なるため、簡単ではない。
ソフトウェア面では、バイナリコードレベルで80186上位互換であり、オリジナルの8086に対しても上位互換である。
また、8086・80186に無いいくつかの命令が追加されていた。V30専用のアセンブリニーモニックは、8080からの流れを汲んだ8086のニーモニックとは異なっており、V30のニーモニックに対応したアセンブラはほとんど存在しなかった[4]。また、80286とは異なる拡張をした命令群は80286以後のインテル系CPUではサポートされないため積極的に用いられず、市場では主に「高速な8086」と見なされて利用されていた。一方で、一部のソフトウェアはV30固有の拡張命令を使用していたため、PC-9801シリーズではソフトウェア資産継承の視点から、しばらくの間はV30とインテル系CPUを両方実装し、切り替えて使用する方式をとった。EPSON PCシリーズでは、V30を搭載したのはPC-286Uや初期のPC-286NOTEなどPC-286シリーズのごく一部の機種のみで、それ以外の機種では、このようなソフトウェアの中には正常に動作しないものもあった。1990年のPC-9801DA/DS/DX以降の機種ではPC-98GSなど一部を除きPC-9800シリーズでもV30を省略したため同様の問題を抱えることになったが、そのころにはそのようなソフトが少なくなっていたため、あまり表面化しなかった。なお、NEC自身はV30固有命令の使用を推奨しない旨を案内していた[5]。
CPU内部のバスを増強してデータ転送効率を上げるとともに、所要クロック数の多い乗算・除算命令をハードワイヤード化し、命令実行に要するクロック数を削減したため、多くの命令を8086の約2/3のクロック数で実行可能となり、単純にCPUを差し替えただけで、同一の動作クロックで数%から数10%高速で演算処理を行うことができた。
マイクロコードの著作権がセカンドソース契約で問題となり、NECは先手を打って1984年、Vシリーズがインテルの著作権を侵害していないことを確認する訴訟(債務不存在確認訴訟)を起こした。これに対してインテルが反訴したため裁判は長引いたが、5年後の1989年にV30はi8086の著作権を侵害していないとの判決を得た。ただし、その直接の理由は、8086に著作権表示がなく、当該製品に対して著作権が認められないからである。一方で、マイクロコードにも著作権があることが判示され、互換プロセッサの製造が困難となった。86系のマイクロコードの著作権への抵触を回避するために、完全にハードワイヤード化されたV33系へ移行した。
V30はμPD8080AF(μCOM-80F)を元にした、8080エミュレーション機能を実装していたのも特徴の一つである。
V30独自命令
[編集]V30は、80186とはバイナリ上位互換が保たれていたが、V30独自命令[6]を80286で実行すると無効オペコード例外が発生し、80386以降ではインテルが別の命令を割り当てているため誤動作する。
オペコード | V30命令 | インテル命令 |
---|---|---|
64 | REPNC | FS: |
65 | REPC | GS: |
66 | FPO2 | オペランドサイズプリフィクス |
67 | FPO2 | アドレスサイズプリフィクス |
0F 10, 11, 18, 19 | TEST1 | SSE命令 |
0F 12, 13, 1A, 1B | CLR1 | SSE命令 |
0F 14, 15, 1C, 1D | SET1 | SSE命令 |
0F 16, 17, 1E, 1F | NOT1 | SSE命令 |
0F 20 | ADD4S | MOV dest, CRn |
0F 22 | SUB4S | MOV CRn, src |
0F 26 | CMP4S | MOV TRn, src |
0F 28 | ROL4 | SSE命令 |
0F 2A | ROR4 | SSE命令 |
0F 31 | INS | RDTSC |
0F 39 | INS | 無し |
0F 33 | EXT | RDPMC |
0F 3B | EXT | 無し |
0F FF | BRKEM | UD0 |
V33・V33A
[編集]V30がマイクロコード著作権で訴えられたことを受けて、内部論理のハードワイヤー化を行い、マイクロコードの違法使用をしていないことを明確にするとともに、マイクロコード実行にかかるオーバーヘッドを削減して、実行処理速度の向上・アドレス空間の拡張を図ったものである。68pin-PLCCおよびPGA・74pin-QFPによる製品が提供され、40pin-DIPパッケージの8086と直接差し替えて高速化を図ることはできなかった[7]。後に、V50のCPUコアをこのコアに置き換えたV53も開発されている。
8080エミュレーションが省かれている[8]。
- V33 (μPD70136) - V30に最大16MBまでのメモリ空間を扱えるようアドレッシング機能を拡張し、さらにオールワイヤード化したプロセッサ。プログラマブルなI/Oウェイト追加機能等、8086用ソフトウェアをそのまま動作させるための機能が豊富に実装されているが、アドレス信号線を20ビットから24ビットへ拡張した関係もあり、V30とはピン互換では無い。8086互換プロセッサとしては、当時の80286とほぼ同等の処理速度を持つ。
- V33A (μPD70136A) - 未定義命令割り込みベクタ等、V33に存在していた80286との非互換部分を修正したもの。PC-98DO+やワープロ専用機文豪ミニ5SCに搭載された。[1]
その他のV30系
[編集]- V30HL (μPD70116H) - 5Vで16MHz、または3Vで8MHz動作可能な、V30の高速・省電力版。省電力機能に優れ、周辺チップの消費コントロール機能を持つ。その特長を生かし、コンパクト型デスクトップのPC-9801UF・PC-9801UR、ノート型のPC-9801NV・PC-9801NLに搭載された。クロックを停止・再開することにより、動作を停止・復帰できる。V20上位互換のV20HL (μPD70108H) もある。
- V30MT - 組み込み用のIPコア。V30MXの小型・省電力版。V30HL,V30MXとソフトウェア互換[9]。
- V30MX - 組み込み用のIPコア。V30HLの上位互換品。V30HLのアドレスバス・データバスマルチプレクスを分離し2クロック/バスサイクルを実現[9]。33MHz,4.3MIPS。V33系同様、8080エミュレーションはない[10]。
- V30MZ - 組み込み用のIPコア。1クロック/バスサイクル、66MHz動作、0ウェイトで35MIPSの性能。携帯ゲーム機ワンダースワンにも、カスタムされたものが搭載された。V30HL,V30MXとソフトウェア互換。V33系同様、8080エミュレーションはない[10]。
- V30MZC - 組み込み用のIPコア。V30MZにキャッシュメモリ4kiBを追加し、50MHzで20MIPSの性能。キャッシュヒット時は1クロック/バスサイクル、外部アクセスは4クロック[9]。
- V35 (μPD70330,μPD70332) - V30に周辺I/Fを追加した組み込み用途向けプロセッサ。μPD70330はμPD70332からROMを取り除いたもの。
- V35+ (μPD70335) - V35のDMA転送速度を改善し、高速化したもの。
- μPD9002 - V30(一部の命令[11]が削除された下位互換)モードとZ80上位互換の動作モードを持つ。PC-88VAに搭載された[12]。開発当初はV51とされていたが、μPD9002に決まるとともに撤回され、V51はμPD70280(後述)の呼称となった。
V40・V50
[編集]V20・V30をコアに、8086用周辺チップを集積したマイクロコントローラ。既存の8086応用機器にて、複数のチップをまとめて置き換える用途向け。PC-98LTやPC-98HAで使用されている。内蔵されている周辺回路は以下の通り。
- クロックジェネレータ
- 入力されたクロックの周波数を2分周し、CPU内部と外部それぞれへ供給する。
- プログラマブル・ウェイト制御ユニット
- 速度の遅いI/Oやメモリを使用する際に読み書きのバスタイミングを延長するためのもの。
- リフレッシュ制御ユニット
- DRAMを使用する際、自動的にリフレッシュを行ってくれるもの。
- タイマ/カウンタユニット(μPD71054サブセット)
- タイマ及びカウンタ。16ビットのカウンタを3本内蔵している。
- シリアル制御ユニット(μPD71051サブセット)
- 調歩同期方式のシリアル通信を行う。
- 割り込み制御ユニット(μPD71059サブセット)
- 8本までのハードウェア割り込みを調停し、一つずつCPUに伝える。外部にμPD71059を追加してカスケード接続とすることもできる。
- DMA制御ユニット(μPD71071[13]サブセット)
- 4チャンネルのDMAユニット。これにより高速にI/O-メモリ間の転送を実現できる。
なおV40・V50をベースとしたカスタムCPUもいくつか存在しており、PC-88VAに搭載されたμPD9002(V50にZ80エミュレーション機能を追加したもの)などが代表的な存在である。
- V40 (μPD70208) - V20に8086ファミリ互換の周辺I/Fを追加した組み込み用途向けプロセッサ。コアをV20HLにしたV40HL (μPD70208H)もある。
- V41 (μPD70270) - V40HLと同様のコンセプトで、V20HLにPC/XT向けの周辺回路を内蔵したもの。海外では、実際にこれを使ったPC/XT互換機も出た。
- V50 (μPD70216) - V30に8086ファミリ互換の周辺I/Fを追加した組み込み用途向けプロセッサ。コアをV30HLにしたV50HL (μPD70216H)もある。HANDY98ことPC-98HAで使われた。
- V51 (μPD70280) - V41と同様で、コアがV30HLのもの。μPD9002とはコアがV30系であり周辺回路を内蔵している以外の関係はない。
- V53 (μPD70236) - V50のコアをV33に変更したもの。
- V53A (μPD70236A) - V53のコアをV33Aに変更したもの。
- V55PI (μPD70433) - 80186相当の命令セットとペリフェラルを集積したプロセッサ。
FPU
[編集]
- V20・V30用数値データプロセッサ (μPD72091 V30NDP) - 数値演算コプロセッサ(FPU)。Intel 80188・80186を接続した際の動作は考慮はされていないため、これらを接続した際には8087とは一部の動作が異なる。これを回避するには別途補助回路が必要である[1]。NECにて対応するゲートアレイが販売されている。なお、V30を搭載したPC-9800シリーズでは本コプロセッサは採用されず、タイミング等を調整した上で8087を接続する手法が取られていたため、V30を理想的なタイミングで動作させておらず、パフォーマンスは理想条件より劣る。
周辺
[編集]- その他、ファミリLSIがある。オリジナルがNMOS品(例 i8255A)でもバイポーラ品(例 i8284A)でもCMOS化されている。型番はi8251A→μPD71051、i8255A→μPD71055など、8080・8086ファミリLSIに倣ったものとなっている。
V60系
[編集]独自仕様の32ビットマイクロプロセッサとして開発された。32ビットレジスタを32本持ち、全く独自の命令セットであり、非常に豊富なアドレッシングモードを持った直交性の高いアーキテクチャが特徴である。また、複数のCPUを並列接続して相互に監視することで、フォールトトレラントシステムを構成することができた。初めて浮動小数点演算ユニットを1チップに内蔵した。内部32ビット構成、外部16ビットバスのV60と、内部構成・外部バスともに32ビット構成のV70・V80がある。高信頼性システムを構成できる利点を活かしてNTTの交換機に使用された。一部、業務用ゲーム基板(例 セガ・システム32)のCPUとしても採用されていたが、その採用理由は「市場にほとんど出回っていないCPUのため、逆アセンブルや違法コピーの対策になる」という、いささか後ろ向きなものだった[12]。またV60・V70にはV30エミュレーションモードがあり、旧来のソフトウェア資産も継承可能となっている。日本インターメトリックスからのコンパイラInterC V60がV60・V70をサポートしていた[14]。
- V60 (μPD70616) - 内部32ビット、外部バス16ビットの32ビットCPU。全く独自の命令セットであり、非常に豊富なアドレッシングモードを持った直交性の高いアーキテクチャが特徴である。また、初めて浮動小数点演算ユニットを1チップに内蔵した。V30をエミュレートするモードも持ち、ソフトウェア資産の継承も考慮している。また、監視モードを持ち、2基のV60を組み合わせてエラー検出システムを、3基以上を組み合わせて多数決によるフォールトトレラントシステムを構成することが可能であり、高信頼性システムへの応用も目指した。NECからは、PC-9800シリーズ用拡張ボードとセットでUNIXが販売されていた。セガの業務用基板System32やModel1で使用された。他のメーカーでも海賊版ゲーム基板対策で使用された。文豪ミニ5SCではアウトラインフォント展開プロセッサとして採用されている[1]。TRONCHIPと類似性があると指摘する者もいるが、レジスタの本数の違い、命令長がバイト可変長か16ビット単位の可変長かなど相違点は多く、オペランド指定の直交性とか典型的なCISCであることなどの類似点はこの2者に限られるものではない。
- V70 (μPD70632) - V60を完全32ビット化したCPU。ITRON等のRTOSが実装された。NTTの交換機に組み込まれたほか、業務用ゲーム基板に搭載されたり、パーソナルコンピュータX68000用の拡張CPUボードに搭載されるといった応用例がある。H-IIAロケットの誘導制御用コンピュータにも使われている[1]。
- V80 - V60/V70の上位機種にあたり、命令/データキャッシュを各1K バイト内蔵、7段パイプライン制御方式、分岐予測機構、仮想記憶管理機構、数値演算プロセッサμPD72691専用バスを持ち、集積度93万トランジスタ、放熱器付き280ピンPGAパッケージ[15]。CISC系としては最後のVシリーズ。V30エミュレーション機能を削除。一般にはほとんど出回らなかった。これ以降のNECの32ビット以上のCPUはRISCの、MIPSアーキテクチャのVRシリーズと、後述のV800シリーズに移行。
V810系
[編集]1990年代に入って、V810 (μPD70732) がリリースされた。型番上はVが付いているが、直接のつながりはない全く別のアーキテクチャに基づくRISCである。Hennessy-Patterson本に見られるような典型的な5段パイプライン構成を取る。
既存組み込み用CPUシリーズの代替あるいは後継機種として組み込み用途に使用されている。また、V810は日本電気ホームエレクトロニクス製の家庭用ゲーム機PC-FX、任天堂製のバーチャルボーイ、BrainPad TiPOにも用いられている。
V830はPDAなどに適したV810/V850よりも高性能なCPUで、NECのワープロ「文豪 JXS300」(1997年発売)などに搭載されていたが、他はあまり採用例が無く、当のNECでも自社のPDAにはV830を採用していなかった。
V850はルネサスエレクトロニクス製半導体製品のうち、例えば記録型DVD/HD DVD/BDドライブ向けチップセットであるSCOMBOシリーズのCPU、あるいはSCOMBOシリーズに属するワンチップコントローラの内蔵CPUコアとして提供されており、これらはソニーオプティアークやパイオニアといったメーカーによる光学ドライブ各種に採用され大量に使用されている。ほかにも家電やFA機器のサーボモーター、乗用車用の内燃機関や各種駆動用モーター制御、その他の各種多様なオペレーションに人知れず大量採用されている。
一部アセンブラの書式がV60 - V80に似せてあり、従来V60 - V80向けソフトウェアを開発していたプログラマが学習しやすいように配慮されていた。
VRファミリはPDAなどに適した高性能なMIPS系CPUで、1996年発売のゲーム機・NINTENDO64に採用されて1000万個単位で量産され、1997年には競合機セガサターンに搭載されたSHマイコンの出荷量を上回り、MIPSアーキテクチャのCPUは組み込み向けRISC CPUとして世界第1位の出荷量を誇った。またPDA向けとしても、NECのPDA「モバイルギア」シリーズのほか、カシオ計算機が2001年に発売したPDA「カシオペア ラジェンダ BE-500」(VR4131)などでも採用されていた。
脚注
[編集]- ^ a b c d e f 月刊アスキー別冊 蘇るPC-9801伝説 永久保存版 第2弾 2007年4月9日初版 「NEC V30開発秘話」 (ISBN 978-4-7561-4883-4)
- ^ 8086/8088を単純にCMOS化した製品はNEC製には存在しない
- ^ μPD70116データシート ドキュメントNo. IC-6660FおよびμPD70108データシート ドキュメントNo. IC-1827B・IC-6659D。この記述はμPD70108H/μPD70116Hデータシート ドキュメントNo. IC-3552Aからは削除されている。
- ^ NECのアセンブラ「インターツール」(RA70116-I)などの他、PC-88VAのOS「PC-Engine」内蔵のデバッガがVシリーズのニーモニックだった
- ^ 一応、V30と80286の時点では、おのおのの拡張命令のコードはかち合わないようになっていたが、80386では一部の拡張命令(MOV CR0など)がV30の動作の異なる拡張命令(ADD4Sなど)とかち合っている。そのため、そのような命令を用いたV30用ソフトウェアは80386では誤動作する
- ^ V30 16-BIT MICROPROCESSOR
- ^ PC-9800シリーズ用V33アクセラレータはあった(拡張スロットに挿入するボード型のエム・エス・アイ製MIG98およびM3)
- ^ 16ビット Vシリーズ ユーザーズ・マニュアル 命令編 (ドキュメントNo. U11301JJ5V1UMJ1) 1ページおよび図 1-1
- ^ a b c SEMICONDUCTOR SELECTIONGUIDE April 1999 (ドキュメントNo. X10679EJHV0SG00(17th wdition))
- ^ a b V30MZユーザーズ・マニュアル(暫定) (ドキュメントNo. A13761JJ1V2UM00)
- ^ 80186互換のINM/OUTM(INSB/INSW/OUTSB/OUTSWに相当)とV30の特徴のINS/EXT(ビット操作命令)の4種の命令
- ^ a b “もう一度CPUについて考えてみよう”. archive.org (1999年5月14日). 2021年9月1日閲覧。
- ^ “µPD71071 DMA Controller”. p. 940(5g1). 2024年2月20日閲覧。
- ^ インターフェース 1993年12月号, p. 65.
- ^ インターフェース 1989年3月号, p. 308.