<> <> <> DIRECTORY AssociativeCache, CacheModels, Commander, Convert, DirectMapCache, Dragoman, Rope; <<>> DragomanThymeRuns: CEDAR PROGRAM IMPORTS AssociativeCache, DirectMapCache, Commander, Dragoman, Rope SHARES Dragoman = BEGIN TwoToTheTwo: PROC[n: INT] RETURNS[INT] = { IF n=0 THEN RETURN[1] ELSE RETURN[2*TwoToTheTwo[n-1]]}; MarkThymeGFIs: PROC [handle: Dragoman.Handle] = { Dragoman.MarkGFI[handle, "Thyme", "ThymeStarter"]; }; DragomanThymeRunsGo: Commander.CommandProc = { <> <> <> <> <> <> <> <<>> <> <> <> <> <> <> BEGIN rc, mc: CacheModels.Cache; handle: Dragoman.Handle _ Dragoman.Start[backingFile: Rope.Cat["SimThyme.50.4.ts"], instr: 1, data: 1]; rc _ DirectMapCache.NewCache[lines: 512, quadsPerLine: 8]; -- real cache mc _ AssociativeCache.NewCache[lines: 256, quadsPerLine: 4, wordsPerQuad: 1]; -- map cache Dragoman.SetInstructionCache[handle: handle, number: 0, cache: AssociativeCache.NewCache[lines: 50, wordsPerQuad: 4, quadsPerLine: 4, lru: FALSE, realCache: rc, mapCache: mc]]; -- instruction cache Dragoman.SetDataCache[handle: handle, number: 0, cache: AssociativeCache.NewCache[lines: 50, wordsPerQuad: 4, quadsPerLine: 4, lru: FALSE, realCache: rc, mapCache: mc]]; -- data cache MarkThymeGFIs[handle]; Dragoman.Run[handle, "DragomanStartThyme"] ; rc.print[rc, handle.tsOut, "Real cache"]; mc.print[mc, handle.tsOut, "Map cache"]; Dragoman.End[handle]; END; }; Commander.Register["DragomanThymeRunsGo", DragomanThymeRunsGo, "Starts a series of runs of Dragoman simulating Thyme"]; END.