タグ付けされた質問 「computer-architecture」

コンピュータハードウェアの構成と設計に関する質問。

1
エンドツーエンドの原則を形式化できますか?
1990年代後半、私が大学院にいたとき、 JHサルツァー; DPリード; DDクラーク:システム設計におけるエンドツーエンドの議論。ACM Trans。計算。システム。2(4):277-288、1984。DOI= 10.1145 / 357401.357402 すべての大学のすべてのオペレーティングシステムクラスで読む必要があり、インターネットの設計の基礎となる主要な指針の1つであるように思われます。(例:J Kempf、R Austein(eds)、およびIAB、「Rise of the Middle and the Future of End-to-End:Reflections on the Evolution of the Internet Architecture」、RFC 3724、2004年3月。 ) エンドツーエンドの原則は次のように述べています(Saltzer et al。、1984): [if]問題の機能が完全かつ正確に実装できるのは、通信システムのエンドポイントにあるアプリケーションの知識と助けを借りた場合のみです。...問題のある機能を通信システム自体の機能として提供することは、可能。[ただし]通信システムによって提供される機能の不完全なバージョンは、パフォーマンスの向上に役立つ場合があります。 またはもっと簡単に(要約から): エンドツーエンドの議論は、システムの低レベルに配置された機能は、その低レベルで提供するコストと比較した場合、冗長であるか、またはほとんど価値がない可能性があることを示唆しています。 しかし、私は自分の経験(インターネットアーキテクチャではなくコンピュータアーキテクチャ)でエンドツーエンドの原則を適用することにほとんど成功していません。原理は「詩」(つまり、数学的に定義されていない一連の用語を含む英語の散文では)として記述されているので、「問題の機能は、アプリケーションの知識と助け。」しかし、アプリケーションの「知識とヘルプ」はもちろんのこと、「問題の機能」とは何でしょうか。 例:(インターネットとは異なり)オンチップネットワークではパケットをドロップできませんが、バッファリングは非常に制限されているため、デッドロックを回避または回復する方法が必要です。一方で、アプリケーションもデッドロックを解消する必要がありますよね?ですから、私は一般的なケース(デッドロックなし)を高速にして、アプリでデッドロック回避をオフにするべきだと考えるかもしれません。これは、実際、私たちがAlewifeとFuguで試したものです(Mackenzie et al。、Exploiting Two-Case Delivery for Fast Protected Messaging、Int'l Symp High-Perf Comp Arch、(HPCA-4):231-242、 1998.またはJohn Kubiatowiczの論文。)それは「機能しました」(バッファーがいっぱいになったときにインターコネクトにプロセッサーを中断させ、OSにソフトウェアバッファリングを追加させることによって)が、私は学界や業界(その作成者である私たちを含む)で誰も見たことがないHPCAペーパー)アイデアを再現しようと競争している。したがって、ネットワークでのデッドロックの回避は、アプリケーションレベルのデッドロックの回避と同じ「問題の機能」ではないか、エンドツーエンドの原則が間違っています。 …

2
最近のコンピューターの理論上のレジスタの最小数は?
私は学部の研究でコンパイラのコースを受講し、おもちゃのJavaのような言語でソースプログラムをおもちゃのアセンブリ言語(インタプリタがありました)にコンパイルするコンパイラを書きました。プロジェクトでは、「実際の」ネイティブ実行可能ファイルに密接に関連するターゲットマシンについて、次のようないくつかの仮定を行いました。 専用スタックポインタ( "SP")レジスタによって追跡されるランタイムスタック 専用ヒープポインター( "HP")レジスターによって追跡される動的オブジェクト割り当て用のヒープ 専用のプログラムカウンタレジスタ(「PC」) ターゲットマシンには16個のレジスタがあります データの操作(ジャンプなどとは対照的)はレジスタ間操作です レジスター割り当てを最適化として使用することについてユニットにたどり着いたとき、それは私に不思議に思いました:そのようなマシンのレジスターの理論上の最小数はいくつですか?コンパイラーで5つのレジスター(SP、HP、PC、および2進演算のストレージとして使用するための2つ)を使用したことを前提にしています。レジスター割り当てのような最適化は確かにより多くのレジスターを利用することができますが、スタックやヒープのような構造を維持しながら、より少ないレジスターでうまくいく方法はありますか?レジスタアドレス指定(レジスタ間操作)では少なくとも2つのレジスタが必要だと思いますが、3つ以上必要ですか?

1
GPUでの比較がなぜそれほど高価なのですか?
衝突検出クラスのパフォーマンスを向上させようとしているときに、gpuで費やされた時間の約80%がループするバケットの境界を把握しようとするif / else条件に費やされたことがわかりました。 より正確に: 各スレッドはIDを取得し、そのIDによってメモリから三角形(それぞれ3つの整数)をフェッチし、それらの3つによって頂点をフェッチします(それぞれ3つの浮動小数点数)。 次に、頂点を整数グリッドポイント(現在は8x8x8)に変換し、それらをそのグリッドの三角形の境界に変換します。 3つのポイントを境界に変換するために、各ポイント間で各次元の最小/最大を見つけます 私が使用しているプログラミング言語にはminmax組み込み関数がないため、次のように自分で作成しました。 procedure MinMax(a, b, c): local min, max if a > b: max = a min = b else: max = b min = a if c > max: max = c else: if c < min: min = c return (min, max) …

3
キーボードエコー中にCPUが関与するのはなぜですか?
現在、コンピューターサイエンスの試験に向けて勉強していて、やや困惑している概念に出くわしました。 キーボードでキーを入力すると、ASCII文字がCPUに送信されます。この文字を受け取ると、CPUは同じ文字を画面に出力します。このプロセスはエコーと呼ばれます。CPUを使用する代わりに、このエコープロセスをキーボード/スクリーンユニット内で実行して、CPUが他の有用な作業を自由に行えるようにしないのはなぜですか。 今、直感的には、キーボード/画面ユニットが定義されておらず、CPUが相互接続ネットワークを介して画面とキーボードの間の通信を担当するデバイスであるためです。しかし、キーボード/スクリーンユニットが言及されているという事実は、重要な概念が欠けていることを意味しているように感じるかもしれません。これは事実ですか?なぜエコープロセスにCPUを使用するのですか?

1
忘却型RAMとは何ですか?
誰かが私に正確に気付かないRAMとは何かを私に説明できますか? 次のような説明がわかりましたが、技術的な側面を理解したいと思います。 暗号化は、プライバシーを確​​保するのに必ずしも十分ではありません。攻撃者が暗号化されたストレージへのアクセスパターンを観察できる場合でも、アプリケーションの動作に関する機密情報を知ることができます。Oblivious RAMは、アクセスされているメモリを継続的にシャッフルすることでこの問題を解決します。これにより、アクセスされているデータ、または以前にアクセスされたデータを完全に隠すことができます。

3
CPUキャッシュはどのソフトウェアコンポーネントによって管理されますか?
CPUキャッシュは、時間的および空間的局所性を利用して使用されます。私の質問は、これらのキャッシュを管理する責任があるのは誰ですか?このオペレーティングシステムは、低レベルのOS関数呼び出しを使用して、特定のアクセスパターンを識別し、キャッシュを管理(つまり、データを格納)しますか?

4
オペレーティングシステムのコンテキストで割り込みとはどういう意味ですか?
私は、夏の間、Silberschatz、Galvin Gagne(第8版)によるオペレーティングシステムコンセプトを読むことにしました。オペレーティングシステムに関連する割り込みとその役割-私を混乱させるトピックにたどり着きました。 テキストは、オペレーティングシステムが「init」などの最初のプロセスを開始し、「イベント」が発生するまで待機することを示しています。このイベントは通常、割り込みによって通知されます。また、割り込みはハードウェアまたはソフトウェアのどちらからでも発生する可能性があると述べています。これはどのように機能しますか?オペレーティングシステムは割り込みによって駆動されていますか? 私はいくつかの全体像の理解を探しています。

4
ワードまたはバイトでアドレス指定できますか?正しい用語
どうやら、バイトはそれ自体が8ビットであると確立しました(それは正しいですか?)。RAMとNORフラッシュは通常、かなり細かいレベルでアクセスできますが、アドレス可能な最小単位が8ビット、16ビット、またはその他の2ビットの累乗であるかどうかを判断するのはシステムアーキテクチャ次第です。正しい用語は、これをワードアドレス指定可能と呼ぶことでしょうか?または別の言い方をすれば、単語はアドレス可能な最小単位のサイズですか?または、これを説明する他の用語はありますか? mabye nibble、byte、word、double wordはすべてビット長が可変で、アーキテクチャーによってのみ定義されますか?したがって、1バイトが常に8ビットであるのは単なる偶然でしょうか。たとえば、誰かがいくつかの新しいCPUとメモリタイプを設計し、彼女のバイトを16ビットに定義できますか? 主な質問:最小のアドレス可能なメモリブロックの正確な用語は何ですか? 副問:私が探しているこの単語の反意語は何ですか(たとえば、NANDフラッシュで使用されます)?ページアドレス可能、ブロックアドレス可能?どちらも正しいですか、それとも不正確ですか?

1
私はビー玉を動力源とする機械式コンピュータを作りました。その理論上の制限は何ですか?
ここ数年、私はビー玉で動く機械式コンピューターを作り、それからゲームを作りました。これは、2つの重要な違いを除いて、古いDigi-Comp IIに似ています。 部品はボード上で再配置可能です。 ギアを使用して複数の「ビット」を接続できます。これらのビットの1つが反転すると、それに接続されている他のビットが反転します。 上記のリンクは、それがどのように機能するかを説明しています。私の質問は、その理論的な限界は何ですか?私の理論的なコンピューティングの背景は弱いので、ELI5をお試しください。 編集:私は明らかな制限には興味がありません:速度(そこでレースに勝つことはありません...)、ボードサイズ、またはビー玉の数。私はその理論的な限界にもっと興味があります。多分それはそれを2つの質問に分けるのに役立つでしょう: チューリング完全であることをどのように証明(または反証)できますか? 3つ以上のギアビットが接続されている場合、摩擦が大きくなり、大理石が一度にすべてを回転させることができません。追加の制限はありますか? ありがとうございます-回答を読んで本当に興奮しています!私はこれについて長い間考えてきました。

3
コンピューターは他のことをしながらどのようにビデオを再生しますか?
コンピューターでのビデオ再生はどのように行われますか?ユーザーがYouTubeコメントフィールドに入力するなどの別のアクティビティを実行すると、ビデオの再生が続行されるため、CPUだけに依存しているわけではありません。ストリーミングビデオの場合、このタスクはさらに複雑に思われますが、データはおそらくネットワークインターフェイスからビデオ/グラフィックスコントローラーに転送される必要があります。 編集:私は、CPUが常に複数のプロセスとスレッドを切り替えることを理解していることを明確にすべきでした。私の質問は、ビデオの再生についてより具体的にすることを意図していた。ビデオ処理はグラフィックチップセット/カードで行われますか?それらは通常バッファリングを提供していますか?または、すべてを他のタスクのために時間を割いてシングルコアCPUで処理できますか、またはローエンドCPUが(ネットワークではなく)遅延なしにビデオを再生できると思うのは間違っていますか?

3
1と0のビットレベルよりも低いものはありますか?
コンピューターのアーキテクチャーとその仕組みについて学習する場合、マシンが理解できる最も低い言語は1&0のバイナリーであると考えられます。そして、私たちが入力するものはすべてバイナリに変換/変換する必要がありますが、2進数ですそれは、バイナリを実際の機械語に変換するために別のインタプリタ/コンパイラが必要になることを意味しませんか?エレクトロニクスから、コンピューターは主にICなどのCPUで構成されているため、トランジスタなどで作られていることがわかります。これらのツールが理解できるのは電気だけなので、電気はコンピューターにとって最も理解しにくい言語です。だから私の懸念は、バイナリは本当に1s&0sなのか、それとも1s&0sが電気の有無を表すために使われているだけなのか?それが電気の有無の単なる表現であるとすると、入力するコマンドとバイナリの間に別の中間言語または下位言語がなく、回路がどこに電流を送信するか、どこに送信しないかがわかるでしょうか?

2
カーネルモードからユーザーモード(またはその逆)への変更
Galvinによるオペレーティングシステムの本を読んでいます。Galvinは、カーネルモードとユーザーモードとは何か、両方のモードに与えられる命令特権、およびモードビットについても説明しています。しかし、モードがどのように変化するか知りたいです。基本的に私は次の質問を解決したいと思います: CPUには、特権モードと非特権モードの2つのモードがあります。モードを事前から非事前に変更するため a)ハードウェア割り込みが必要 b)ソフトウェア割り込みが必要です。 c)特権命令が必要です。 d)非特権命令が必要です。 私が理解していることから、 ユーザーモードからカーネルモードへ-ハードウェア割り込みが必要です(ディスクI / Oのように)。ユーザープログラムが許容範囲を超えるメモリにアクセスするのに疲れた場合、トラップが発生します。トラップは基本的にOSによって処理されるソフトウェア割り込みです。これで、ユーザーモードでは特権命令を実行できなくなりました。したがって、I / O要求などの非特権命令は、ユーザーをカーネルモードに変更できます。だから私は、変えるために 非特権(ユーザー)から特権(カーネル)へ-H / W割り込み、S / W割り込み、非特権命令が実行します。 カーネルがユーザーモードになりました。OSはカーネルをユーザーモードに変更できます。そのため、カーネルからユーザーモードに変更する特権命令を実行します。H / wまたはS / w割り込みを生成する必要はありません。だから私は結論を変える previledgedからnon-previledgedへ-特権付きの命令で実行されます 私は正しいですか? また、カーネルモードで実行すると、すべての割り込みが無効になりますよね?したがって、答えは(a)または(b)にはできません。また、OSは基本的にはソフトウェアであるため、ハードウェア割り込みを発生させることはできません。 また、OS自体が割り込みを処理するため、カーネルからユーザーモードに変更するために割り込みを生成(およびサービス)する必要がある理由は私にはわかりません。 私がどこか間違っている場合はお知らせください。これに関するどんな助けでもありがたいです。

