home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
hobbes.nmsu.edu
/
2008-06-02_hobbes.nmsu.edu.zip
/
dos
/
xmtp12.zip
/
XMTP.DOC
< prev
next >
Wrap
Text File
|
1995-03-29
|
6KB
|
117 lines
XMTP Copyright (C)1995 Cornel Huth 12-Feb-95 FREEWARE
Extended Memory-access Time Piece for 386+
[Text updated 29-Mar-95]
Options: C>xmtp xy
where x=nothing and y=nothing is the default
where x=1 show alternate results (total time rather than time/KB)
where y=1 do alternate test (mov/dec rather than rep lodsd/stosd)
For example: C>xmtp (for std results, std test)
C>xmtp 10 (for alt results, std test)
C>xmtp 01 (for std results, alt test)
------------------------------------------------------------------------------
What it is:
Since I couldn't find anything to time extended memory (at least, not
complete timing data) XMTP was born. I recently installed 16MB (went
from 8MB to 20MB -- 8 slots) and noticed a slowdown in OS/2. Odd.
I found one program that timed memory and gave a "factor", with 1.0
being the fastest, etc. From this program, I concluded that something
was up with my memory over 16MB (16-20MB chunk), since it was giving a
1.7 "factor", compared to the rest at "1.0". By disabling my i486DX/33
internal cache (L1, 8K), I got a "1.0" factor for all 20MB. Obviously,
that test program is not going to get me very far.
XMTP presents timing data for all extended memory (up to 63MB), and gives
it in either microseconds/KB access time, or total microseconds per
access. Accesses are made in power of two sizes (1,2,4,8...1024KB) for
each extended MB of memory, starting at 100000h (1MB+). Both read and
write access are timed (see TEST.0? for several examples), and the
read tests are run twice to make use of any caching available.
Interesting things about my test:
1) My motherboard is not L1-caching memory about 8MB -- no wonder the
slowdown when adding 16MB (I haven't put the other 4MB in -- and won't
-- there's no doubt I need a replacement motherboard, especially since
this dates to 1991 and is ISA/64K L2 cache).
2) Reads are pretty much as expected with both caches on. There is
a break a 8KB (L1 size) and again at 64KB (L2 size), and the problem
at 800000h (8MB) where the access reverts to L2 times. Writes are
[CORRECTION - ...where the access reverts to NO CACHE times.]
weird -- the times are L1 for all 15MB of extended memory (if L1 is
active). It's possible there is a flaw in the testing method. Not
related (necessarily), but the system is put into mongo mode and memory
accesses are via 32-bit index registers with the DS and ES segments using
4GB limits. Anyway, right now the write test isn't terribly important --
I just wanted to see what the slowdown was all about.
[UPDATE] -----------------------------------------------------------------
I replaced the motherboard. It uses a 256KB L2 cache and does cache more
than the old board, but only up to 16MB. The results are almost identical
to the tests included, except that cache-speed goes to 16MB instead of 8MB.
This is not necessarily something that occurs on all 256K L2 motherboards,
since I also had another one before this an it cached at least up to 20MB
with the 256KB. The manual of my now-in-use motherboard claims that 256KB
L2 is enough to cache up to 32MB (where 64KB would do 8MB, and 1MB of cache
is required for 64MB). Not so! Anyway, I can work with 16MB for this
machines remaining life, and it will be put to good use when it retires.
On that other board, the one I returned even though it cached to at least 20MB,
the problem with that one was that it would not run OS/2 (it was a NiCE Green
486 VLB -- a known problem board, so I found out). Plus, even though it had
a write-back L2 cache, it showed inferior results in my testing. This new
board, though only "cacheable" to 16MB (and no x-setup to alter it, not even
hidden), does run fast (or, at least, on par) for a i486 system. Now, what
to do with the 8 1MB SIMMs (30-pin, 60ns, 9-chip)...offers?
---------------------------------------------------------------------------
Test options:
As the option info at the top shows, there are two result display modes
and two access tests. The first result mode gives times in us/KB accessed.
The alternate mode is to show the actual time, in microseconds (us), that
the access took. Tests that cannot complete with 54ms (milliseconds)
show as "ov", for overflow. The first test uses REP LODSD to read-access
to memory (with ECX set to block-size/4), and REP STOSD for write-access.
The alternate test uses several instructions, including MOV EAX,[ESI]/
ADD ESI,4/DEC ECX/JNZ... (similar to this, at least, and also MOV [EDI],EAX
... for write-access).
Output is via DOS, and can be redirected to a file:
C>xmtp > file.rez
It may be necessary to explicitly add the command-line options, such as
C>xmtp 00, even for standard (default) runs, otherwise previous command
line options/garbage may be used (program-slop).
Only full MB blocks are tested currently. Partial MB blocks (15MB + 256KB)
are noted, but not timed (maybe next time). Source code is not available
for release.
Comments/problems/ideas should be sent to addresses at bottom.
Be specific, and send any test results if you expect me to reply. Also, you
may want to check my FTP site for any updates to this program, or for other
programs. Currently, there are programmer toolkits (database and soundcard),
along with MIDI/VOC/WAVE/MOD players, an LP solver,and who knows what.
For DOS, Win, and OS/2.
cornel@crl.com
(FTP) ftp.crl.com /users/ro/cornel --- (WWW) ftp://ftp.crl.com/users/ro/cornel
BBS/fax: +1-210-684-8065 / Monday-Friday after 5pm / Weekends 24 hours [-0500]
- Bullet/DOS - Bullet/Win - Bullet/2 - Ruckus/DOS -