Arm Community
Site
Search
User
Site
Search
User
Groups
Arm Research
DesignStart
Education Hub
Graphics and Gaming
High Performance Computing
Innovation
Multimedia
Open Source Software and Platforms
Physical
Processors
Security
System
Software Tools
TrustZone for Armv8-M
中文社区
Blog
Announcements
Artificial Intelligence
Automotive
Healthcare
HPC
Infrastructure
Innovation
Internet of Things
Machine Learning
Mobile
Smart Homes
Wearables
Forums
All developer forums
IP Product forums
Tool & Software forums
Support
Open a support case
Documentation
Downloads
Training
Arm Approved program
Arm Design Reviews
Community Help
More
Cancel
Developer Community
IP Products
Processors
Jump...
Cancel
Processors
Classic processors forum
ARM926ejs Cache linefill
Blogs
Forums
Videos & Files
Help
Jump...
Cancel
New
State
Accepted Answer
+1
person also asked this
people also asked this
Replies
4 replies
Subscribers
2 subscribers
Views
3687 views
Users
0 members are here
Arm9
Related
ARM926ejs Cache linefill
Offline
guestposter guestposter
over 7 years ago
Top replies
Offline
Peter Harris
over 7 years ago
+1
verified
Note: This was originally posted on 25th March 2009 at http://forums.arm.com > If not, how can we make sure the coherence of DCache and SDRAM when in Write-though mode? Here you are basically trying to...
0
Offline
guestposter guestposter
over 7 years ago
Note: This was originally posted on 25th March 2009 at
http://forums.arm.com
Hi isogen74:
Thank you for your reply .
in my system, i really use the write-back mode, i post question using write-though mode only because i want to know exactly what is the meaning of "buffered store to external memory".
i am sorry that i still can not understand how to buffered store to external momory. does it mean that when write cahce hit, data first updated in DCache, and then send data to write buffer, and after a little time, we assue it is 1us, the data in write buffer is updated to SDRAM automatically.
>All ARM9 caches are read-allocate. A write that misses will not update the cache.
in my mind, i think write miss should of course do linefill immediately, why doesn't ARM implement this on ARM9? is it because of cost? and in arm11, is this implemented?
another question: in ARM9 TRM, it said as below:
The write buffer is used for all writes to a noncachable, bufferable region, write-through
region, and write misses to a write-back region. A separate buffer is incorporated in the
DCache for holding write-back data for cache line evictions or cleaning of dirty cache
lines.
The main write buffer has a 16-word data buffer and a four-address buffer.
The DCache write-back buffer has eight data word entries and a single address entry.
The MCR drain write buffer instruction enables both write buffers to be drained under
software control.
does it mean that there are two physical write buffer on ARM9, one is specifically for CPU STR instruction which may write data to SDRAM, and the other is epecifically for DCache?
Best Regards
Cancel
Up
0
Down
Reply
Accept answer
Cancel
0
Offline
guestposter guestposter
over 7 years ago
Note: This was originally posted on 25th March 2009 at
http://forums.arm.com
Hi isogen74:
thank you very much for explaining this to me patiently .
Best Regards
Cancel
Up
0
Down
Reply
Accept answer
Cancel
0
Offline
Peter Harris
over 7 years ago
Note: This was originally posted on 25th March 2009 at
http://forums.arm.com
> in my system, i really use the write-back mode, i post question using write-though mode only because i want to know exactly what is the meaning of "buffered store to external memory".
Buffering just means that the core can (probably) proceed with useful work without waiting for the actual write to hit external memory. The actual implementation of buffering varies from core to core - but in most cases there is a general write buffer for small writes and an optimized write buffer for cache-line evictions. (As you mention at the bottom of your post)
> Does it mean that when write cahce hit, data first updated in DCache, and then send data to write buffer, and after a little time, we assue it is 1us, the data in write buffer is updated to SDRAM automatically.
Yes, that sounds right to me. Microarchitectures vary slightly so some systems may issue cache update and external DRAM write in parallel.
> In my mind, i think write miss should of course do linefill immediately, why doesn't ARM implement this on ARM9? Is it because of cost?
I suspect so ... the usual arguments for not doing something are related to power, silicon area and meeting cache timing constraints.
> and in arm11, is this implemented?
ARM11 MPCore and Cortex-A* cores implement write allocate caches. I'm not sure about the Cortex-R4 - I've never used one
> Does it mean that there are two physical write buffer on ARM9, one is specifically for CPU STR instruction which may write data to SDRAM, and the other is epecifically for DCache?
Yes. The cache writebuffer is optimized because it only ever has to handle half-line length bursts which are always naturally aligned.
Cancel
Up
0
Down
Reply
Accept answer
Cancel
+1
Offline
Peter Harris
over 7 years ago
Note: This was originally posted on 25th March 2009 at
http://forums.arm.com
> If not, how can we make sure the coherence of DCache and SDRAM when in Write-though mode?
Here you are basically trying to assume coherence between to memories with radically different timing properties - assuming other bus masters can access the DRAM, and that the DRAM is clocked slower than the cache you might be waiting some time for the DRAM write to complete. I think you would have to perform a drain write-buffer operation to ensure coherence.
Is there any particular reason why you want to use write-through rather than write-back? Write-back is normally much more power efficient, and more bus bandwidth friendly - and adding the necessary cache maintenance operations to synchronize with external memory is not normally too difficult.
> When arm9 write a write-though region, if cache miss, will it first fill the cache line, then write
data to DCache, and at last send to from DCache to Write Buffer?
All ARM9 caches are read-allocate. A write that misses will not update the cache.
Cheers, I
Cancel
Up
+1
Down
Reply
Reject answer
Cancel
More questions in this forum
By title
By date
By reply count
By view count
By most asked
By votes
By quality
Descending
Ascending
All recent questions
Unread questions
Questions you've participated in
Questions you've asked
Unanswered questions
Answered questions
Questions with suggested answers
Questions with no replies
Answered
Break point at SWI handler
0
Arm9
2930
views
1
reply
Latest
over 5 years ago
by
Henry
Answered
why do we call ARM is a Processor not controller? Although ARM7(LPC2148) and ARM cortex-m series is controller.
+2
14992
views
7
replies
Latest
over 5 years ago
by
Jens Bauer
Answered
Is there enough processing horsepower in the ARM1176 processor ....
0
Arm11
3522
views
2
replies
Latest
over 5 years ago
by
Paul Harbin
Answered
Why does ARMSim# not recognize instruction 'addw'?
0
Arm7
Thumb
4961
views
3
replies
Latest
over 5 years ago
by
Robert
Answered
In ARM7 and ARM9 PC=current + 8, but in the cortex-A7(8-stage pipeline) the PC is also the same value(PC=current +8), how does this work?
0
Arm7
Arm9
Armv8-A
Cortex-A
Cortex-A7
3468
views
2
replies
Latest
over 5 years ago
by
daith
<
>
View all questions in Classic processors forum