リンクフリーを近日中にとりやめる予定です

すでにリンクを貼っていただいている方、ご一報頂きたくお願い申し上げます。


ごく少数ですが、リンクをお断りする場合があります



ブログ内 風景光景カテゴリー

続編記事などをご希望の方は こちらへどうぞ

スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

[未掲載分] 車輪の再発明 (2)

元来、好ましい意味で用いられない「車輪の再発明」。



筆者は、そのような行為を肯定的に捉えている。
なぜならば、新しい技術や文化が芽生えるきっかけは、一見無駄と思われることへの挑戦である・・・


お知らせ
活動休止にともない、この記事を事前に予約投稿してあります。
トップ記事の固定を目的としています


この題目は2012年暮れ頃に掲載しようと下書きし、諸事情により掲載却下とした分です。
前話、「車輪の再発明 (1)」にひきつづき、利用環境を OS はWindows , CPU は Intel 製、いわゆるウィンテル機を前提として綴ります。

いきなり難しいコードを載せるのもアレなので、今回は概論。
コンピュータの中で頻繁に行われる、データの複写 ( コピー ) について。

その前に、
複写と移動の違いが曖昧なヒトもいることでしょう。



場所A、Bがあるとしましょう。
場所Aにあるモノと同じモノを場所Bに作成する。ここまでが「複写」、「コピー」です。
ちなみに、複製を作るに該当する英単語は 「duplicate」。
場所Aにあるモノと同じモノを場所Bに作成し、場所Aにあったモノを消してしまうのが「移動」。
勘の鋭いヒトはお気づきの通り、「場所Aにあったモノを消す」、つまり、かたづける手間が増えます・・・

例えば、ワープロや画像処理アプリ( ソフトウェア )で図形の移動処理を施したとしましょう。図形を移動する前の部分が無になる、つまり、片付けられたように見えます。
「移動」に関して直感的に捉えようとした場合、元の部分 ( ここでは場所A ) がキレイに消えてしまうように想えるでしょう。
コンピュータ内部での処理に限って言えば、元の部分を消さないこともしばしば。
(漠然と綴るとキリが無いので、利用OSをWindows と想定して話を進めています。)

- - - 複写や移動の話から逸れます - - -

アプリで何か処理をしようとした場合
・OSにメモリを割り当ててもらいます。
(ここでは、場所AやBといったメモリの一部を作業場所として借りている状態。)
・ある程度の処理を行い、不要になったメモリを解放することになっています。
(OS から借りていたメモリを返却。)

人間の生活に例えれば、図書館で原本を借りてくる。原本に載っている重要な部分を別のノート等に書き写す、ここまでは複写、コピーです。借りてきた原本はそのまま、すなわち、手を加えずに返却するのがマナー。
いつまでも返却しなかったり、原本に手を加えてしまうのは「お行儀が悪い」。

ただし、資源の再利用として、同じメモリ部分をくり返し利用する例も考えられます。
Windows などのOS 、つまり、複数のアプリを同時に実行できる環境において、ひとつのアプリが「多量にメモリを使いたくても許可されない」事態も発生します。
そのような状況では、不要になった ( 本来ならば OSに返却するのが望ましい ) 部分を再利用するような手法も有効です。
先の図に戻り、「場所Aにあるモノと同じモノを場所Bに作成し・・・」で言うならば、場所Aにあったモノは用済みとなりますので、早めに返却すべきでしょう。が、返却して、再度借りると手間がかかるため、不要になった「場所A」を返却せず別の作業をする場所として使い続けるといった具合に・・・

メモリを作業机に置き換えて考えてみます。
何らかの作業を行いたいとして、作業机が8卓分あると進行がスムーズになるとします。ところが、空いている作業机が2卓しか無い場合どうでしょうか。
その2卓の机の上で、できうる範囲の作業を進め、一度片付け、残りの作業を進めてゆくことでしょう・・・

しばしば、アプリ(ソフトウェア)を組む際には、「データを局所に集ておく」「局所性を高める」ことが良いとされています。広大なメモリ空間を取得して処理するよりも、狭い空間のほうがキャッシュにヒットしやすい傾向にあります。言い換えれば、小回りが効きやすくなります。

- - - 複写や移動の話に戻ります - - -

複写を高速化できるのか???
つまり、
さらに高速にデータを転送できるのか???

まず、誤解を避けるために記しておきます。
USBメモリや外付けHDDを用いてデータをバックアップするのも「データの転送」と呼びます。
今回綴る「データの転送」の主語は「PC 内部において、メモリのある地点から別の地点への・・・」となります。長いので省いています。

少し視野を広げると、古くからのDMA (Direct Memory Access の略) 転送と呼ばれる、データの転送方法もあります。
今回綴るのは、「CPU の演算器を介したデータ転送」。

