最近溜まりに溜まった Web+DB Press を読んでいます。
中島さんの記事はいつも本当に楽しみにしていますが
vol.89 も面白かった。
- 作者: 佐藤歩,泉水翔吾,村田賢太,門田芳典,多賀千夏,奥一穂,伊藤直也,鍛治匠一,中山裕司,高山温,佐藤太一,西尾泰和,中島聡,はまちや2,竹原,青木大祐,WEB+DB PRESS編集部
- 出版社/メーカー: 技術評論社
- 発売日: 2015/10/24
- メディア: 大型本
- この商品を含むブログを見る
(webで読めるよ。ありがとうgihyoさん)
第34回 エンジニアの世代交代:Software is Beautiful|gihyo.jp … 技術評論社
フロッピーディスクへのアクセス高速化の話ですが、
なんというか、こんなことを高校生でやってのけるなんて、やはり凄い。
そして、「良いタイミングに良い場所にいた」ってことなんでしょうな。
データの伝送は「3線式ハンドシェイク」という方法が使われていたが, NECの実装は,1バイト送るごとにビジーシグナルをチェックして 相手が受け入れ準備可能かどうかをチェックするという非効率な実装であった。 これはどう考えても無駄なので,128バイトごとにビジーシグナルをチェックするように 変更したところ,それだけで転送速度が数倍になった。
データが準備できたことを知らせるたびにステータスシグナルを 上下させていたがこれも無駄なので,奇数バイトで上げ偶数バイトで下げるように したところ,さらに2倍の高速化ができた。
せっかくなのでフロッピーディスク側のソースコードを読んでみたところ, ディスクのアクセスは1セクタ(128バイト)ずつしかしておらず, 連続したセクタを読もうとした場合,その隙間にディスクが1回転してしまうことがわかった。 そこで読み取る場合には1トラック分(16セクタ)一度に読み取るように変更したところ, これでさらに数倍の高速化が実現できた。