タグ

ProgrammingとCPUに関するclavierのブックマーク (8)

  • 仮想メモリ方式の分類

    作成日:2006.03.30 修正日:2016.10.17 更新記録 (2006.03.30) 2006/3/10 と2006/3/11 の日記の内容を元に作成。 (2006.04.07) SPARC 32 ビットプロセッサのページテーブル構成を修正。 (2006.05.25) 3.2節ページテーブルエントリを追加。 (2012.05.29) PowerPC のセグメントサイズの誤りの修正と図の追加。 (2016.10.17) Intel64 の Process-Context Identifiers(PCIDs) と Protection Keys の説明を追加。また TLB エントリの無効化と ARM の情報も追加。タイポの修正。 1. はじめに 2. 仮想メモリの全体像とページング以外の機構 事前処理 事後処理 3. ページング 3.1 ページウォーク 3.2 ページテーブルエントリ

  • 低レイヤを知りたい人のための Cコンパイラ作成入門

    はじめに このオンラインブックは執筆中です。完成版ではありません。フィードバックフォーム このには一冊のに盛り込むにはやや欲張りな内容を詰め込みました。書では、C言語で書かれたソースコードをアセンブリ言語に変換するプログラム、つまりCコンパイラを作成します。コンパイラそのものもCを使って開発します。当面の目標はセルフホスト、すなわち自作コンパイラでそれ自身のソースコードをコンパイルできるようにすることです。 このでは、コンパイラの説明の難易度が急に上がりすぎないように、様々なトピックを書全体を通じて次第に掘り下げていくという形で説明することにしました。その理由は次のとおりです。 コンパイラは、構文解析、中間パス、コード生成といった複数のステージに概念的に分割することができます。よくある教科書的アプローチでは、それぞれのトピックについて章を立てて解説を行うことになりますが、そのよう

  • 物理サーバを選定する際のポイント – Eureka Engineering – Medium

    もともと日向けに作られていたPairsのモバイルアプリを、どのように国際的に展開できるようにしたのか。国際化・ローカライズの対応を進めたときの実際の流れや工夫を、モバイル開発の視点からまとめています。

    物理サーバを選定する際のポイント – Eureka Engineering – Medium
  • コンパイラーを負かす

    roguelazer's website: beating the compiler なかなか面白かったので翻訳して紹介する。 たとえば、97%の場合において、僅かな効率など忘れるべきである。。早すぎる最適化は諸悪の根源である。とはいえ、残りの重要な3%の機会を逃すべからず。 -- Donald Knuth 計測せよ。計測するまで速度の最適化を施してはならぬ。たとえ計測したにせよ、一部のコードが残りを圧倒するまではまだ最適化してはならぬ。 Rob Pike 最新のWebサービスを主体とした技術の業界に長年浸かった我々は、パフォーマンスの問題を忘れがちである。SQLAlchemy ORMの中で行うリクエスト一つが8,9秒かかる中で、関数呼び出しひとつを3ミリ秒最適化したところで何になるというのか。とはいえ、時にはそのような最適化スキルを養っておくのもいいことだ。今回は、ある簡単な課題を最適化

  • 自作CPU向けCコンパイラをつくってOS動かした話 (CPU実験まとめ) - kw-udonの日記

    僕の学科では伝統的に3年の後期に半年かけてCPU実験というものをおこなう。 班で自作のアーキテクチャを設計・実装し、FPGA基板上でMinCaml(OCamlのサブセット)でかかれた課題用レイトレーシングプログラムが動けば単位がもらえるというものである。 レイトレ完動後には、その高速化にはげむもよし、余興としてゲームをつくるもよしで、自作CPU上で色々あそんだりする。 今年は有志で班を結成し、自作CPU上でxv6というOSを動かした。 僕はその班にCコンパイラ係として参加したので、そのことについてかく。 あと、OS移植班全体の成果についても触れる。 わりと長くなってしまったので、結局なにができたんだっていう人は、とりあえず先にこっちに飛んでほしい。 動機 期間は4ヶ月程度、配布されたFPGA基板のうえで動かしたいという制約のもとで移植するOSはxv6を選択した。 このOSはシンプルであるが

    自作CPU向けCコンパイラをつくってOS動かした話 (CPU実験まとめ) - kw-udonの日記
  • CPUはオワコン - きしだのHatena

    FPGACPUを組んでると、フェッチ部やデコーダ部で足し算や掛け算をしようとして、そんなことしたらCPUの意味ないなーと思ってしまうことがありました。 で、よく考えたら、FPGAでロジックを組むならCPUの意味はないんです。 だいたい、ひとつの処理実行するのに何クロックかかってんですか!と。 CPUでは、計算効率をよくするためにパイプラインという仕組みが使われています。 最近では、18段とかのパイプラインもあるようです。 ここで、18段のパイプラインのうち、実際に計算を行うのは2段か3段だったりします。残りの15段くらいは、命令や計算結果を読んだり書いたりしているだけです。 このパイプラインも、ほとんどはメモリの読み書き、それも命令の読み込みに多くが使われます。 であれば、CPUにしなければ、18段全部計算に使えるんじゃね?という話になりますね。 決まりきった計算を行うのに、いちいちメモ

    CPUはオワコン - きしだのHatena
  • CPU とキャッシュのはなし - graphics.hatenablog.com

    別にグラフィックスに限ったことじゃないし、そもそも論文とか全然関係ないけど。GPU 周りでもたまに話題になるし、自分でもたまにわけわからんくなるから整理しとく。 メインメモリは遅い CPU からメインメモリにデータを読みに行く場合、これはとにかく遅い。例えばレジスタにあるデータを読みに行く場合と比べると、だいたい数倍から数100倍の遅さ。ヤバいからなんとかしよう。もっと早くアクセスできる場所にデータおいとこう。 キャッシュライン CPU がメインメモリからデータを読み出すとき、必ず小さなメモリチャンクをキャッシュ上にロードする。ロード単位はプロセッサによるけど、だいたい 8 ~ 512 バイト。このロード単位をキャッシュラインと呼ぶ。 アクセス対象のデータが既にキャッシュに載ってる場合は、メインメモリじゃなくてキャッシュを読みに行く。ない場合はメインメモリにアクセスするけど、そのデータはも

    CPU とキャッシュのはなし - graphics.hatenablog.com
  • 1