「はじめて読む486」を読んだ
- 作者: 蒲地輝尚
- 出版社/メーカー: アスキー
- 発売日: 1994/09
- メディア: 単行本
- 購入: 20人 クリック: 165回
- この商品を含むブログ (84件) を見る
世間では機械学習・ディープランニングが盛り上がっている中、低レイヤの勉強がマイブームになっている。
この本はIntel486のアーキテクチャについて解説した本で、1994年に書かれた20年以上も前の本ではあるが、名著だと評判なので読んでみた。
(会社の図書スペースにたまたま置いてあったというのもある)
年齢のせいか、1回読んだ本の内容を忘れることが多くなってきたと感じるので、1回読んだ後に再度読み直して、要点をまとめてみた
1. プロローグ
32bitサポート
486では32bitサポートされ、16bit CPUの8086よりも大きなデータサイズを扱えるようになった。
- 16bitCPUの64KBの壁
- 16bitの限界 = 2^16 bit = 64KB
- 連続して扱える領域は64KBまでに制限される→配列の最大サイズに影響を与える
- 16bitCPUの640KBの壁
- 8086ではアドレスを20bitで表すため、利用できるメモリサイズの限界は1MB
- 360KBをシステムで利用するので、アプリケーションが使えるのは1MB - 360Kb = 640KB
- 32bit CBUではより大きなデータサイズ、メモリを扱うことができるようになる(物理的な制限は4GB)
2. 486の履歴書
- 8086から486までのCPUの発展
- プロテクトモードは286から導入された
- 32bitサポートは386から
- 486DX
- 386のアーキテクチャをそのまま引き継ぎ、性能を大幅に向上させた
- キャッシュメモリ
- 486の性能向上に最も寄与している
- CPUの近くに高速なメモリを置いて、一部のデータをキャッシュすることで高速なメモリアクセスを実現した
- 高速な分、高価なのでデータサイズは小さい(486では8KB)
- 書き出しのときにキャッシュだけでなく、本来のメモリにも書き込むライトスルー方式を採用している
- これに対して、キャッシュに書き込むのとは別のタイミングで本来のメモリに書き込むライトバック方式という方法がある
- ライトバック方式は書き込みの速度を上げることができるが、データの一貫性を保つのが難しい
- 486SX
- 486DXの廉価版
- 実態は486DXと全く一緒で浮動小数点演算機能を無効にしたもの
- 無効にした分、検査が不要になり、製造コストを下げることができた
- 486DX2 / ODP
- 「クロックダブラー」を用いて高速化を実現
- CPU内部においてクロック速度を2倍にする
- 低速な外部システムに引きずられることがなくなる
3.オペレーティング・システム
- プロセス管理
- Windows 3.1はイベント駆動
- アプリケーション側でイベント待ちのときに他のタスクに切り替える
- お行儀の悪いアプリケーションが暴走すると、システム全体が引きずられて停止状態になることがある
- Windows NTやOS/2はプリエンプティブマルチタスク
- 一定時間ごとのハードウェア割り込みを利用して、割り込み時にタスクの実行権を取り上げ、他のタスクに切り替える
- 他のタスクに影響されなくなる
- Windows 3.1はイベント駆動
- メモリ管理
4.プロテクトモード
5.セグメント
6.保護
- セグメントリミット
- すべての命令に先立ち、メモリのオフセットアドレスがリミット値を超えないかチェックする
- リミット値はセグメントディスクリプタにセットされている
- セグメント属性
- 特権レベル
7.割り込み
8.タスク
9.ページング
- ページング方式
- メモリを固定長に分割して扱う方式
- セグメント方式はメモリを任意の大きさで区分けする
- 論理空間におけるページ(論理ページ)を物理メモリのページ(物理ページ)に対応付けてアドレス変換を行う
- 論理ページと物理ページの対応はタスクごとに独立している
- メモリを固定長に分割して扱う方式
- 仮想記憶
- 物理メモリに紐付けられていない論理ページアクセスした際にページフォルトを発生させ、使用されてない論理ページに対応する物理ページをディスクに退避し(ページアウト)、空いた物理ページにディスクから読み込む(ページイン)
- 実際の物理メモリよりも大きなメモリ空間を扱うことができる
- 486ではセグメント方式とページング方式を組み合わせてメモリ管理をしている
- ページング機構
- PTE
- ページングに使用されるメモリ上のデータ構造
- ページ番号
- PTEの上位20bitに記述され、下位12bitを0で埋めるとページの先頭アドレスになる
- Pビット
- PTEに対応するページがメモリに存在するか
- Aビット
- 読み書きすると1がセットされる。OSがページアウトの対象を選定するときに用いる。
- Dビット
- 書き込み時に1をセットする。ページアウトの際にディスクに書き込むかを判定するのに用いる
- TLB
- PTE専用のキャッシュメモリ。486では32個のPTEを格納できる。
10.セキュリティ
- 要求者特権レベル
- 本来そのセグメントにアクセスしようとしたプログラムの特権レベル
- 特権レベルの乗っ取りを防ぐ
- 本来そのセグメントにアクセスしようとしたプログラムの特権レベル
- コンフォーミングセグメント
- 特権レベルを移行することなく、特権0のプログラムをアプリケーションから呼び出せるしくみ
- コードセグメントの一種
- 特権レベル移行時のオーバーヘッドを気にする必要がなくなる
- コンフォーミングセグメント呼び出し時は動作レベルが変化しない = CPUの動作レベルとセグメントの特権レベルが異なる
- LDT(ローカルディスクリプタテーブル)
- I/O許可マップ
- タスクごとにIOポートのアクセス制限をする
- TSS内にI/O許可マップを保持する
このあと「11.仮想8086モード」、「12.DOMエクステンダーとDPMI」、「13.486応用プログラミング」と続くが、疲れてきたので割愛。
CPUの挙動の理解が深まる良い本だった。
この本を読み終わった後に、以下の記事などでIntel CPUの歴史を追ってみたりもした。
@IT:PCエンサイクロペディア:第7回 PCのエンジン「プロセッサ」の歴史(1)〜i8088からIntel386までの道のり 1. IBM PCシリーズに採用された86系16bitプロセッサたち
@IT:頭脳放談:第27回 RISCの敗因、CISCの勝因
「ゲームプログラマになる前に覚えておきたい技術」を読んだ
- 作者: 平山尚
- 出版社/メーカー: 秀和システム
- 発売日: 2008/11/14
- メディア: 単行本
- 購入: 112人 クリック: 3,473回
- この商品を含むブログ (193件) を見る
去年、サーバーサイドエンジニアからモバイルゲームのクライアントエンジニアに転向するにあたり、もう一度読み直してみた。
いくつかのサンプルゲームの開発を通じて、ゲーム開発に必要なスキルを広範囲に渡って解説しており、ゲーム開発に必要な技術の全体像を掴むのに最適な本だと思う。C++、2D・3Dグラフィクス、シーケンス遷移、衝突処理、サウンド、データ構造・アルゴリズム、マルチスレッド処理と多岐に渡る技術領域を取り上げている。800ページ超の大作だが、説明が丁寧かつ語り口調ベースなので、比較的すらすら読める。ゲーム開発に対する筆者の哲学を所々で語っているのも良かった。
なお、タイトルからは初心者向けの本のように見えるが、C++でのコーディング経験があって、CPUやメモリが何をやっているのかがざっくりイメージできるような方が対象になると思う。
2016年振り返り
🍻を飲みながら雑に振り返っておく。
マネージャー
エンジニア組織のマネージャーになった。模索しながら手探りでやっていたが、振り返ると、メンバーの育成やモチベーションコントロールに意識が取られすぎて、組織がどうあるべきか、組織がどういう方向に進むかを示して引っ張るようなアクションが弱かったように思う。
反省点は多いが、チャレンジングなアサインをしたメンバーがしっかり成果出して成長する姿を見ることができたのは良かった。組織に漂っていた閉塞感を打破しようと、攻めのアサインを行うことを心がけた。組織にとってやはり一定の新陳代謝が必要だと思うので、来年もこれは心がけたい。
モバイルネイティブゲームのクライアントエンジニア
主戦場をwebからモバイルネイティブに移した。プログラミング言語的にはPerl、JavaScriptから、C++をメインに扱うようになった。メモリ管理面倒だなーと思う一方で、それも含めてCPUの気持ちになってコードを書くのが楽しい。低レイヤをもっと知りたい欲が出てきたし、自作コンパイラ作ってみたいと思うようになった。
筋肉
一念発起して、筋トレを始めた。腹筋も割れてきたし、痩せたし、仕事のパフォーマンスも上がった気がするので、良いこと尽くしだ。
来年やりたいこと
来年は20代最後だし、悔いのない1年にしたい。
うっすら腹筋が割れるまでにやったこと
この記事は 筋肉 Advent Calendar 2016 8日目の記事です。
qiita.com
腹筋を割るために、3ヶ月前から色々やってきたので、いったんまとめておきたいと思い、筋肉Advent Calendarに参加しました。ダイエットが主目的の筋肉ビギナーによる記事なので、筋肉ガチ勢の皆様におかれましては、赤子の成長を見守るような優しい眼差しで見ていただけると幸いです。
なぜ腹筋を割りたいと思ったのか
社会人になってからゆるゆると体重が増え続け、ゆるふわボディになっている事実から目を背けていたのですが、1年程前に娘が産まれてから家族で写真を撮る機会が増え、ふっくらした自分の顔を見る度に、そろそろ痩せねばと思うようになりました。また、30歳がそろそろ迫ってきて、「20代のうちにやり残したことがないか」ということを最近よく考えるのですが、肉体的にもまだまだいけるうちに腹筋を割っておきたいと思うようになったのがきっかけです。
これまで
元々ダイエット目的で1年前くらいからランニングは続けていたのですが、見た目の変化が特になく、ランニングだけではダメなのだと悟り、3ヶ月前に方針転換をしました。
腹筋を割るための方針
・なるべく低コストで
以前、ジムの回数券を購入して使い切らずに期限が過ぎてしまった苦い思い出があるので、筋トレを習慣化できるようになるまで、なるべく低コストで行うことにしました。
・脂肪を落とす
腹筋の上を覆っている脂肪を落とさない限りは、割れた腹筋が見えてきません。筋トレだけではなく有酸素運動も組み合わせて、脂肪を落としていくことにしました。
・腹筋以外の筋肉も鍛える
リバウンドしにくい体にするために、腹筋以外の筋肉も鍛えることで基礎代謝を上げようと考えました。なるべく大きい筋肉を鍛えた方が良いと思ったので、胸筋を鍛えることにしました。*1
やったこと
・腹筋ローラー
器具を使わずに自分の体重だけで行うトレーニングでは負荷が物足りなく感じたのと、970円と安かったので、腹筋ローラーを買ってみました。
Soomloom アブホイール エクササイズウィル スリムトレーナー 超静音 腹筋ローラー エクササイズローラー 膝を保護するマット付き
- 出版社/メーカー: SOOMLOOM
- メディア: その他
- この商品を含むブログを見る
膝をつけてコロコロしているだけでも負荷が高く、最初のうちは数回だけでもしっかり筋肉痛になりました。ただし、腹筋上部には効くのですが、やり方が悪いのか、腹筋下部と横(腹斜筋)にはあまり効きません。腹筋下部と横は、別の自重のトレーニングをしています。
筋トレは超回復を考えると2日ほど間隔を空けた方が良いと聞きますが、筋トレの習慣をつけたかったので、筋肉痛がひどい日以外はほぼ毎日やっています。今は15回×3セットくらいを目安に取り組んでいます。
簡単に分解・組み立てができるし、比較的軽いので、海外旅行に行った際にも持っていきました。
・プッシュアップバー
自重の腕立て伏せだと手首が痛いときがあったのと、こちらも1200円程度と安かったので買ってみました。
トータルフィットネス(TotalFitness) プッシュアップバー STT020
- 出版社/メーカー: トータルフィットネス(TotalFitness)
- 発売日: 2005/09/12
- メディア: スポーツ用品
- 購入: 94人 クリック: 357回
- この商品を含むブログ (26件) を見る
手首も痛くならないし、深く沈み込めるのでしっかり胸筋に効かせることができます。
今は15回×2~3セットを目安に取り組んでいます。
・ランニング
平日に5kmを2回、休日に10kmを2回程度走っています。ランニングもただ走るだけだと苦痛なので、楽しく続けられるために色々と自分なりに工夫をしています。
①良いランニングコースを見つけること。以前は5kmも走ると飽きてしまっていたのですが、2ヶ月ほど前に良いランニングコースを見つけてから10km走れるようになりました。特に、走っていて飽きないような景色が自分の中では重要な要素でした。あと、他にもランニングしている人がいるようなコースだと、自分も負けじと頑張ろうと思えます。
②10kmも走っていると1時間近く脳内が暇なので、ポッドキャストを聞きながら走っています。主に Rebuild - Podcast by Tatsuhiko Miyagawa を聞いていて、「ランニングのときにしかrebuild.fmを聞いてはいけない」という制約を自分に課すことで、新しいエピソードが配信されたときにはランニングを待ち遠しく思うようになりました。rebuild駆動ランニングです。
③NIKE+ RUN CLUB というアプリで、ランニングした際のログを取っています。走り終わった後に走行距離や消費したカロリーを見て、悦に浸っています。
・プロテインを飲む
鍛えた筋肉に適切な栄養を届けるために、プロテインを飲むようにしています。プロテインにも色々と種類はあるようですが、まずはAmazonで一番人気だった「ザバス ホエイプロテイン100」を飲むことにしました。
ザバス ホエイプロテイン100 ココア味【50食分】 1,050g
- 出版社/メーカー: 明治
- 発売日: 2014/02/24
- メディア: ヘルスケア&ケア用品
- この商品を含むブログを見る
プロテインはあまり美味しくないイメージがあったのですが、このザバスのプロテインのココア味は美味しく飲めています。
値段は、近所のドラッグストアやいくつかのサイトと比較したのですが、Amazonの定期便で買うのが一番安かったです。Amazon定期便は1回だけの購入も可能なので、迷っている人も定期便で購入するのをオススメします。
・平日断酒
社会人になってから、毎日ビールを1~2杯飲むのが習慣になってしまっていました。アルコールの摂取によって肝臓に負荷をかけてしまうと、脂肪の分解を妨げてしまうと聞いたので、平日はなるべく飲まず、週末だけ飲むようにしました。ビールを飲みたいなーと思う夜も、プロテインを飲むと満足してしまうことが多く、ビールを飲まなくてもいいやと思えるようになったので、平日断酒がうまく続いています。
結果
写真を載せる勇気はないのですが、腹筋がうっすら割れてきました。胸も以前はぷるぷるでしたが、それなりに胸筋がついてきています。体重は3kg落ち、体脂肪率は10%を切り、9.5%前後になりました。久々に会う人にも痩せたねと言われるようになり、割りと満足のいく結果が出ています。
一方、一度に複数のことを始めたので、何が効果的だったのかはよく分かっていないです。特に、プロテインは本当に効果的なのか、ビールは本当にダイエットの敵なのか、は今後きちんと検証したいと思っています。来年の筋肉Advent Calendarで結果報告ができると良いですね。
最後に
筋トレはやればやるほど、見た目の変化だったり、体重や体脂肪率といった数値の変化が表れてくるので、RPGのレベル上げみたいな感覚で楽しく取り組むことができています。また、ランニングや筋トレはストレス発散にもなっていて、精神衛生上にも非常に良いです。エンジニアという職業柄、脳に負荷をかけることが多いですが、筋トレやランニングをすることで、一旦頭の中がリセットされてすっきりします。
この記事が腹筋を割りたいと思っている筋肉ビギナーの方に、少しでもお役に立てば幸いです。
*1:大きい筋肉というと、太ももの裏の筋肉を鍛えることも考えましたが、自重トレーニングだと負荷が物足りなかったのと、ランニングである程度鍛えられるだろうと思い、今回はスコープから外しました。
WORK RULES! (ワーク・ルールズ) を読んだ感想
今週、ちまちまと「WORK RULES! (ワーク・ルールズ)」 を読んだ。
- 作者: ラズロ・ボック,鬼澤 忍,矢羽野 薫
- 出版社/メーカー: 東洋経済新報社
- 発売日: 2015/07/31
- メディア: 単行本
- この商品を含むブログ (8件) を見る
Googleの人事トップのラズロ・ボックという方が、Googleでの採用・育成・評価について語っている。
Laszlo Bock - Wikipedia
500ページを超えるボリュームでGoogleの人事の仕組みについて細部まで記述してあり、非常に読み応えがあった。超巨大組織になったGoogleだが、創業当初からのGoogleカルチャーを守るための組織作りを知ることができる。
最近話題になった「心理的安全性」というGoogleの記事と、同じようなエピソードが本書にも書かれていた。
gendai.ismedia.jp
特に自分にとっては、マネジメントの観点がいくつか印象に残っている。
・スタッフの創造性を解き放つために、社員への権限委譲を積極的に行う。ステータスシンボルをなくす。
・意思決定は、組織の出来る限り下位のレベルでやるべき。収集がつかないときのみ、上のレベルで意思決定をする。
・地位に伴う指揮統制の衝動と闘う。その衝動は、管理することで役立っているという幻想と、スタッフの能力に対する信頼の欠如から来ている。
強烈なリーダーシップで周囲を指揮・命令するのではなく、いわゆる支援型のリーダー(サーヴァントリーダー*1であるべきという話だった。
以前のrebuild.fm*2で、「ビジョンを提示しないリーダーには結局人はついてこないので、サーヴァントリーダーは一概に良いとは言えない」という議論があったが、Googleに関して言えば、ビジョンが現場スタッフにも浸透しているからこそ、支援型のリーダーが活きてくるのではないかと思った。
(「権限委譲しているからこそ、現場スタッフにもビジョンが浸透する」という説もある気がする)
また、全体を通して、ABテストや統計知識を用いて人事施策を評価するエピソードが随所にあり、人事組織においても徹底的な分析を行う姿勢が印象的だった。
本書は人事トップの視点だったので、ぜひ現場スタッフの視点の話も聞いてみたいところ。