諸概念の迷宮(Things got frantic)

歴史とは何か。それは「専有(occupation)=自由(liberty)」と「消費(demand)=生産(Supply)」と「実証主義(positivism)=権威主義(Authoritarianism)」「敵友主義=適応主義(Snobbism)」を巡る虚々実々の駆け引きの積み重ねではなかったか。その部分だけ抽出して並べると、一体どんな歴史観が浮かび上がってくるのか。はてさて全体像はどうなるやら。

【事象や言語ゲームの地平線としての絶対他者】「コンピューター・アーキテクチャーと経済のモデルの合流」について。

メインフレーム / オフコン全盛時代の終焉は、ある意味マイクロプロセッサーの登場によってもたらされたのです。

f:id:ochimusha01:20180625142600j:plain

マイクロプロセッサ(MicroProcessor) - Wikipedia

コンピュータなどに搭載される、プロセッサを集積回路で実装したもの。小型・低価格で大量生産が容易であり、コンピュータのCPUの他、ビデオカード上のGPUなどにも使われている。また用途により入出力などの周辺回路やメモリを内蔵するものもあり、一つのLSIでコンピュータシステムとして動作するものを特にワンチップマイコンと呼ぶ。マイクロプロセッサは一つのLSIチップで機能を完結したものが多いが、複数のLSIから構成されるものもある。
*「CPU」、「プロセッサ」、「マイクロプロセッサ」、「MPU」は、ほぼ同義語として使われる場合も多い。本来は「プロセッサ」は処理装置の総称、「CPU」はシステム上で中心的なプロセッサ、「マイクロプロセッサ」および「MPU(Micro-processing unit)」はマイクロチップに実装されたプロセッサを指す。
f:id:ochimusha01:20180625135316p:plain
当初のコンピュータにおいて、CPUは真空管トランジスタなどの単独素子を大量に使用して構成されたり、集積回路が開発されてからも、たくさんの集積回路の組み合わせとして構成されてきたが製造技術の発達、設計ルールの微細化が進むにつれてチップ上に集積できる素子の数が増え、一つの大規模集積回路にCPU機能を納めることが出来るようになったのであった。
http://apocalypsejohn.com/wp-content/uploads/ti-eixe-symbei-den-ebazan-tafoplaka-sobietikoys-ypologistes.jpg

汎用のマイクロプロセッサとして最初のものは、1971年にインテルが開発したIntel 40041971年11月15日発表)である。テッド・ホフによる基本的なアイディアと、嶋正利による論理設計とフェデリコ・ファジンによる回路・マスク設計による、最初期のマイクロプロセッサとして知られるが、同時代には以下の様なマイクロプロセッサと認められるLSIも開発されている。

f:id:ochimusha01:20180625141855j:plain

CADCMP944、米海軍1970年)…1968年にギャレット・エアリサーチ社がF-14飛行制御用デジタルコンピュータの開発を要請されてCADC (Central Air Data Computer) を設計。これは1970年に設計を完了したMP944というMOSベースのチップセットから成るマイクロプロセッサで、従来の機械装置より小型で信頼性が高く、初期のF14 トムキャット戦闘機に採用された。米海軍は軍需用品として民間への商用販売などを1997年まで禁止していたため、 は最近までほとんど知られていなかった。

f:id:ochimusha01:20180625142226j:plain

TMX1795Texas Instruments、1970年〜1971年)…8-bitマイクロプロセッサー8008 のベースとなった試作品。

f:id:ochimusha01:20180625142101j:plain
TMS 1000Texas Instruments)…マイクロコントローラに近い構成のLSIで、1971年9月17日に電卓向けプログラムを内蔵した TMS1802NC をリリース。

f:id:ochimusha01:20180625143044j:plain

μPD707・708NEC、1971年12月サンプル出荷開始)…半導体プロセスの製造効率から2チップ構成だが機能的にはマイクロプロセッサでμCOMシリーズの源流である。シャープが日本コカ・コーラへ供給する仕向け機器に用いられた。

f:id:ochimusha01:20180625143232j:plain
4004は当初電卓用に開発された、性能が非常に限られたものであったが、生産や利用が大幅に容易となったため大量に使われるようになり、その後に性能は著しく向上し、価格も低下していった。この過程でパーソナルコンピュータやRISCプロセッサも誕生した。ムーアの法則に従い、集積される素子数は増加し続けている。現在ではマイクロプロセッサは、大きなメインフレームから小さな携帯電話や家電まで、さまざまなコンピュータや情報機器に搭載されている。

