{"id":270,"date":"2012-12-18T20:47:41","date_gmt":"2012-12-18T20:47:41","guid":{"rendered":"http:\/\/retroramblings.net\/?p=270"},"modified":"2012-12-27T10:48:05","modified_gmt":"2012-12-27T10:48:05","slug":"smell-the-rubber","status":"publish","type":"post","link":"https:\/\/retroramblings.net\/?p=270","title":{"rendered":"Smell the rubber?"},"content":{"rendered":"<p>In my last post I said I was going to integrate the write cache into my two-way cache *before* adding it to the Minimig core &#8211; but I got impatient!<\/p>\n<p><a href=\"http:\/\/retroramblings.net\/wp-content\/uploads\/2012\/12\/SmellTheRubber.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-271\" title=\"SmellTheRubber\" src=\"http:\/\/retroramblings.net\/wp-content\/uploads\/2012\/12\/SmellTheRubber.jpg\" alt=\"\" width=\"750\" height=\"575\" srcset=\"https:\/\/retroramblings.net\/wp-content\/uploads\/2012\/12\/SmellTheRubber.jpg 750w, https:\/\/retroramblings.net\/wp-content\/uploads\/2012\/12\/SmellTheRubber-300x230.jpg 300w, https:\/\/retroramblings.net\/wp-content\/uploads\/2012\/12\/SmellTheRubber-391x300.jpg 391w\" sizes=\"auto, (max-width: 750px) 100vw, 750px\" \/><\/a><\/p>\n<p><!--more-->This is running on the Turbo Chameleon 64.\u00a0 No binaries yet, but the code is checked into the repo at <a href=\"https:\/\/github.com\/robinsonb5\/minimig_tc64\/tree\/constraints\">https:\/\/github.com\/robinsonb5\/minimig_tc64\/tree\/constraints<\/a><\/p>\n<p>Some more benchmarks from AIBB follow:\u00a0 These are all relative to A3000\/25 with 68020 instructions:<\/p>\n<table border=\"0\" cellspacing=\"0\">\n<colgroup span=\"3\" width=\"85\"><\/colgroup>\n<tbody>\n<tr>\n<td align=\"LEFT\" height=\"16\"><strong>Test<\/strong><\/td>\n<td align=\"RIGHT\"><strong>Docking13<\/strong><\/td>\n<td align=\"RIGHT\"><strong>Two Way Cache<\/strong><\/td>\n<\/tr>\n<tr>\n<td align=\"LEFT\" height=\"16\">EmuTest<\/td>\n<td align=\"RIGHT\">1.13<\/td>\n<td align=\"RIGHT\">1.27<\/td>\n<\/tr>\n<tr>\n<td align=\"LEFT\" height=\"16\">WritePixel<\/td>\n<td align=\"RIGHT\">0.5<\/td>\n<td align=\"RIGHT\">0.53<\/td>\n<\/tr>\n<tr>\n<td align=\"LEFT\" height=\"16\">Sieve<\/td>\n<td align=\"RIGHT\">0.72<\/td>\n<td align=\"RIGHT\">0.92<\/td>\n<\/tr>\n<tr>\n<td align=\"LEFT\" height=\"16\">Dhrystone<\/td>\n<td align=\"RIGHT\">0.88<\/td>\n<td align=\"RIGHT\">1.13<\/td>\n<\/tr>\n<tr>\n<td align=\"LEFT\" height=\"16\">Sort<\/td>\n<td align=\"RIGHT\">0.78<\/td>\n<td align=\"RIGHT\">1.19<\/td>\n<\/tr>\n<tr>\n<td align=\"LEFT\" height=\"16\">Matrix<\/td>\n<td align=\"RIGHT\">0.66<\/td>\n<td align=\"RIGHT\">0.81<\/td>\n<\/tr>\n<tr>\n<td align=\"LEFT\" height=\"16\">IMath<\/td>\n<td align=\"RIGHT\">1.26<\/td>\n<td align=\"RIGHT\">1.37<\/td>\n<\/tr>\n<tr>\n<td align=\"LEFT\" height=\"16\">MemTest<\/td>\n<td align=\"RIGHT\">0.63<\/td>\n<td align=\"RIGHT\">0.59<\/td>\n<\/tr>\n<tr>\n<td align=\"LEFT\" height=\"16\">TGTest<\/td>\n<td align=\"RIGHT\">0.7<\/td>\n<td align=\"RIGHT\">0.73<\/td>\n<\/tr>\n<tr>\n<td align=\"LEFT\" height=\"16\">Savage<\/td>\n<td align=\"RIGHT\">1.37<\/td>\n<td align=\"RIGHT\">1.43<\/td>\n<\/tr>\n<tr>\n<td align=\"LEFT\" height=\"16\">Beachball<\/td>\n<td align=\"RIGHT\">1.22<\/td>\n<td align=\"RIGHT\">1.36<\/td>\n<\/tr>\n<tr>\n<td align=\"LEFT\" height=\"16\">CplxTest<\/td>\n<td align=\"RIGHT\">0.95<\/td>\n<td align=\"RIGHT\">1.04<\/td>\n<\/tr>\n<tr>\n<td align=\"LEFT\" height=\"16\">TranTest<\/td>\n<td align=\"RIGHT\">1.32<\/td>\n<td align=\"RIGHT\">1.38<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>So while SysInfo reports a 40% speedup, the more &#8220;real-world&#8221; tests in AIBB suggest an average speedup of about 16%.\u00a0 Interestingly, the &#8220;memtest&#8221; test is slower now.<\/p>\n<p>There are a number of things still to be done which should improve this further:<\/p>\n<ul>\n<li>Currently writes aren&#8217;t cached at all unless the target location is already in cache due to a read.\u00a0 Either way, the CPU has to wait until the SDRAM cycle&#8217;s finished.\u00a0 The simplistic write cache from the TG68MiniSOC project would allow the CPU to continue immediately after dispatching the write, and can gang writes from a single burst together, greatly increasing the speed of longword writes.<\/li>\n<li>The read phase of the Two Way Cache could be more efficient &#8211; can probably save at least one, possibly two cycles.<\/li>\n<li>The core still doesn&#8217;t use bank interleaving.\u00a0 This would allow one bank to be devoted entirely to Chip RAM, Kickstart ROM and OSD RAM, with the other three banks providing 24 meg of true Fast RAM that&#8217;s never slowed by accesses to the first bank.<\/li>\n<\/ul>\n","protected":false},"excerpt":{"rendered":"<p>In my last post I said I was going to integrate the write cache into my two-way cache *before* adding it to the Minimig core &#8211; but I got impatient!<\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[3,4],"tags":[],"class_list":["post-270","post","type-post","status-publish","format-standard","hentry","category-amiga","category-fpga"],"_links":{"self":[{"href":"https:\/\/retroramblings.net\/index.php?rest_route=\/wp\/v2\/posts\/270","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/retroramblings.net\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/retroramblings.net\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/retroramblings.net\/index.php?rest_route=\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/retroramblings.net\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=270"}],"version-history":[{"count":5,"href":"https:\/\/retroramblings.net\/index.php?rest_route=\/wp\/v2\/posts\/270\/revisions"}],"predecessor-version":[{"id":275,"href":"https:\/\/retroramblings.net\/index.php?rest_route=\/wp\/v2\/posts\/270\/revisions\/275"}],"wp:attachment":[{"href":"https:\/\/retroramblings.net\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=270"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/retroramblings.net\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=270"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/retroramblings.net\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=270"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}