[Subject Prev][Subject Next][Thread Prev][Thread Next][Subject Index][Thread Index]
[OSASK 1840] Re: C言語標準ライブラリ
- Subject: [OSASK 1840] Re: C言語標準ライブラリ
- From: Hidemi KAWAI <kawai !Atmark! imasy.org>
- Date: Thu, 19 Jul 2001 14:39:33 -0000
こんばんは、川合です。
MURAKAMI Reki さんは 2001/07/19 21:46:18 の「[OSASK 1839] Re: [O
SASK 1838] C言語標準ライブラリ」で書きました:
# Subject編集が不調のようですね。>もねさん
>memcpy とか strcpyですが、昔(386とか486)は アラインメントをそろえた上でmovsw
>とかを使って高速にというバージョンのものがありました。
>最近のCPUでも その方が早いんでしょうかね……
・・・と思いきや、そうではないようです。
i486以降では、MOV命令やADD命令やSUB命令など、基本的な命令はハ
ードワイヤー化されたので、ほとんど1クロックで実行できるようにな
りました。しかしストリング命令はPentiumになってもマイクロコード
で実行されるので速くなっていません。
たとえば、
EAX = [DS:ESI];
ESI += 4;
[DS:EDI] = EAX;
EDX += 4;
の4命令を、i486は(ペナルティーがなければ)4クロックで実行します
。Pentiumならペアリングのおかげで2クロックです。一方、
MOVSD
だと、i486では7クロックで、Pentiumでは4クロックです。したがって
i486以降であえてストリング命令を使う意義は、速度ではなくてコード
サイズの節約です。
インテル以外のCPUの資料がないので確認はしていませんが、AMDやCy
rixなどでも同じ傾向だと思います。
>osaskにおける malloc と open の違いは なかなか微妙なとこですね……
はい。
しかし、今のバージョンのmallocはまがい物なので、openとは全然違
いますが(笑)。・・・stdlibのmallocは、スタック領域の一部を削っ
て割り当てています(本来はスタックとは別の領域を割り当てるべきな
んですが)。
それでは。
--
川合 秀実(KAWAI Hidemi)
川合堂社長 / OSASK計画総指揮 / カーネル開発班
E-mail:kawai !Atmark! imasy.org
Homepage http://www.imasy.org/~kawai/