f:id:ochimusha01:20180625143529j:plain

まるで「プトレマイオスの天動説」でも聞かされてる様な目眩を感じます。
http://i1.wp.com/lifememo.jp/wp-content/uploads/2016/01/trajectory.gif?resize=500%2C290

その一方では「コンピューターが使用可能なリソースの仮想化」の歴史自体が20世紀一杯は錯綜に満ちていたりもするのです。

仮想記憶(Virtual Memory) - Wikipedia

仮想記憶技術が開発される以前、1940年代から1950年代のプログラマは2レベルの記憶装置(主記憶あるいはRAMと、磁気ディスク装置あるいは磁気ドラムメモリといった二次記憶)を直接管理する必要があり、大規模プログラムではオーバーレイなどの技法が使われていた。従って仮想記憶は、主記憶を拡張するためだけでなく、そのような拡張をプログラマが可能な限り容易に扱えるように導入された。マルチプログラミングやマルチタスクを実装した初期のシステムは、メモリを複数のプログラムに分割するのに仮想記憶を使っていない。例えば初期のPDP-10はレジスタを使ってマルチタスクを実現していた。

ページング方式はマンチェスター大学のAtlas上で開発された。1万6千ワードの磁気コアメモリの一次記憶と9万6千ワードの磁気ドラムメモリによる二次記憶を制御するものである。最初のAtlasは1962年に稼働開始したが、ページングのプロトタイプは1959年に開発されている[4](p2)[5][6]。なお、ドイツの初期の情報工学者 Fritz-Rudolf Güntsch (後に Telefunken TR 440 というメインフレームを開発)は 1957年の博士論文 Logischer Entwurf eines digitalen Rechengerätes mit mehreren asynchron laufenden Trommeln und automatischem Schnellspeicherbetrieb(複数非同期ドラム装置と自動高速メモリモードを持つデジタル計算機の論理概念)で仮想記憶のコンセプトを発明していたと言われている。

1961年、バロースはセグメント方式で仮想記憶をサポートした世界初の商用コンピュータ B5000 をリリースした。

1965年にMITが開発したMultics以降、仮想記憶は本格的に採用され始めた。

コンピュータ史上の多くの技術と同様、仮想記憶にも様々な曲折があった。安定した技術と見なされるまで、仮想記憶の様々な問題点を解決しようとするモデルや理論が開発され実験がなされた。仮想アドレスを物理アドレスに変換するハードウェア機構の開発も必然的だったが、初期の実装ではそれによってメモリアクセスが若干遅くなった。システム全体を対象とするアルゴリズム仮想記憶)は従来のアプリケーション単位のアルゴリズムオーバーレイ)よりも非効率ではないかという懸念もあった。1969年、商用コンピュータでの仮想記憶に関する論争は事実上終結した。David Sayre 率いるIBMの研究チームが仮想記憶システムが手動制御システムよりも優位にあることを示したのである。

1970年、IBMはSystem/370シリーズのOSであるDOS/VS、OS/VS1、OS/VS2(後のMVS)で仮想記憶をサポートした。OS/VS1はシングルタスクの仮想記憶で、マルチタスクには従来通りユーザーによるマルチプログラミングが必要であったが、OS/VS2はマルチタスクの仮想記憶(複数の仮想アドレススペース)をオペレーティングシステムの機能としてサポートした。以後の各社メインフレームでは仮想記憶が一般的となる。

ニコンピュータで初めて仮想記憶を導入したのは、ノルウェーのNORD-1である(1969年)。1976年、DECのミニコンピュータ VAXシリーズのOSであるVMSで仮想記憶をサポートした。

しかし、1980年代の初期のパーソナルコンピュータでは仮想記憶は採用されていない。これは当時のマイクロプロセッサの性能や機能の問題もあるし、個人用のコンピュータに仮想記憶が必要になると見なされていなかったという面もある。当時の主流はバンク切り換えによるメモリ増設だった。x86アーキテクチャで仮想記憶が導入されたのは、Intel 80286 によるプロテクトモードが最初だが、セグメント単位のスワッピングはセグメントが大きくなると性能が悪くなるという問題があった。Intel 80386 では既存のセグメント方式の下層にページング方式を実装し、ページフォールトによるページングが可能となった。しかしセグメントディスクリプタのロードは時間のかかる処理だったため、OS設計者はセグメントを使わずページングだけを使うようになっていった。仮想記憶が導入されたのは、OS/21987年)、Microsoft Windows 3.0 (1990年)、MacintoshのSystem 7(1991年)、Linuxカーネル 0.11+VM1991年)などが最初である。

