memo0035
のバックアップ(No.2)
[
トップ
|
一覧
|
単語検索
|
最終更新
|
バックアップ
|
ヘルプ
]
バックアップ一覧
差分
を表示
現在との差分
を表示
ソース
を表示
memo0035
へ行く。
1 (2008-11-16 (日) 12:01:43)
2 (2008-11-16 (日) 12:20:55)
3 (2008-11-16 (日) 19:47:32)
4 (2008-11-17 (月) 09:15:19)
5 (2008-11-18 (火) 16:13:28)
何でもかんでも4bit単位で統一してみる
(by
K
, 2008.11.16)
↑
(0)
現在ではなんでも8bit(バイト)での区切りがあって、あとはその倍数ですべてが設計されている。そうではなくて、4bitで区切って、さらに4bitずつでしか区切らないとしたら一体どうなるかを検討。はっきり言ってただの遊び。
↑
(1)
ダンプ
従来:
0000 01 23 45 67 89 AB CD EF 01 23 45 67 89 AB CD EF
これが16行並ぶと256バイト
案:
0000 0123 4567 89AB CDEF
これが16行並ぶと128バイト
一つのアドレスに4bitが存在するため、アドレスが0x10進むとその中に64bit(=8バイト)が存在することになる。
切りのいい大きさ
4bit、64bit(8バイト)、1024bit(128バイト)、2KB、32KB、512KB、8MB、128MB
4bitがアドレスの一単位、8バイトをパラグラフ、128バイトをセクタ長、2KBをページ長・・・なんてやったらどうかな?
↑
(2)
指数付き整数
浮動小数点とアイデアは近い。eh4でこんなことができるという例。
ルールはeh4を2つ書くこと。一つ目は指数で、それを2倍した数がシフト量。もうひとつが仮数部。似たようなルールは、
OSA:GUIGUI01/man0003
のスタックサイズ指定などに見られる。
これだとたった16bitしかなくても、こんなに表現力がある。
仮数部に12bitを割り振る場合、(0〜511) * (1〜16384)。最大は約8メガ。
仮数部に8bitを割り振る場合、(0〜31) * (1〜2^62)。最大は約2^67。
もしHDDのパーティションテーブルがこの形式で記述されていたらどうだっただろうか。8メガセクタというのはつまり4GBだが、たったの16bitで4GBまでサポートできていたことになる。既存の形式は24bitのCHSでも、8GBくらいまでしか扱えなかった。
もちろん16bitの指数付きeh4ではさすがに有効数字不足だが、これを同条件にするために24bitの指数付きeh4にすれば、有効数字も0〜16383や0〜8191となり、事実上不便を感じることはないだろう。しかも遠い将来指数部8bitでも足りなくなるようなら指数部を12bitにすることも考えられるが、その場合は指数部だけでも2^1022という途方もない最大値を指定できることになり、拡張性は全く申し分ない。
KHBIOSではもちろん自前のパーティションテーブルをもち(これは非AT互換機との互換性をとりやすくするためにも必要な処置)、そのときはこれでいこうと思っていた。そうすれば小さいテーブルでもかなりの記述力と拡張性を担保できるから。
↑
こめんと欄
コメント
お名前
NameLink