1
ラッチとフリップフロップの正確な違いは何ですか?
私が理解したことから: フリップフロップはクロックラッチです。つまり、フリップフロップ=ラッチ+クロック ラッチは継続的に入力をチェックし、入力に変化があるたびに出力を変更します フリップフロップも継続的に入力をチェックしますが、クロックによって決定される出力時間を変更します。[したがって、入力が変更されても、出力が同時に変更されない場合があります] イネーブル付きのラッチ[ゲートラッチ]は、クロックラッチのラッチとは異なります。 Morris Mano&WikipediaのDigital Logicから読んでいます。

1
パイプラインアーキテクチャで構造的危険はいつ発生しますか?
パイプラインアーキテクチャで構造的危険が発生する比較的簡単な例をいくつか探しています。 私が考えることができる唯一のシナリオは、パイプラインのさまざまな段階(つまり、最初の命令フェッチ段階とその後のメモリ読み取り/書き込み段階)でメモリにアクセスする必要がある場合です。 スーパースカラーなどのより複雑なアーキテクチャーには、より多くの構造上の危険があると思います。命令が実行ユニットにディスパッチされたが、ユニットが使用中であるためにキューに入れられた場合、それは構造的ハザードとして分類されますか? これがアーキテクチャ固有のものである場合は、MIPSまたは同様のものを想定してください。

2
現在のコンピューターが構築されている数学モデル
「チューリングマシンは実用的なコンピューティングテクノロジーとしてではなく、コンピューティングマシンを表す仮想デバイスとして意図されていると言われています。チューリングマシンは、コンピューター科学者が機械計算の限界を理解するのに役立ちます。」[ウィキペディア] では、どのモデルで現在のマシンが構築されていますか?

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.