1950年代から1960年代にかけての黎明期のコンピューターは、大変高価なものだった。そのため、このコンピューターを多くのユーザーと共用する方法がいろいろと考えられた。そのひとつが「バッチ」だ。ひとつひとつの処理単位 (ジョブ)が、順次実行される処理形態。この方法では、前の処理が終わらなければ、次の処理に移ることはできない。これでは不便だと言うことらになり、生まれたのが、「タイムシェアリング」だ。

  • タイムシェアリングとは、1台のコンピューターのCPU処理時間を極めて短い時間単位で分割し、複数のユーザーに順次割り当て、見かけ上複数のユーザーが同時にコンピューターを利用できるようにすることでコンピューターの共用を実現しようとした。1961年、IBM 709でタイムシェアリングが実装され、さらに使いやすいシステムの実現を目指し、MITでMULTICS (Multiplexed Information and Computing Service)プロジェクトがスタートとした。MULTICSは必ずしも成功とは言えなかったが、この考えは受け継がれ、後のUNIXへとつながる。

  • さて、分割したCPUの処理時間は、ユーザーにとって独立した個別のCPUと見做される。ならば、これにユーザー個別のオペレーティング・システムを動かせるように発展させることで、今でいう仮想化が生まれた。

  • 1967年、IBM System/360モデル67で実装されたCP-67/CMSが商用ベースでは、初めてのモノとされている。また、その時始めて、Virtual Machine(VM)という言葉が使われた。

このようにして「マシンの仮想化」なる概念が誕生した。

1964年以前 (分散)

メインフレームが生まれる1964年以前、コンピューターは業務にあわせた専用機として存在していた。企業は、業務毎にその専用機を使わなくてはならず、分散システムの時代。また、ハードウェアは高価であり、複数の機器を利用しなければならず、その運用負担やコストの増大は課題となってた。

1964年(集中)

この年に、メインフレームの先駆けであるIBM System/360が誕生した。「汎用機」とも呼ばれ、異なる業務もこれ一台で対応できる万能機としてその存在感を示した。浮動小数点演算も可能であり、事務計算ばかりでなく、技術計算もこれ一台でこなすことができた。ただし、異なる業務での共用は、当初はバッチ処理。その後、タイムシェアリング使えるようになる。ただし、同じOS上に複数のアプリケーションを稼働させる処理形態をとっていた。

1967年 (集中・分割)

仮想化の技術は、この年以前からもいろいろと研究されていたが、1967年 IBM System/360モデル40用に研究用の仮想化OSとしてCP-40が開発され、これをベースにSystem/360モデル67用にCP-67が開発され始めて商用製品として発売された。1972年 仮想記憶をサポートしたSystem/370シリーズ用にCP-370が開発され本格的に普及するようになった。

この仕組みにより、高価であったハードウェアをユーザー個別の専用機として「分割」することで、利用の自由度を高め、見かけ上のマシン・コストの削減を図ろうということが、この当時の仮想化の目的となっていた。

1980年代〜 (分散)

安価な小型のコンピューターの出現により、何でもメインフレームの時代から、ダウンサイジング、分散の時代へと移っていった。メインフレームほどの能力や機能はいらない、その代わり、集中システムであるメインフレームの運用上の制約を受けることなくもっと自由に使いたいとの思惑から、高価なメインフレームを仮想化で「分割」するのではなく、低価格の専用で使えるハードウェアを購入した方が便利であるという考え方が広がり、「分散」がすすんでいった。その一方で、企業が抱えるコンピューターの台数は増大し、TCOの増大を招くこととなった。

1999年(集中・分散)

この前年の1998年にVMware社が設立され、翌年の1999年に初めての製品、VMware Workstationが発売されました。x86ベースの仮想化ソフトウェアで、これ以前も研究目的では存在していたが、商用ベースでは初めてのもの。当時は、WindowsLinuxに対応し、主にソフトウェア開発・評価・テストを目的とするものだった。その後、機能も拡張され適用範囲が広がってゆく。また、VMware以外にも多くの仮想化ソフトウェアが出現し、現在に至っている。

この時代の仮想化は、安価な物理マシンの増大によりTCOが増大、そのことが企業のIT予算を圧迫するに至り、仮想化により物理マシンを「集約」することでTCOを削減したいという思惑から仮想化が広く使われるようになった。

