cacheSimulator
所属分类:操作系统开发
开发工具:Java
文件大小:0KB
下载次数:0
上传日期:2019-03-18 01:38:28
上 传 者:
sh-1993
说明: 缓存存储器的循环测试性能模拟器,
(A loop test performance simulator for cache memories,)
文件列表:
.travis.yml (88, 2019-03-17)
docs/ (0, 2019-03-17)
docs/img/ (0, 2019-03-17)
docs/img/correct_answer.png (298381, 2019-03-17)
docs/img/loop_guess.png (281830, 2019-03-17)
docs/img/loop_run.png (294818, 2019-03-17)
docs/img/loop_test_result.png (621747, 2019-03-17)
docs/img/show_answer.png (308752, 2019-03-17)
docs/usage.md (2278, 2019-03-17)
jar/ (0, 2019-03-17)
jar/cache.jar (1852272, 2019-03-17)
pom.xml (2530, 2019-03-17)
src/ (0, 2019-03-17)
src/main/ (0, 2019-03-17)
src/main/java/ (0, 2019-03-17)
src/main/java/gui/ (0, 2019-03-17)
src/main/java/gui/MainFrame.java (3431, 2019-03-17)
src/main/java/gui/components/ (0, 2019-03-17)
src/main/java/gui/components/AboutPanel.java (1753, 2019-03-17)
src/main/java/gui/components/CachePanel.java (10847, 2019-03-17)
src/main/java/gui/components/GraphicFrame.java (4323, 2019-03-17)
src/main/java/gui/components/MemoryPanel.java (2637, 2019-03-17)
src/main/java/gui/components/TextPanel.java (1332, 2019-03-17)
src/main/java/gui/loopguess/ (0, 2019-03-17)
src/main/java/gui/loopguess/CacheQuestion.java (3595, 2019-03-17)
src/main/java/gui/loopguess/CacheQuestionGenerator.java (12147, 2019-03-17)
src/main/java/gui/loopguess/LoopGuessController.java (4794, 2019-03-17)
src/main/java/gui/loopguess/LoopGuessFrame.java (2065, 2019-03-17)
src/main/java/gui/loopguess/LoopGuessSettingsPanel.java (4951, 2019-03-17)
src/main/java/gui/looprun/ (0, 2019-03-17)
src/main/java/gui/looprun/LoopRunController.java (3185, 2019-03-17)
src/main/java/gui/looprun/LoopRunFrame.java (2177, 2019-03-17)
src/main/java/gui/looprun/LoopRunSettingsPanel.java (5950, 2019-03-17)
src/main/java/memory/ (0, 2019-03-17)
src/main/java/memory/MainMemory.java (1490, 2019-03-17)
src/main/java/memory/MemoryHierarchy.java (4088, 2019-03-17)
src/main/java/memory/MemoryResults.java (4665, 2019-03-17)
src/main/java/memory/MemorySystem.java (1860, 2019-03-17)
src/main/java/memory/cache/ (0, 2019-03-17)
... ...
[![Build Status](https://travis-ci.org/juanfresia/cacheSimulator.svg?branch=master)](https://travis-ci.org/juanfresia/cacheSimulator)
[![Coverage Status](https://coveralls.io/repos/github/juanfresia/cacheSimulator/badge.svg?branch=master)](https://coveralls.io/github/juanfresia/cacheSimulator?branch=master)
# Cache Loop Simulator
This application pretends to simulate at a basic level the loop test performed
on a computer to characterize it's memory hierarchy. It was a two-week project
made from scratch and it should not be taken as an OOP example. This tool does
not provide an accurate simulation of real-world memory hierarchy as it hugely
simplifies memory accesses (it completely neglects TLB, virtual memory, and time
variations due to write policies), however it is accurate enough to visualize
the patterns hidden behind the locality influence on cpu's performance. With
that in mind, it is meant to give computer architecture students a little more
insight into the behavior of memory hierarchy.
For those interested in this subject I would recommend to have a look at the
following bibliography:
- *"Computer Architecture: A Quantitative Approach" (5th edition) by Hennessy
and Patterson*, Appendix B and Chapter 2 of this book both explain at basic to
intermediate level how caches work, as well as virtual addressing and memory
hierarchy design techniques which are used in modern computers.
- *"CPU performance evaluation and execution time prediction using narrow
spectrum benchmarking" (1992), by Saavedra-Barrera*, has its fifht chapter
dedicated to memory hierarchy characterization through loop test, and there it
explains all the details of this technique.
### About the implementation:
The program runs and simulates explicitly every single access to memory, and has
proper structures to represent each type of cache. It does not use formulas to
predict any of the results shown in the graphs. As for this first release, the
application is only able to run loop tests on customized memory hierarchy.
Originally it was meant to be a cache simulation with more scope, allowing the
user to simulate arbitrary memory references sequences and to view step-by-step
how the contents of the cache were updated. Even though the code is prepared to
easily add this functionality, I preferred not to do so in order to have a clean
first version to release, and because it would take more time and effort than
expected in building the GUI. Maybe in a future update these features will be
added in.
With regard to the "loop guess" feature, it is worth mentioning that the caches
presented to the user to guess are randomly generated, and they do not represent
real world memory hierarchies. Even though the generator method has been thought
to produce plausible scenarios, rather than just throw numbers in, just bear in
mind that you might find some strange-looking caches or even ambiguous plots due
to the randomness of the generation.
The interface of the programm was made using Swing, and for the plots I used an
external library called JFreeChart (version 1.0.19), which uses JCommon 1.0.23
library. In order to compile the code you will need both, which can be
downloaded from: http://www.jfree.org/jfreechart/download.html.
Refer to [this documentation](docs/usage.md) for a short guide on how to
use the application.
Made by Juan Manuel Fresia, engineer student at University of Buenos Aires.
Contact: juanmanuelfresia@gmail.com.
Any bug reports, comments or suggestions are always welcome.
近期下载者:
相关文件:
收藏者: