NEC Vシリーズ
NEC Vシリーズは、日本電気(NEC、現在はルネサス エレクトロニクスに分離)が製造したマイクロプロセッサ・マイクロコントローラのシリーズである。
数字が小さい方は、16ビットの8086互換のシリーズである。数字が大きい方(V60以上)は、独自仕様の32ビットプロセッサのシリーズである。V810系列のRISCプロセッサも、その名前からVシリーズとされるが、直接のつながりはない。名称のVはVLSIの頭文字を取ったもので、Victoryの意味も込められている[1]。
MIPSアーキテクチャに基づきNECが開発した、VRシリーズと呼ばれるプロセッサ群もあるが、これらはVシリーズとされない。
目次
総論
日本電気(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のen: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に不足していたいくつかの命令が補完され、これを使用することで、8086より制限が少なく、より直交性の高い命令を利用可能である。その他に、ビットストリングを操作する命令なども追加されていた。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系へ移行した。
また、μPD8080AF(μCOM-80F)を元にした、8080エミュレーション機能を実装していたのも特徴の一つである。1980年代後半には、一部工業高校などで、V30搭載型PC-9800シリーズにCP/MのBDOSに相当する部分をMS-DOSのデバイスドライバとして実装、またCP/Mエミュレータを搭載し、8ビットCPUによるアセンブラ実習に使用されていた。
80186とはバイナリ上位互換が保たれていたが、インテルの方針転換によってセカンドソースが許可されなくなったため、80286以降のCPUではV30で拡張された命令との互換性が保てなくなった。
用語・レジスタ表記など
V30と8086とは用語やレジスタの表記も異なる。相違点は以下の通り(同一名称のレジスタは省略)。
8086 | V30 |
---|---|
AX,BX,CX,DX | AW,BW,CW,DW |
CS | PS |
DS | DS0 |
ES | DS1 |
IP | PC |
SI | IX |
DI | IY |
Flags | PSW |
マニュアルの表記はV30のニーモニックとレジスタであるが、実際に用いるにはV30のニーモニックに対応したアセンブラでないと意味がない。マニュアルには8086とVシリーズの命令の対応表や、8086用のアセンブラをV30拡張命令に対応させるためのマクロ定義も掲載されている。
8086 | V30 |
---|---|
ミニマムモード Minimum mode |
小規模モード Small mode |
マキシマムモード Maximum mode |
大規模モード Large mode |
この他、V33系を除いてフラグレジスタ(PSW)の最上位ビットが未定義(8086/80186でも80286以降でも0)からMDフラグになっている。16ビットモードでは1に固定であり、8080エミュレーションモードでは0である[6]。8080エミュレーションのないV33系では明示的に1である。8086/80186では0であるため、このフラグによりVシリーズか8086/80186かを区別できる。
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に搭載された。開発当初は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サブセット)
- 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の交換機に使用された。一部、業務用ゲーム基板のCPUとしても採用されていたが、その採用理由は「市場にほとんど出回っていないCPUのため、逆アセンブルや違法コピーの対策になる」という、いささか後ろ向きなものだった。またV60・V70にはV30エミュレーションモードがあり、旧来のソフトウェア資産も継承可能となっている。
- 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。TRONCHIPの開発の影響を受けているテンプレート:要出典。ITRON等のRTOSが実装された。NTTの交換機に組み込まれたほか、業務用ゲーム基板に搭載されたり、パーソナルコンピュータX68000用の拡張CPUボードに搭載されるといった応用例がある。H-IIAロケットの誘導制御用コンピュータにも使われている[1]。
- V80 - CISC系としては最後のVシリーズ。V30エミュレーション機能を削除。一般にはほとんど出回らなかった。これ以降のNECの32ビット以上のCPUはRISCの、MIPSアーキテクチャのVRシリーズと、後述のV800シリーズに移行。
V810系
1990年代に入って、V810がリリースされた。型番上はVシリーズの一員とされたが、技術的なつながりはなく、全く別のアーキテクチャに基づくRISCである。Hennessy-Patterson本に見られるような典型的な5段パイプライン構成を取る。
既存組み込み用CPUシリーズの代替あるいは後継機種として組み込み用途に使用されている。また、V810は日本電気ホームエレクトロニクス製の家庭用ゲーム機PC-FX、任天堂製のバーチャルボーイ、BrainPad TiPOにも用いられている。
V850シリーズはルネサスエレクトロニクス製半導体製品のうち、例えば記録型DVD/HD DVD/BDドライブ向けチップセットであるSCOMBOシリーズのCPU、あるいはSCOMBOシリーズに属するワンチップコントローラの内蔵CPUコアとして提供されており、これらはソニーオプティアークやパイオニアといったメーカーによる光学ドライブ各種に採用され大量に使用されている。ほかにも家電やFA機器のサーボモーター、乗用車用の内燃機関や各種駆動用モーター制御、その他の各種多様なオペレーションに人知れず大量採用されている。
一部アセンブラの書式がV60 - V80に似せてあり、従来V60 - V80向けソフトウェアを開発していたプログラマがプログラムを学習しやすいように配慮されていた。
脚注
テンプレート:Reflist- ↑ 1.0 1.1 1.2 1.3 1.4 1.5 月刊アスキー別冊 蘇る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では誤動作する
- ↑ 8080エミュレーションモードではこのフラグのセットができるため、このモードではMDフラグでのモードの確認はできない
- ↑ PC-9800シリーズ用V33アクセラレータはあった(拡張スロットに挿入するボード型のエム・エス・アイ製MIG98およびM3)
- ↑ 16ビット Vシリーズ ユーザーズ・マニュアル 命令編 (ドキュメントNo. U11301JJ5V1UMJ1) 1ページおよび図 1-1
- ↑ 9.0 9.1 9.2 SEMICONDUCTOR SELECTIONGUIDE April 1999 (ドキュメントNo. X10679EJHV0SG00(17th wdition))
- ↑ 10.0 10.1 V30MZユーザーズ・マニュアル(暫定) (ドキュメントNo. A13761JJ1V2UM00)
- ↑ 80186互換のINM/OUTM(INSB/INSW/OUTSB/OUTSWに相当)とV30の特徴のINS/EXTの4種の命令