Arm Community
Site
Search
User
Site
Search
User
Groups
Education Hub
Distinguished Ambassadors
Open Source Software and Platforms
Research Collaboration and Enablement
Forums
AI and ML forum
Architectures and Processors forum
Arm Development Platforms forum
Arm Development Studio forum
Arm Virtual Hardware forum
Automotive forum
Compilers and Libraries forum
Graphics, Gaming, and VR forum
High Performance Computing (HPC) forum
Infrastructure Solutions forum
Internet of Things (IoT) forum
Keil forum
Morello forum
Operating Systems forum
SoC Design and Simulation forum
SystemReady Forum
Blogs
AI and ML blog
Announcements
Architectures and Processors blog
Automotive blog
Graphics, Gaming, and VR blog
High Performance Computing (HPC) blog
Infrastructure Solutions blog
Internet of Things (IoT) blog
Operating Systems blog
SoC Design and Simulation blog
Tools, Software and IDEs blog
Support
Arm Support Services
Documentation
Downloads
Training
Arm Approved program
Arm Design Reviews
Community Help
More
Cancel
Support forums
SoC Design and Simulation forum
AHB Bufferable/Non-bufferable write
Jump...
Cancel
State
Not Answered
Locked
Locked
Replies
8 replies
Subscribers
88 subscribers
Views
15399 views
Users
0 members are here
AHB.AMBA
Bus Architecture
Options
Share
More actions
Cancel
Related
How was your experience today?
This discussion has been locked.
You can no longer post new replies to this discussion. If you have a question you can start a new discussion
AHB Bufferable/Non-bufferable write
Hariprem Arora
over 11 years ago
Note: This was originally posted on 12th September 2008 at
http://forums.arm.com
Hi,
Please clarify the following issue related to AHB write:
If HPROT[2] = 1, AHB write is bufferable and we need to provide OKAY response as soon as the AHB slave interface receives data without caring that the data is actually written into the memory or not.
if HPROT[2] = 0, AHB write is non-bufferable, AHB slave interface needs to provide response to the master only when the data is actually written into the memory.
The issue is that if we see this non-bufferable transaction, the state of HRESP will by default be OKAY (HREADY is HIGH to accept the next data) and it means that we are providing the response in advance for non-bufferable write.
Please clarify how to distinguish between the two transactions.
If possible, please provide waveforms for INCR undefined length & non-bufferable write
Parents
0
Colin Campbell
over 11 years ago
Note: This was originally posted on 16th September 2008 at
http://forums.arm.com
Hi Hari,
I would think there are problems with both approaches.
For approach 1, where you only provide a real response for the last transfer in a burst, this will improve efficiency, but it relies on the master being designed to interpret this final response as applying to the complete burst. Just something your software needs to be aware of when handling the ERROR.
Also, you would need to make sure that this final real response you return is a summation of all the real responses for the burst, so if only the 3rd transfer in an INCR8 burst received an ERROR, you would need to return ERROR for transfer 8, even if it actually was an OKAY from the slave.
I am only looking at ERROR responses because for SPLIT and RETRY you would need to locally handle them in your buffering logic, while adding wait states to the master to stall it.
For approach 2, what will you do if a master attempts an INCR burst ?
If you do not support them, would you signal ERROR (which would be a problem for most masters) ?
Sorry, I know I am only raising problems here and not solutions, but if you want to fully support bufferable writes, you should only do so if you know absolutely that the transfers will complete with OKAY responses, or if you don't care what the response is from the slave.
Your approach 1 is probably the best compromise between efficiency and complexity, assuming the master knows how to interpret the final response, as it does allow buffered writes while still returning a real response.
Approach 2 I would think is too restrictive.
I guess it really depends on your application, you know what types of bursts your master(s) will attempt, what responses are possible from your slave(s), and what sort of performance you need, so it looks like you are considering all the right sorts of things.
Good luck.
JD
Cancel
Up
0
Down
Cancel
Reply
0
Colin Campbell
over 11 years ago
Note: This was originally posted on 16th September 2008 at
http://forums.arm.com
Hi Hari,
I would think there are problems with both approaches.
For approach 1, where you only provide a real response for the last transfer in a burst, this will improve efficiency, but it relies on the master being designed to interpret this final response as applying to the complete burst. Just something your software needs to be aware of when handling the ERROR.
Also, you would need to make sure that this final real response you return is a summation of all the real responses for the burst, so if only the 3rd transfer in an INCR8 burst received an ERROR, you would need to return ERROR for transfer 8, even if it actually was an OKAY from the slave.
I am only looking at ERROR responses because for SPLIT and RETRY you would need to locally handle them in your buffering logic, while adding wait states to the master to stall it.
For approach 2, what will you do if a master attempts an INCR burst ?
If you do not support them, would you signal ERROR (which would be a problem for most masters) ?
Sorry, I know I am only raising problems here and not solutions, but if you want to fully support bufferable writes, you should only do so if you know absolutely that the transfers will complete with OKAY responses, or if you don't care what the response is from the slave.
Your approach 1 is probably the best compromise between efficiency and complexity, assuming the master knows how to interpret the final response, as it does allow buffered writes while still returning a real response.
Approach 2 I would think is too restrictive.
I guess it really depends on your application, you know what types of bursts your master(s) will attempt, what responses are possible from your slave(s), and what sort of performance you need, so it looks like you are considering all the right sorts of things.
Good luck.
JD
Cancel
Up
0
Down
Cancel
Children
No data