「演算器」という呼び方は少々堅苦しいかもしれません。別の呼び方では「アキュムレータ」、「レジスタ」などなど。
役割というか、できることを簡単にいえば
・計算するための基の数値データを読み込む、積み込む = ロード
・何らかの演算をする、
・演算結果 ( 数値 ) をどこかへ置く、残す = ストア、セーブ。

しばしば「~~ビットCPU」のような呼び方も用いられます。
例えば、「32ビットCPU」であれば、8ビットが1バイトですので、4バイト分のデータを扱えることになります。
32ビット版のOS を利用しているならば一度に4バイト分、データを積み下ろしができます。
( 64ビット版のOSならば一度に8バイト分 )

ビットとバイトに関しては当ブログ、PCのナゼ!?カテゴリー内、「遅くない除算」中ほどで触れてあります。

ところで、CPU は現在に至るまで、さまざまな機能が拡張、追加されてきました。
( ウィンテル機を前提に綴っています。ここで指しているCPU は Intel 製 の CPU。ただし Itanium シリーズを除く)

浮動小数演算を高速化するための FPU 、マルチメディア処理を高速化しようと MMX や SSE、さらに、SSE2 , SSE3 , SSE4を経て、AVX という拡張機能が追加されてきました。
拡張された機能を用いれば、SSE2 では 16バイト分、AVX では 32バイト分のデータを一度に読み書きすることができます。

本来、SSE2 機能が追加された経緯としては、画像や音声などのデータ処理を効率的に行うためであり、「データ転送の高速化」が主目的ではありません。画像や音声データを加工処理する際、同じような演算が繰り返されます。ベクトル演算や並列化などと呼ばれますが、同じような足し算、乗算を一度に4回分同時実行するなどで高速化を狙うものです。
とはいえ、一度に16バイト分のデータを扱える能力を備えているのに使わないのはモッタイナイ・・・



小難しい用語ばかりで判り辛いかもしれません。
そこで、「データの転送」を「モノを運ぶ」に置き換えて考えてみましょう。

場所は旅館、数百人が集う宴会が催されるとしましょう。
「調理場から宴会場へお食事を運ぶ作業」の効率を図りたいとしましょう。

作業に不慣れな頃、一度に1人分ずつ運んでいました。
その後、作業に慣れてきたのもあり、一度に4人分ずつ運べるようになりました。
これを
「一度に16人分運べるように作業工程を改善してみよう!」
という感じが近いかも。

理屈の上では「一度に運べる量が今までの4倍」に増えます。
さてさて、「作業速度も4倍」となるのでしょうか!?

かつて、「手分けすれば速く済む?」と題し、「同じ量の作業量を手分けすれば速度が向上するのか」を綴ったことがあります。今回はそれとは異なり、「作業員一人当たりの作業効率を向上」がキモとなります・・・

長くなりましたので続きはまた後日・・・

※ これを下書きしたのは2012年暮れです。
2012年暮れ時点で最新の CPU では AVX 機能まで搭載されていました。
AVX 機能を利用するには OS が正式に対応している必要があります。具体的に挙げれば、Windows 7 (SP1 を適用)、Windows 8 以降です。
筆者はAVX 機能を搭載した CPU、対応しているOSを利用しています。当時、この記事の発端となったブロガーさんは Windows XP を利用中とのことでした。Windows XP において、AVX 機能は非対応。よって、AVX 機能ではなく、SSE2 を中心とした話となります。

さらに、下書き時点での AVX は未成熟な部分が残っており、32バイト分を2回に分けてデータを読み書きしているようです。実質、16バイト分転送と大差ない・・・

本日も最後までご覧いただきありがとうございます。

「つまらなかった」「判り辛った」という方もご遠慮なくコメント欄へどうぞ

テーマ : プログラミング
ジャンル : コンピュータ

コメントの投稿

非公開コメント

検索サイトからお越しの方へ
検索サイトからお越しの方は、ブラウザのアドレス欄vitalaboloveおよび、fc2.comが含まれているかご確認ください。
含まれていない場合、偽サイトを閲覧なされている可能性があります。

偽サイトは、当ブログの文字部分や画像部分が有害サイトへのバナーと置き換わっているようです。
プロフィール

Author:Vitalabolove
ご訪問ありがとうございます。
店長を任されておりますVitalaboloveです。

コメントはお気軽に。
今のところリンクフリーですが、あと数日でとりやめます。

画像データ、文言の引用は事前連絡くださるようお願い申し上げます。事前連絡の際は、左下、メールフォームを経由をご利用ください。

最新記事
カレンダー
09 | 2017/10 | 11
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31 - - - -
カテゴリ
ランキング
いつも応援いただきありがとうございました。ただいま休養中につきランキングへ参加していません・・・

フリーエリア
内緒話などはおきてがみをご利用ください。
月別アーカイブ
メールフォーム
掲載された記事について、ご不明な点はここからお問い合わせください

名前:
メール:
件名:
本文:

最新コメント
最新トラックバック
スパムと思われるトラックバックは削除しました
QRコード
QR
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。