[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[netbsd,09530] Re: SH3 のキャッシュの問題
- To: netbsd@xxxxxxxxxxxxx
- Subject: [netbsd,09530] Re: SH3 のキャッシュの問題
- From: "Hiroshi SAKURAI" <an.olive.tree@xxxxxxxxx>
- Date: Wed, 30 Apr 2008 10:39:57 +0900
- Cc: tsutsui@xxxxxxxxxxxxxxx
- Dkim-signature: v=1; a=rsa-sha256; c=relaxed/relaxed;d=gmail.com; s=gamma;h=domainkey-signature:received:received:message-id:date:from:to:subject:cc:in-reply-to:mime-version:content-type:content-transfer-encoding:content-disposition:references;bh=gXiXBYioYkVLKZ8SYePcnANoTvdOreiMgRmFKtwOnJM=;b=omZI99O91GAPRUWtoapToPatSsmMulXa/6qNwOYNGqnWU0PKbIofh2pCbVfDkEUuEzc+e+KVpZMnHcSBKNw2Bwjg4D2YDr87I9raBYWLQsWXD2UzZayUth92z8RE3LT/trAsScNrEtbEE18ZvLHVAYd7AqANsuHRdq+RjIo9mqs=
- Domainkey-signature: a=rsa-sha1; c=nofws;d=gmail.com; s=gamma;h=message-id:date:from:to:subject:cc:in-reply-to:mime-version:content-type:content-transfer-encoding:content-disposition:references;b=nAQQGWf6fbOE8GFAmjkeTI3Zi//XdzNSGCdpi5vtn0vR+McbhDklG9H4f5fLud6SH4qFb2sOO59gznoX3gCRtvHigyV7HkzhuaVHWvLU0JJIznj65XsziZCA02Nlto0hJBofbzq5Vo703FPATyDrJDCc2900OYlhecyqdaHn2mM=
- In-reply-to: <080430101100.M0111718@xxxxxxxxxxxxxxxxxxxxxx>
- References: <6245f7a30804291732g78cc85a5j152af0427c5a20cb@xxxxxxxxxxxxxx><080430101100.M0111718@xxxxxxxxxxxxxxxxxxxxxx>
筒井さん
桜井です。
2008/4/30 Izumi Tsutsui <tsutsui@xxxxxxxxxxxxxxx>:
> virtual alias に関してはいろいろ面倒なので
> 上林さんの言われるように 16k モードにした方が
> 手っ取り早いかもしれません。
> (index が 16k/4way = 4k <= PAGE_SIZE なら alias は発生しない)
筒井さんと上林さんのおっしゃっている事が、ようやく今理解できました…。
(理解が遅くてすみません)
- 4KBページだと、bit31-12がMMUで変換される
- 1KBページだと、bit31-10がMMUで変換される。
- cacheのエントリ数が128だと、bit10-4がindexに使われる。
- cacheのエントリ数が256だと、bit11-4がindexに使われる。
- cacheのエントリ数が512だと、bit12-4がindexに使われる。
- MMUで変換されるビットと、indexに使われるビットが重なるとaliasが発生する
- cacheを16KBにしておけば、エントリ数が256なので、ビットが重ならない。
という事なのですね。
32KBキャッシュにして、invalidateばかり行われると遅くなりそうなので、
16KBで動作させる事にします。
> FreeBSD/arm の pmap をちらっと見た範囲では
> pmap_copy_page() などでも単純に cache flush している
> だけで特別に対処がしてあるようには見えませんね。
> というか NetBSD/arm32 から持っていっただけかも。
>
> ……と思って NetBSD/arm32 の pmap を見たらこちらは
> #ifdef PMAP_CACHE_VIPT というのがありますね。
> pmap_vac_me_harder() あたりが参考になるかも?
> (ちゃんと読んでませんが R/O なら alias を許容するコード?)
情報ありがとうございます。
余力があれば、こちらも読んでみます。
--
Hiroshi SAKURAI
http://assam-at-night.blogspot.com/