読者です 読者をやめる 読者になる 読者になる

中島さんの「エンジニアの世代交代」が面白かった

雑記

最近溜まりに溜まった Web+DB Press を読んでいます。
中島さんの記事はいつも本当に楽しみにしていますが
vol.89 も面白かった。

WEB+DB PRESS Vol.89

WEB+DB PRESS Vol.89

(webで読めるよ。ありがとうgihyoさん)
第34回 エンジニアの世代交代:Software is Beautiful|gihyo.jp … 技術評論社

フロッピーディスクへのアクセス高速化の話ですが、
なんというか、こんなことを高校生でやってのけるなんて、やはり凄い。
そして、「良いタイミングに良い場所にいた」ってことなんでしょうな。

データの伝送は「3線式ハンドシェイク」という方法が使われていたが,
NECの実装は,1バイト送るごとにビジーシグナルをチェックして
相手が受け入れ準備可能かどうかをチェックするという非効率な実装であった。
これはどう考えても無駄なので,128バイトごとにビジーシグナルをチェックするように
変更したところ,それだけで転送速度が数倍になった。
データが準備できたことを知らせるたびにステータスシグナルを
上下させていたがこれも無駄なので,奇数バイトで上げ偶数バイトで下げるように
したところ,さらに2倍の高速化ができた。
せっかくなのでフロッピーディスク側のソースコードを読んでみたところ,
ディスクのアクセスは1セクタ(128バイト)ずつしかしておらず,
連続したセクタを読もうとした場合,その隙間にディスクが1回転してしまうことがわかった。
そこで読み取る場合には1トラック分(16セクタ)一度に読み取るように変更したところ,
これでさらに数倍の高速化が実現できた。