アカウント名:
パスワード:
x64版Windowsで64bitコード←→32bitコード間の呼び出しができない(thunkがない)のは、Itanium版Windowsの仕様に合わせたから。そのせいで64bitコードと32bitコードをシームレスに実行できるAMD64のメリットがWindowsにおいては全く生かされていない。
言わばItaniumの負の遺産。後方互換性にこだわるMicrosoftのことだから、128bit版Windowsが出るまでこの仕様に悩まされそうorz
Windows NTでセグメントが使えない(少なくともユーザーモードのCプログラムから隠蔽されている)のがRISCプロセッサの負の遺産だとは思わないけどなあ。それは今だから言えることかもしれないけど、128bit版Windowsが出る頃になったらWOW64の仕様についてもやっぱり同じような感想を持つんじゃないかな。
いや, UNIXはセグメントありますよ. 例えば初期の VAX-11 [roguelife.org]のころからセグメンテーション機構を利用していますし, セグメンテーションバイオレーションなんてエラーはセグメント機構を使ったメモリ保護が無ければ出ようがないでしょう.
それに, セグメントの評判を落としたことにインテルの責が無いとは言えないでしょう. 386登場以前は1セグメントで取り扱えるアドレス空間が64k(16bit)に限られていて, ちょっとプログラムの規模が大きくなるとプロセス内でセグメントを動的に設定しなおすというアクロバティック
> i8086が作られた当時の64KBのセグメントの大きさは、いまの感覚でいえば4GBに相当します。
それは無いよ!!
ツッコムなら>マイクロコードの厚化粧の8800や68000とは対照的です。こっちだろう
#その後ゴテゴテとモードや命令を上塗りせざるを得なかった86を棚に上げて元々素地の良い68kを厚化粧とは聞き捨てならん
より多くのコメントがこの議論にあるかもしれませんが、JavaScriptが有効ではない環境を使用している場合、クラシックなコメントシステム(D1)に設定を変更する必要があります。
長期的な見通しやビジョンはあえて持たないようにしてる -- Linus Torvalds
64bit版Windowsのタコな仕様はItaniumのせい (スコア:2, 興味深い)
x64版Windowsで64bitコード←→32bitコード間の呼び出しができない(thunkがない)のは、Itanium版Windowsの仕様に合わせたから。
そのせいで64bitコードと32bitコードをシームレスに実行できるAMD64のメリットがWindowsにおいては全く生かされていない。
言わばItaniumの負の遺産。
後方互換性にこだわるMicrosoftのことだから、128bit版Windowsが出るまでこの仕様に悩まされそうorz
Re: (スコア:0)
Windows NTでセグメントが使えない(少なくともユーザーモードのCプログラムから隠蔽されている)のがRISCプロセッサの負の遺産だとは思わないけどなあ。
それは今だから言えることかもしれないけど、128bit版Windowsが出る頃になったらWOW64の仕様についてもやっぱり同じような感想を持つんじゃないかな。
Re: (スコア:0)
現在でもグーグルのNaClなどで活用されていますから、RISCプロセッサというよりもセグメントのないOSつまりUNIXの負の遺産ですね。
8086で、セグメントについての無知ゆえの勘違い思い込みからトラウマになった人が影響力を持ったからかもしれない。MSは一役買ってるな。DRとインテルは無罪。
Re: (スコア:3, 興味深い)
いや, UNIXはセグメントありますよ. 例えば初期の VAX-11 [roguelife.org]のころからセグメンテーション機構を利用していますし, セグメンテーションバイオレーションなんてエラーはセグメント機構を使ったメモリ保護が無ければ出ようがないでしょう.
それに, セグメントの評判を落としたことにインテルの責が無いとは言えないでしょう. 386登場以前は1セグメントで取り扱えるアドレス空間が64k(16bit)に限られていて, ちょっとプログラムの規模が大きくなるとプロセス内でセグメントを動的に設定しなおすというアクロバティック
Re: (スコア:0)
i8080の全メモリ空間が64KBだったんですよ。64KBもあれば十分な余裕があると考えられていたし、128KBもメモリを積めば複数のプログラムを同時にメモリ上に置いて擬似マルチタスク可能という、そういう時代。
Re:64bit版Windowsのタコな仕様はItaniumのせい (スコア:2)
> i8086が作られた当時の64KBのセグメントの大きさは、いまの感覚でいえば4GBに相当します。
それは無いよ!!
Re: (スコア:0)
> それは無いよ!!
いや、まさにそんな感じ。
当時は16bitCPUといえば16bitアドレスが当たり前だった時代です。ミニコン含めてね。
今は64bitになかなか以降せず、ネットブックが出るくらいだし、言い得て妙なたとえです。
Re: (スコア:0)
ツッコムなら
>マイクロコードの厚化粧の8800や68000とは対照的です。
こっちだろう
#その後ゴテゴテとモードや命令を上塗りせざるを得なかった86を棚に上げて元々素地の良い68kを厚化粧とは聞き捨てならん
Re: (スコア:0)
8086 → タイムリーなスペックで16bitのCPUを、8080を拡張する形で作ろう (1978年、29000トランジスタ)
68000 → 本当は32bitのCPUを作りたいんだけど今は無理なので、16bit+マイクロコードでエミュレーションしとこう (1980年、70000トランジスタ)
ですよ。
マイクロコードで32bitのCPUのフリをしていたという点で「厚化粧」と言ったのでしょう。
Re: (スコア:0)
68000を素地がよいと思う人はISAだけでマイクロアーキテクチャには興味がないのではないでしょうか。
アーキテクトが素直なマシンというと6502を挙げることが多いです。
Re: (スコア:0)
マイクロコードは17bit命令が544個、ナノコードは68bit命令が336個でトータルは32kビットになります。総トランジスタ数が70k個ですから如何ほどか想像がつくというものです。
ナノコードの幅に注目すべきです。これは制御信号が多いことを意味し、つまるところデータパスにテンポラリレジスタが山のようにあるということにほかなりません。
プログラマには見えないテンポラリレジスタがやたらとあるのはあまり優れた設計ではないということは言を待たないでしょう。