質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
CPU

CPUは、コンピュータの中心となる処理装置(プロセッサ)で中央処理装置とも呼ばれています。プログラム演算や数値計算、その他の演算ユニットをコントロール。スマホやPCによって内蔵されているCPUは異なりますが、処理性能が早いほど良いとされています。

Q&A

解決済

4回答

4396閲覧

I/O関連の処理はCPUを使用しますか?

raise_a_hand

総合スコア26

CPU

CPUは、コンピュータの中心となる処理装置(プロセッサ)で中央処理装置とも呼ばれています。プログラム演算や数値計算、その他の演算ユニットをコントロール。スマホやPCによって内蔵されているCPUは異なりますが、処理性能が早いほど良いとされています。

0グッド

0クリップ

投稿2021/04/07 21:01

一般的なプログラミングのベストプラクティスとして、「ファイルの読み書き、DBの読み書きなどのファイルI/O、ネットワーキングI/Oを伴う複数の処理は、並列化することで高速化出来る」というものがあると思います。

そのプラクティスに関しての疑問なのですが、それらのI/O処理はCPUは使用しないのでしょうか?もしCPUを使用すると仮定すると、シングルコアの場合は結局並列処理にならずパフォーマンスは変わらない(むしろコンテキストスイッチによりパフォーマンスは下がると思います)

しかし実際にはパフォーマンスは向上するため、恐らくCPUは使っていないのだと思っていますが、CPUが全ての処理を行う認識なのでCPUを使っていないと言うのも不思議に思います。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

takasima20

2021/04/09 10:57

そのコンピューターとしてメインフレームはありですかね? 特殊ケースはいらないなら話はそれまでですが…
raise_a_hand

2021/04/11 03:28

特殊ケースについてはそれらを扱う人が別で考えればいいので、今回は不要ですね。一般的な話だけ出来ればと思います。
guest

回答4

0

ベストアンサー

I/O処理はCPUは使用しないのでしょうか?

全く使用しないということはありませんが、ほとんど使用しません。

サウスブリッジ経由で周辺機器(つまりCPUではないチップ)にIO処理を依頼し、終了すると周辺チップがCPUに割り込みを上げて通知します。

ハードウェアの仕組みとソフトウェア処理 ―― マイコンの動作を理解するあたりをお読みください。

投稿2021/04/07 22:26

編集2021/04/07 22:33
ppaul

総合スコア24670

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

raise_a_hand

2021/04/11 03:30

お伺いしたかった内容に的確にお答えくださったのでベストアンサーにいたしました。 詳細を知りたい場合のリンクの方もありがとうございます。 他の方々もご回答ありがとうございました。
guest

0

CPUが全ての処理を直接行っているわけではありません

例えば、HDDには磁気ディスクを回転させるための機械駆動が必要です。一方、CPUは電子回路ですので、機械駆動を単独で実行できません。あくまでも、CPUは命令と結果受理を行うだけです。

並列化の観点で言えば、

HDDが下請け処理している間にCPUは別の処理もできます。

投稿2021/04/08 07:50

HogeAnimalLover

総合スコア4830

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

I/O処理をなんで特殊視するかというと、

I/OはCPUの処理に対して概ね「遅い」のです。
CPUからデータを1単位取得する/出力するリクエストを出して(CPUにとっては長い時間が過ぎて)
I/O系からデータが揃ったという通知が来て、次の1単位についてCPUからデータを取得する/出力するリクエストを出して(CPUにとっては長い時間が過ぎて)
...

シングルタスクでは、この「長い時間が過ぎて」の間もずっとそのタスクがCPUを占拠しています。ただ待つために。これは勿体ない。
そこで、データが揃ったらなんらかのイベントでタスクを起床してもらうようにして、I/Oタスクは他のタスクにCPUを明け渡します。つまり並列化です。CPUがただ待つのに使っていた時間を有効に使えます。つまり、処理全体が速くなります。

I/O処理全体がCPUを使わないということはありませんが、ただ使用率が低く、CPUを(有効には)使わない待ち時間が長いので、その間に他のタスクをやれば速くなる。そういう話です。

なお、「シングルコア/マルチコア」と「シングルタスク/マルチタスク」とは、関連はありますが別の話です。混同しないようにしましょう。

投稿2021/04/07 23:01

thkana

総合スコア7703

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

CPUつかいますよ
厳密に言うと、SATAなどのインターフェースにコマンド送って、データのやり取りする、という程度には使います。
SATAから先はHDDなりが勝手に読み書きなど実行しますが

投稿2021/04/07 22:23

y_waiwai

総合スコア88042

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問