タグ

qiitaとCPUに関するslay-tのブックマーク (16)

  • OCaml でゲームボーイエミュレータを書いた話 - Qiita

    はじめに ブラウザ上で動くゲームボーイエミュレータを OCaml で書きました。以下のページで試せます。 デモページ いくつかの homebrew ROM も一緒になっているのでいろいろ遊んでみてください。おすすめは「Bouncing ball」と「Tobu Tobu Girl」です。最近のスマホならだいたい安定して 60 FPS 出るはずなので、スマホでも遊べます。 レポジトリはこちらです。 スクリーンショット なぜ OCaml でゲームボーイエミュレータ?新しいプログラミング言語を学ぶ過程で以下のように思ったことはないでしょうか? 簡単なプログラムなら書けるが、中規模以上のコード1をどうやって書けばよいのか分からない 発展的な言語機能2も勉強しなんとなく理解した気になったが、実践のなかでどのように活用すればいいのかが分からない OCaml を格的に勉強し始めてた数ヶ月前の筆者はまさに

    OCaml でゲームボーイエミュレータを書いた話 - Qiita
  • 2で割ることと3で割ること - Qiita

    この記事でお題にするのはCPUレジスタ上の整数除算です。以下、単に除算とも書きます。 除算は非常に高コストな演算なため、コンパイラは最適化によって、できるだけ整数除算を別の計算に置き換えようとします。 最適化ができる場合の一つとして、割る数が定数である場合があります。頭のいいコンパイラは、除算を乗算とビットシフト等を駆使した演算に置き換えます。この記事では、そういった最適化の背景にある理屈を部分的に解説します。 計算機環境としてはモダンなx86 CPUを仮定します。したがってレジスタは32/64ビットであり、負数は2の補数表現になっています。ある程度は他の命令セットでも通用する話になっているかもしれません。 そもそも整数の除算とは プログラミングにおける整数の除算の定義について確認します。整数$n$を整数$d$で割るとき $$ n = q \times d + r $$ が成り立つように除

    2で割ることと3で割ること - Qiita
  • Apple M1のサポートする命令など - Qiita

    1. Intel 64 CPU互換レイヤー「Rosetta 2」でサポートする命令等 Intelが出している MacCPUID と言うユーティリティはIntel Macに採用されているCPUの機能などを調べるユーティリティであるが、Rosetta環境で使用すると、ソフト側から見た仮想Intel64ハードウェアの機能を調べることができる。 https://software.intel.com/content/www/us/en/develop/download/download-maccpuid.html これが実行したところであるが、ベンダーストリングこそ "VirtualApple" となっているものの、CPUはWestmere世代のプロセッサ互換として認識されている。 また、CPUの機能はWestmere世代の第1世代(32nm版)Core i*シリーズと同等である。 AESやPCLM

    Apple M1のサポートする命令など - Qiita
  • ArmにあるというJavaScript専用命令とは何か、あるいは浮動小数点数を整数に変換する方法について - Qiita

    元の値の絶対値が大きすぎる場合や、無限大、NaNの場合は、 6.3.1.4: 表現できない場合はundefined behavior。 Annex F.4: 表現できない場合はinvalid例外が発生して、値はunspecified。 とされています。 これ以外の浮動小数点数→整数型の変換方法には (l)lrint や (l)lround 関数などがあります。 Java的に0方向への丸め(切り捨て)で計算されますが、コーナーケースについても言語仕様で定めています。 NaN:0を返す 結果が表現できないもしくは無限大の場合:符号に応じて最大値または最小値が返る。 参照: 5.1.3. Narrowing Primitive Conversion - Chapter 5. Conversions and Contexts JavaScript JavaScriptではビット演算やいくつか

    ArmにあるというJavaScript専用命令とは何か、あるいは浮動小数点数を整数に変換する方法について - Qiita
  • Pythonの非同期プログラミングを完全理解 - Qiita

    CPUはコンピューターの処理コアで、貴重なリソースになります。CPUの実行時間を無駄遣いし、利用率を低下させると、プログラムの効率も必然的に低下します。上記の表が示したように、1Gbpsのネットワークで2KBのデータをアップロードしたら、CPUの感覚では14時間を過ごしたようなものです。もし、10Mbpsのネットワークとなると、更に100倍も効率が下がります。この長い時間を、CPUをただただ待たせて他の処理に移さない行為はまさにCPUの「青春」の無駄遣いになります。 2-2. 現実の問題点 コスト プログラムはコンピューターの計算リソースを有効に利用できないと、その穴を埋めるために、より多くのコンピューターが必要になってきます。例えば、スクレイピングのプログラムを非同期プログラミングで設計し直すと、もともと必要とした7台のサーバーを3台まで減らせて、コストを57%削減することができます。ち

    Pythonの非同期プログラミングを完全理解 - Qiita
  • エッジで機械学習ってなんだろう -ブラウザ、スマホ、IoT機器での推論を概観する- - Qiita

    Deleted articles cannot be recovered. Draft of this article would be also deleted. Are you sure you want to delete this article? 内容は、技術書典7 合同機械学習の炊いたん2』収録の、「エッジで機械学習」記事を公開したものです。内容は2019年9月時点の調査等に基づきます。 最近Raspberry Pi 4の検証結果などをみていると、エッジ、かつCPUでもそれなりの速度で動くケースもみられます。またこの後にM5StickV(K210)などを触りましたが、専用チップも使い所があります。今後、それらの動きもできれば補足したいと思います。 9/12-22に開催された技術書典9では、新刊『機械学習の炊いたん3』を頒布しました。私は、「AIエンジニア、データサイエンテ

    エッジで機械学習ってなんだろう -ブラウザ、スマホ、IoT機器での推論を概観する- - Qiita
  • Kubernetesの負荷試験で絶対に担保したい13のチェックリスト - Qiita

    概要 ※この記事は弊ブログ記事(はてな)、Kubernetesの負荷試験で絶対に担保したい13のチェックリストと同内容です ここ最近、Kubernetesクラスタを番運用するにあたって負荷試験を行ってきました。 Kubernetesクラスタに乗せるアプリケーションの負荷試験は、通常の負荷試験でよく用いられる観点に加えて、クラスタ特有の観点も確認していく必要があります。 適切にクラスタやPodが設定されていない場合、意図しないダウンタイムが発生したり、想定する性能を出すことができません。 そこで私が設計した観点を、汎用的に様々なPJでも応用できるよう整理しました。 一定の負荷、スパイク的な負荷をかけつつ、主に下記の観点を重点的に記載します。 Podの性能 Podのスケーラビリティ クラスタのスケーラビリティ システムとしての可用性 記事ではこれらの観点のチェックリスト的に使えるものとして

    Kubernetesの負荷試験で絶対に担保したい13のチェックリスト - Qiita
  • VHDL 100行で8bit CPUを設計してGHDLでエミュレーションする - Qiita

    昔書いたにっき( https://mjt.hatenadiary.com/entry/20110125/p2 )で取り上げたMCPU( https://github.com/cpldcpu/MCPU/ )を拡張し、それなりの実用性を確保したい話。 作成したものはGitHubに置いてある https://github.com/okuoku/nanocpu 。 できたCPU 出来たCPU の諸元を簡単に要約すると、 64マクロセルCPLDに収まるギリギリのデザイン 割り込み機能なし ALU命令は 4命令のみ (ADD / NOR / Store / Jump if Clear Carry + carry clear) 8bit データ、ALU 14bit アドレスバス (8bitセグメント、6bit直接アドレス) 非同期SRAMメモリインターフェース を持つ。このCPUは64マクロセルのXil

    VHDL 100行で8bit CPUを設計してGHDLでエミュレーションする - Qiita
  • CPU Steal Time 入門 - Qiita

    Deleted articles cannot be recovered. Draft of this article would be also deleted. Are you sure you want to delete this article?

    CPU Steal Time 入門 - Qiita
  • このKernel、どんなKernel? - Qiita

    はじめに この記事は、Linux Advent Calendar 2019 - Qiitaの8日目です。 この記事では、今使っているLinux Kernelがどんなkernelなのか、どんな設定で動いているのかを確認する方法を紹介します。 Linux Kernelは様々な用途に使われています。 そのため、ひとくちにLinux Kernelと言っても、動作はシステムによって全然違います。 現状を把握する手段を知ることで、効率的にKernelのコードリーディングやより良い設定を探す一助になれば幸いです。 また、コメント大歓迎ですので、なんでもお気づきのことがありましたらぜひお気軽にお願いします。 この記事で書くこと Linux Kernelの素性を確認する方法 Linux Kernelの設定値を確認する方法 この記事で書かないこと 各プロセスや各ユーザなどに対する設定(ulimitやniceや

    このKernel、どんなKernel? - Qiita
  • Cloud Runは便利!GCPの月額費用を4万円以上節約した話 - Qiita

    g4というサービスを運営しているのですが、ここ数ヶ月間でGCPの月額費用を4万円以上節約したので、経緯を書いておきます。 7月の費用 ¥53,818 9月の費用 ¥18,801 詳しくはこちらのレポート 11月の費用 ¥7,333 詳しくはこちらのレポート 5月はこんな感じでした。 完全にやらかしてますね!!敗因は 無料期間なのもあり利用料金気にせずに使っていた そして無料期間の終わりを忘れていた アラートを設定していなかった です。 まずは、 7月の費用から約3万円節約するために、GAEのオートスケール周りの設定を見直しました 7月の状態は 番: (GAE flexible/custom cpu x 2) x 2台 ステージング: (GAE flexible/custom cpu x 2) x 2台 (DBに関しては番とステージングで同じインスタンスを使っています) でした。これは、

    Cloud Runは便利!GCPの月額費用を4万円以上節約した話 - Qiita
  • Linux メモリ管理を理解したい - Qiita

    Linux カーネルのメモリ管理方法について、勉強したことをまとめる。 メモリ管理はハードウェアに強く依存するため、x86_64 かつ OS起動後に 64bitプロテクトモード に移行したあとに話を絞る。また、OS は CentOS7.6、カーネルは次のバージョンを利用する。 ]# cat /etc/redhat-release CentOS Linux release 7.6.1810 (Core) ]# uname -a Linux localhost.localdomain 3.10.0-957.21.3.el7.x86_64 #1 SMP Tue Jun 18 16:35:19 UTC 2019 x86_64 x86_64 x86_64 GNU/Linux 概要 ノイマン型アーキテクチャ コンピュータの基的な構成のひとつ。次の図が参考になる。 ほぼ全てのコンピュータが、このアーキ

    Linux メモリ管理を理解したい - Qiita
  • linuxカーネル4.1のプロセススケジューラ(ドラフト) - Qiita

    はじめに 記事は昔書いたlinuxカーネル4.1のプロセススケジューラの実装について途中まで書いたけど諸事情により二年くらい放置していたドラフトです。死蔵するのももったいないので公開しておきます。今現在のカーネルに比べてずいぶんと変わっていること、未稿の部分がかなりあること、誤字脱字や「てにをは」は気にしていないこと、などにご注意ください。 このドキュメントを積極的に更新する予定は(少なくともこの場では)いまのところありません。 ある瞬間にCPU1で動作できる処理は1つだけです。この限りあるCPU資源をシステムに存在する プロセス間で分配するのがプロセススケジューラです。プロセススケジューラは大きく分けて 次のことをします。 全プロセスの間で平等にCPUを分配する スループットの最大化 レイテンシ(応答時間、ターンアラウンドタイム)の最短化 個々のコアのことであり、かつ、ハイパースレッド

    linuxカーネル4.1のプロセススケジューラ(ドラフト) - Qiita
  • top コマンドでよく使う or 便利そうな機能 - Qiita

    ■ ヘルプ ( h or ? ) top コマンド実行中に h or ? で、ヘルプを表示できます。top コマンドを終了させずに対話型のコマンドを確認できるので、非常に便利です。 ■ 文字列検索 ( L ) top コマンド実行中に「L -> 文字列入力 -> Enter」で、ヒットした文字列を含むプロセスを上部に表示できます。ヒット部分はハイライトされます。 実行例1 (入力キー: L,"cpu",Enter, L,"bash",Enter, L,"20",Enter) 実行例1 (入力キー: L,"cpu",Enter,L,"bash",Enter,L,"20",Enter) ■ ユーザ毎に監視 ( u ) top コマンド実行中に「u -> ユーザ名を入力 -> Enter」でユーザ毎のリソース使用状況を監視できます。 実行例2 (入力キー: u,"guest",Enter) ■

    top コマンドでよく使う or 便利そうな機能 - Qiita
  • アセンブラへの道 coding(42) - Qiita

    事例(case study) アセンブラで覗くコンピュータの質 https://qiita.com/shm_ut/items/d27e6b80a5561a74d20f 前書き(preface Cコンパイラで生成したコードを、アセンブラで書き直したことがある。 コンパイラの最適化がまだ進んでいないころ、 Microsoft Cでコンパイルすると、NOPが結構入っていた。 単にNOPを外すだけでなく、マクロで簡潔にしてみた。 通信エミュレータで、NOPがなくなるとタイミングがずれてうまく動かないことが分かった。 ああ、Cコンパイラの作り方を覚えようと思った。 Cコンパイラは電総研(産総研)言語システム研究室の研究生で滞在した頃、Small Cコンパイラを写経し、Pascalで書かれたコンパイラをC言語に移植し、OBJという抽象データ型の言語のシンタックスチェッカをC言語で作成した。 C言語を

    アセンブラへの道 coding(42) - Qiita
  • 目指せ!落ちない高可用性サーバ、ハードウェアの選び方 - Qiita

    10年以上金融機関で働いているインフラエンジニアの落ちないサーバにするための考察です。 ハードウェアの専門家ではないので、正確ではないかもしれません。 今までの経験からの個人的考え方になります。 私たちオンプレ重視のインフラエンジニアは、 クラウドサービスではできない高可用性サーバを導入したり、 複数台構成で1台故障しても問題ない構成のサーバはコスト重視するなど、 システムに最適なサーバを導入しようとしています。 高可用性サーバを追求する目的 ■アプリに影響を与えないように Active/Standby構成にしていて、インフラ的にはダウンタイムが数秒だとしても、 アプリによっては復旧に時間がかかったり、問題ないことの確認にも時間がかかってしまいます。 また、正しくサーバが落ちればアプリが問題ないとしても、 サーバが中途半端な状態のままになってしまい、なんだかおかしいということもあります。

    目指せ!落ちない高可用性サーバ、ハードウェアの選び方 - Qiita
  • 1