BIOSの歴史

BIOSIBM PC(1981年)と共に登場し、「IBM PC互換機」が普及した事によりパソコンの標準ファームウェアとなりました。

以降、ハードウェアもBIOS自身も当時とは全く異なる姿になるまで大きく拡張・変更され続けていますが、アプリケーション互換性を保たなければならなかった過去の経緯から、未だBIOSは大変古い仕組みを使い続けており、機能の実装に大きな制約があります。

具体的に一番大きい制約は、リアルモード(CPUがオリジナルのIBM PCに搭載されていた8086をエミュレートするモード)で動作しているということです。これにより、一度にアクセスできるデータサイズは64KBに制限され、メモリ空間全体でも通常1MBまでしかアクセス出来ません。

プロテクトモードやロングモード(64bitモード)でOSを走らせるためには、CPUのモード切替の作業が必要になり、ブートローダやOSの構造はやや複雑になります。

また、BIOSがハードディスクからロードするブートローダのサイズも決められており、既に現代のブートローダはここに入りきらないサイズに達してしまい、「多段ブート」と呼ばれる、ブートローダが更に大きなブートローダをロードするという対処療法的な実装がなされています。USBやBluetooth、LANやWiFiなど、最近のハードウェアのBIOSからの利用もなかなか困難になってきています。

このような状況で「古い仕組み」と認識されつつも、ずっと根本的な変更が加えられぬまま放置されてきたBIOSですが、最近になって新たに問題が発生し、新しい仕組みである「UEFI」への移行が進みつつあります。

現在BIOS搭載機上のHDDで使われている「MBR」と呼ばれるパーティーションテーブルですが、これは2TBまでのサイズしかサポートしておらず、新たなパーティーションテーブルと、新たなパーティーションテーブルからブートする仕組みが必要になったのです。

EFIの歴史

EFIは、1990年代にIntelとHPがIA64アーキテクチャを設計した時に、IA64とIA32両方で使えるレガシーフリーファームウェア仕様を作ったのが始まりで、当初IA32では必要性が薄く殆ど採用されなかったのに対し、IA64にはEFIしかファームウェア標準が無いため初めてのIA64サーバ・ワークステーションリリース時から採用されています。

Appleは例外で、Intel Mac1992年〜)はリリース時からEFIを搭載しています。但しこれはEFI 1を基にし、OSXに合わせて仕様をやや変更しているようです。

EFIはその後Unified EFI Forumへ権利を移管してUEFIと呼ばれるようになり、2.x系の仕様がリリースされました。IA32(Intel 64含む)でも、2TB以上のHDDが普及すると共に新しいハードウェアで採用が本格化してきています。

また、Windows RTタブレットやARMサーバにおいて、UEFIを採用したARMマシンも出てきているようです。

レガシーフリーと先に書いた通り、IA32におけるEFIはプロテクトモードまたはロングモードで動作するためメモリ空間の制約を持たず、GPTと呼ばれる新たなパーティーションテーブルを採用して2TB以上のHDDをサポートし、NICやUSBなど様々なデバイスをサポートしています。OSのブートローダのサイズにも制限がありません。更に、レガシ互換機能としてBIOSブートもサポートされます。

コンピューター・リソースへのアクセス方法がフラットな単一アドレスに集約されるまで、これだけの歳月と歴史が必要だったという次第。そうした思考様式と「試金石の概念導入紀元前7世紀頃の地中海沿岸とオリエント地方に端を発する人文学上の仮想化概念すなわち貨幣経済)」の合流が21世紀まで持ち越しとなったのも仕方がない?

こうして両者の認識は「操作者言語ゲームとしてのコンピューター・アーキテクチャーや経済モデルの外側に仮想化された形で追い出された「人間そのもの」)」が「操作コンピューター・アーキテクチャーや経済モデルが受容可能な体裁を整えた操作者の「観想」体系)」を通じて「世界そのもの操作者の「操作」に応じた影響を受容する「コンピューター・アーキテクチャーにとっての接続デバイス群」や「経済モデルにとっての経済そのもの」)」にアクセスするフラットな言語神秘学的空間に統合される道を辿る事になったのです。もちろん、まだ実際の完全に実用的な「合流」は遥か先の未来の事となりそうですが…

そしてこの世界観において人類は改めて「操作者側インテリ=ブルジョワ=政治的エリート階層)」と「バイスプロレタリア階層(労働者・小作農)や組織に管理職として組み込まれるホワイトカラー階層)」に二分される展開を迎える?