C D - Q U I C K C a c h e Version 1.20 Program Reference Manual Copyright (c) 1994-95 by Peter Volpa All Rights Reserved _______ ____|__ | (R) --| | |------------------- | ____|__ | Association of | | |_| Shareware |__| o | Professionals -----| | |--------------------- |___|___| MEMBER Peter Volpa Circuit Systems 418 Church Road Sicklerville, NJ 08081-1727 USA TABLE OF CONTENTS Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . 1 Features . . . . . . . . . . . . . . . . . . . . . . . . . . 2 System Requirements . . . . . . . . . . . . . . . . . . . . 2 License . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3 Ordering Information . . . . . . . . . . . . . . . . . . . . . . 4 Registering CD-QUICK Cache by Credit Card . . . . . . . . . 4 Registering in Europe . . . . . . . . . . . . . . . . . . . 5 Registering via CompuServe . . . . . . . . . . . . . . . . . 5 Disclaimer . . . . . . . . . . . . . . . . . . . . . . . . . . . 5 Trademarks . . . . . . . . . . . . . . . . . . . . . . . . . . . 5 Measuring Existing CD-ROM Performance . . . . . . . . . . . . . . 6 Installing CD-Quick Cache . . . . . . . . . . . . . . . . . . . . 7 UnInstalling the Software . . . . . . . . . . . . . . . . . 7 Choosing a Cache Size . . . . . . . . . . . . . . . . . . . . . . 8 Using Multiple CD-ROM Drives . . . . . . . . . . . . . . . . . . 8 CD-Quick Command Line Parameters Reference . . . . . . . . . . . 9 Memory Usage and CD-Quick . . . . . . . . . . . . . . . . . 12 CD-ROM Drive Performance Testing . . . . . . . . . . . . . . . . 13 Displaying Cache Statistics from DOS . . . . . . . . . . . . 14 Displaying Cache Statistics from Windows . . . . . . . . . . 14 CD-ROM Drive Mechanics and Why CD-Quick Cache Helps . . . . . . . 15 Revision History . . . . . . . . . . . . . . . . . . . . . . . . 16 Appendix A - Error Messages . . . . . . . . . . . . . . . . . . . 17 Appendix B - Common Questions and Answers . . . . . . . . . . . . 19 Appendix C - Comparing CD-Quick to Microsoft's SmartDrive 5.0+ . 20 Appendix D - Distribution Points for CD-Quick Cache . . . . . . . 22 1 Introduction CD-ROM drives are wonderful pieces of technology. By using optics instead of magnetics, vast amounts of data can be stored in a small amount of space on a plastic disc. But as with most technology, there are always design tradeoffs made. In the case of a data storage system, the tradeoff is between the amount of data that can be stored and the speed with which you can access that data. Even with quadruple speed CD-ROM drives, the average time it takes to reposition a drive's read head to a new location and start reading data is at least a couple of HUNDRED milliseconds. Compare that with the under 15 millisecond access times of today's hard drives. Due to the nature of CD-ROM drive mechanics, this situation will not be changing any time soon. In a word, CD-ROM drives are slow. Data caching has been used for years to speed up the performance of magnetic disk drives. Caching is a memory management technique that reads and stores frequently used data in a memory buffer for fast access. With caching, every time you request data from your drive, this data is also placed in a memory buffer. The next time the data is needed it can be found in RAM, so actual disk reads are saved. This results in a tremendous increase in performance. Until re- cently, effective CD-ROM caching has been unavailable. Presenting CD-Quick Cache CD-Quick Cache will dramatically improve the performance of your CD-ROM drive. By storing frequently read data in fast extended (XMS) memory, disc reads are almost instantaneous. CD-Quick uses an intelligent caching algorithm and dynamic read-ahead buffering to insure top performance. CD-Quick is compatible with virtually all CD-ROM hardware and software. It will work with CD-ROM applications that require a DOS drive letter as well as with software that bypass the Microsoft CD- ROM Extensions (MSCDEX.EXE) and access the CD-ROM device driver directly. The software will also work seamlessly with Microsoft Windows and will not conflict with any hard disk caching software. CD-Quick will operate with up to 26 CD-ROM drives (the DOS maximum for drive letters). Included with CD-Quick Cache are two CD-ROM utilities, CDTEST and QUICKMON. CDTEST will evaluate the performance of your CD-ROM system by measuring the time it takes to walk through a CD's direc- tory structure and read data. You can run this test with or without CD-Quick installed to benchmark your CD-ROM drive's performance. QUICKMON is a Microsoft Windows application that will give you statistical information on CD-ROM and CD-Quick Cache reads. This utility will show the total reads requested by your application, how many reads CD-Quick has saved and what this percentage was. 2 CD-Quick loads as a terminate and stay resident program (TSR). On most systems, the program will use only 11K of conventional memory. This is usually comparable to the typical amount of memory used for MSCDEX buffers. With CD-Quick loaded, these buffers can be reduced. The result in most cases, is almost the same amount of memory is used with CD-Quick as without it. Under DOS 5+, CD-Quick may be loaded "high". Features: * Will work with any CD-ROM drive. * Can use up to 10MB of extended (XMS) memory for a CD-ROM cache. * Easily handles multiple CD-ROM drives. * Uses only 11K of conventional memory and can be loaded "high". * Uses an intelligent caching algorithm to keep the most frequently read data in the cache and a dynamic read-ahead strategy to anticipate and read the data that needs to be read next. System Requirements: * An IBM or compatible computer with an 80286 or higher processor and a minimum of 384KB extended (XMS) memory. * At least one CD-ROM drive. * PC or MS-DOS 3.1 or later. * Any standard XMS memory manager such as MS-DOS HIMEM.SYS, 386MAX by Qualitas or Quarterdeck's QEMM-386. 3 License CD-QUICK Cache is distributed as "shareware". It is NOT public domain or free software. Non-registered users of this software are given the opportunity to evaluate the complete CD-QUICK Cache software package for 30 days with no obligation. If, after the evaluation period, you find CD-QUICK to be suitable for your needs, you must register your copy or discontinue using CD-QUICK. What we're saying is if you use this program, then you should pay for your copy. That way Circuit Systems will be able to provide updates, support, and generally stay in business. When you register CD-QUICK you will receive a personal KeyCode and the latest version of all the software that comprises the CD-Quick package. Your KeyCode will disable the opening shareware screen and may be used with all future versions of CD-Quick. This means once you've registered, you're registered for life. You may use any new versions of CD-Quick Cache as they become available free of charge. Your KeyCode is derived from your name and may not be distributed in any manner. CD-Quick Cache is LICENSED TO THE SINGLE PERSON WHO REGISTERED THE PROGRAM. All users are granted a limited license to copy the UNREGISTERED version (this means everything except your KeyCode) of CD-Quick Cache for the trial use of others. Please feel free to give copies of CD-Quick to your friends and associates. That's what shareware is about. This license does NOT include distribution or copying of this software: * In conjunction with any other product or service. * In general use within a company or school. * For any "disk fee" other than a small (generally $2.00 to $5.00) copying charge. * For distribution in any modified form. The file contain- ing this license information MUST be included along with full documentation and all the files that make up this software package. The data record in the included VENDINFO.DIZ file contains detailed license information governing distribution. 4 Ordering Information A CD-Quick Cache registration licenses you to use the product on a regular basis. Registration also entitles you to lifetime technical support and allows you free use of all future versions of CD-Quick Cache. An individual registration costs $29. Upon receipt of your paid registration form, we will send you the latest registered version of CD-Quick Cache with full documentation on the disk. New Jersey residents should include 6% sales tax. Site licensing is also available. Prices are based on the estimated number of users. Please write for more information. A CD-Quick Cache registration form is included in the distribution package for your convenience. You may print an order form when CD- Quick loads by answering "Yes" when asked. You may also print the file ORDERFRM.TXT anytime. Please take time to fill this out and return it. If you would like high-quality software to continue to be made available on a try-first basis and for a reasonable cost, it is up to YOU to support such programs. Please send your registration form, suggestions and any comments that you might have to: Peter Volpa or For questions only, Circuit Systems no orders. Call 418 Church Road (609) 875-5433 Sicklerville, NJ 08081-1727 12 - 8 PM EST Questions may also be sent by Email on CompuServe to 72202,3043 or via the Internet at '72202.3043@compuserve.com'. Registering CD-QUICK Cache by Credit Card We have established a special arrangement with the Public (software) Library for those of you who wish to order by credit card. For credit card orders only, you can order from PsL with your Master Card, Visa, AmEx or Discover card by calling 800-242-4PsL (from overseas: 713-524-6394). You may also FAX to 713-524-6398 or CompuServe to 71355,470 or mail to PsL, P.O. Box 35705, Houston, TX 77235-5705. THESE NUMBERS ARE FOR ORDERING ONLY. Circuit Systems can NOT be reached at those numbers. To contact Circuit Systems for information about dealer pricing, volume discounts, site licensing, the status of shipment of the product, the latest version number or for technical information, please call Circuit Systems at 609- 875-5433 or write to Circuit Systems, 418 Church Road, Sicklerville NJ 08081-1727 USA. PsL's order number for CD-QUICK is #11726. PsL's office hours for phone orders are 7AM-6PM CST Monday-Thursday and 7AM-12:30PM CST on Fridays. Please give your name exactly as it appears on your card and the billing address for the card. 5 Registering in Europe If you live in Europe, you may also order CD-Quick from Computer Solutions Software GmbH in Germany. Please use the order form EURORDER.TXT when you order from Computer Solutions. Registering via CompuServe If you are a CompuServe member, you can register CD-Quick Cache online. CD-Quick's registration fee will be included in your monthly CompuServe bill. After you logon, just type 'GO SWREG' for CompuServe's shareware registration service. CD-Quick's registra- tion number is #4214. DISCLAIMER ALTHOUGH WE HAVE EXTENSIVELY TESTED CD-QUICK CACHE AND BELIEVE IT WILL PERFORM AS DESCRIBED IF USED CORRECTLY, WE SUPPLY THIS PROGRAM AS IS. CIRCUIT SYSTEMS DISCLAIMS ALL WARRANTIES, EXPRESSED OR IMPLIED, THAT THIS PROGRAM IS FIT FOR ANY PURPOSE. CIRCUIT SYSTEMS ALSO ASSUMES NO LIABILITY FOR ANY DAMAGES EITHER DIRECT OR CONSE- QUENTIAL, WHICH MAY RESULT FROM THE USE OF THIS PROGRAM. Trademarks MS-DOS is a registered trademark and Windows is a trademark of Microsoft Corporation. 386MAX is a registered trademark of Qualitas, Inc. QEMM-386 is a registered trademark of Quarterdeck Office Systems, Inc. PC-DOS, PC/AT, PC/XT, and PS/2 are registered trademarks of IBM Corporation. Association of Shareware Professionals This program is produced by a member of the Association of Shareware Professionals (ASP). ASP wants to make sure that the shareware principle works for you. If you are unable to resolve a share- ware-related problem with an ASP member by contacting the member directly, ASP may be able to help. The ASP Ombudsman can help you resolve a dispute or problem with an ASP member, but does not provide technical support for members' products. Please write to the ASP Ombudsman at 545 Grover Road, Muskegon MI 49442-9427 or send a Compuserve message via CompuServe Mail to ASP Ombudsman 70007,3536. The OMB may be contacted by FAX by sending to the ASP FAX number: (616) 788-2765. In communication with the OMB please include a telephone number and/or FAX if available. 6 Before You Begin The very first thing that you should do before going any further is to make a backup copy of your distribution disk. To do this just use the DOS command DISKCOPY. This will work whether or not you have two floppy disk drives. It also doesn't matter if the diskette you want to copy to is formatted or not. DISKCOPY will format it for you. From the DOS prompt type this: DISKCOPY A: A: You will be asked to "Insert source diskette in drive A:". This should be your original CD-Quick Cache disk. Continue to follow the directions on the screen and you will have your backup copy. Measuring Existing CD-ROM Performance Before actually installing CD-Quick Cache you may want to use the included CDTEST utility to evaluate your CD-ROM drive's performance without a cache installed. To run CDTEST with your backup disk in drive A:, just type A:CDTEST. Since different CD-ROM's contain differing file layouts (some have many files in a few subdirectories while others have fewer files in many subdirectories) it may be helpful to have a few CD-ROM's to test with. You must have MSCDEX.EXE loaded to run CDTEST (most systems are set up to load this automatically). If you are running Microsoft Windows in Enhanced mode you should exit Windows and return to DOS for this test. Window's Enhanced mode multi-tasking prevents accurate timing results. If you have more than one CD-ROM drive, you can select which drive to test. When comparing the performance of one drive to another, be sure you test with the same CD-ROM in each drive. With a CD-ROM in your drive, select the "Walk directories" test. This test will scan the entire CD-ROM searching for the largest file. When it finishes the scan, it reports the time taken. Next select "Do read test". This test will read the largest file found (must be a least 2MB) first sequentially and then randomly. The test will be repeated three times. Individual and total times will be reported. You should now print your results to enable you to compare this performance to your system's performance with CD-Quick installed. It's also possible to test your CD-ROM drive's performance without a cache even with CD-Quick installed. Use the '/OFF' option on CD- Quick to disable the cache. You can use the '/ON' option to enable it again. 7 Installing CD-Quick Cache CD-Quick Cache includes an Install program to make installation very easy. The Install program can be used to install CD-Quick on your computer and configure it for caching CD-ROM data. Install can also be used to update a previous CD-Quick configuration. When you start Install, you will first be asked for the source (where the CD-Quick files are now) and destination (where you want CD-Quick to be copied to) drives and path. When this information is provided the Install program will create a subdirectory on your hard drive called "\CDQUICK". The default "from" drive is the drive where INSTALL.EXE is located and the default "to" drive is drive C:. These may be changed to any other drives or directories as needed. Install will copy all the needed CD-Quick Cache files from your floppy drive to that subdirectory. Next you will be asked if you want CD-Quick to determine the amount of memory to use for data caching or if you would rather assign this yourself. Install will scan your AUTOEXEC.BAT file looking for at least one line containing MSCDEX.EXE, the Microsoft CD-ROM Extensions. If found, the command to load CD-Quick will be added to your AUTOEXEC.BAT file. A backup of your unmodified AUTOEXEC.BAT file will be saved in the file AUTOEXEC.CDQ. The number of buffers MSCDEX uses will be lowered to 6. To run the install program, insert your backup copy of CD-Quick Cache into your floppy drive and type: A:INSTALL Follow the directions and before you know it, you will have CD-Quick Cache installed, speeding up your CD-ROM drive. If your memory manager includes software to optimize upper memory use, you may want to rerun it after CD-Quick has been installed. If you are using the Install program to upgrade your software, an option has been added to prompt you for your Name and KeyCode. Just start Install with the '/R' switch. e.g. INSTALL /R Running CD-Quick with Microsoft's SmartDrive CD-Quick Cache will run just fine with SmartDrive. If you have SmartDrive version 5.0 or later (included with MS-DOS v6.2), you need to add the '/U' switch when loading SmartDrive. This turns off SmartDrive's CD-ROM caching. If you used CD-Quick's Install pro- gram, this will be done for you automatically. UnInstalling the Software If for any reason you want to return your system to the way it was before you installed CD-Quick, just use the DOS COPY command to copy AUTOEXEC.CDQ to AUTOEXEC.BAT. Then delete the CD-Quick files. 8 Choosing a Cache Size With CD-Quick and its install program it's possible to automatically determine a cache size. The amount of XMS memory allocated for the cache depends on the amount of free XMS memory in your system when CD-Quick loads. If you let CD-Quick choose the amount of memory, the following guide will be used. If your system has: CD-Quick will: <= 512KB free - Use all available XMS memory <= 1MB free - Use 512KB for the cache <= 4MB free - Use 1MB for the cache > 4MB free - Use 2MB for the cache You may also decide to set the cache size yourself. In setting a cache size, you should realize that larger cache sizes will increase performance because more data is available. With the cache holding more data, the chances of finding the data you need increase and the much slower reads of your CD-ROM drive are avoided. You should keep in mind that the amount of memory you allocate to CD-Quick must be balanced against the needs of other applications in your system. It's possible to improve the performance of the cache but slow down an application that runs faster with more memory. The statistics that CD-Quick provides may be helpful in selecting a cache size and optimizing overall performance. If you have problems running certain applications when CD-Quick is loaded and they go away when CD-Quick is not loaded, it's due to the way you have your memory apportioned. The memory you have allocated to CD-Quick is no longer available to other application. You can reduce your cache size by setting it manually. Please see appendix B for more information. Using Multiple CD-ROM Drives There are two methods used to support multiple CD-ROM drives. The first setup uses a single hardware device driver for all CD-ROMs. Each drive is assigned a separate "unit" number. This scheme is almost always used with multiple SCSI CD-ROM drives. All drives are connected to a single SCSI controller and the hardware device driver works with this controller. If you use only one hardware device driver, a single loading of CD-Quick will cache all drives. CD- Quick is aware of the separate unit numbers and will behave accord- ingly. The hardware device driver is loaded by a line in your CONFIG.SYS file. Check the instructions that came with your CD-ROM drive if you need more information on this. The second method used with multiple drives, is to load a separate hardware device driver for each drive. This is usually needed when each drive uses a proprietary interface and each is from a different manufacturer. For multiple device drivers, CD-Quick must be loaded once for each device driver. If you use the included Install program, either case will be handled automatically. 9 CD-Quick Command Line Parameters Reference If you don't use the supplied Install program to automatically modify your AUTOEXEC.BAT file, and for general reference, we will describe how CD-Quick is installed. As previously mentioned, CD-Quick Cache is a TSR. Its only require- ment is that it must be loaded before MSCDEX.EXE (Microsoft CD-ROM Extensions). When loaded, CD-Quick is positioned between your CD- ROM's hardware device driver and MSCDEX. MSCDEX interacts with CD- Quick instead of your device driver. CD-Quick allows you to set a few parameters when it loads. The only one required in order to load is the name of your CD-ROM hardware device driver. The others are optional. All parameters may be specified in any order. CD-Quick command line format: CDQ [/D:] [cachesize] [/C] [/F] [/NAME=] [/KEY=] [/NOHMA] [/ON] [/OFF] [/HELP] [/?] /D: This parameter tells CD-Quick the name of your CD-ROM's hardware device driver and is required for CD-Quick to work. The hardware device driver is loaded by a line in your CONFIG.SYS file. It will look something like: DEVICE=CDROMDRV.SYS /D:MSCD001 Since this driver is supplied by the manufacturer of your CD-ROM drive, its name will vary. The thing to look for is the driver name parameter used when loading MSCDEX. The Microsoft CD-ROM Extensions require the same parameter in the same form as CD-Quick. So if you have: MSCDEX /D:MSCD001 in your AUTOEXEC.BAT file, you know you need the following line (before MSCDEX) in order to load CD-Quick: CDQ /D:MSCD001 Cachesize This parameter sets the amount of memory allocated to CD-Quick's data cache. It is just the number in "KB" (Kilobytes) that you want CD-Quick to use. If you set Cachesize to zero or omit it, CD- Quick will determine its cache size itself based on the amount of free XMS memory in your system. As an example, for a 1024K (1MB cache), you would have: CDQ 1024 10 /C If CD-Quick doesn't always recognize disc changes, you should try loading it with the '/C' switch. When this switch is used, CDQ will flush its cache whenever your CD-ROM device driver says the disc has changed or is not sure. Older drives will be more likely to need this option than will newer drives. Don't use this option unless you need it, as it may slow performance on some systems. /F After CD-Quick is installed, you can use the '/F' switch to flush the cache for all CD-ROM drives. Normally CD-Quick will do this automatically when needed. This option has been added for those people who have old CD-ROM drives that may not properly report disc changes. With this "flush" option you can manually clear the cache yourself if needed. /NAME= This parameter is for people who have registered CD-Quick. When you register you will receive a KeyCode that is derived from your name. This parameter is needed so CD-Quick can compare your KeyCode to your name. If they match, the opening shareware screen will not be displayed. Any spaces in your name should be replaced by underscores. Case is not important. /KEY= This is the companion parameter used with "/NAME=" which was just described. Registered users receive a 4 digit hexadecimal number to supply as your KeyCode. For an example, if your name is John Smith and your KeyCode is 5A27, you should have: CDQ /NAME=JOHN_SMITH /KEY=5A27 /NOHMA If you are using DOS v5.0+, and you have DOS loaded in the High Memory Area (HMA), CD-Quick will attempt to use any free HMA memory to store its cache index. There are a few other programs that can also use free memory in the HMA. This switch allows you to disable CD-Quick's use of the HMA and make more of it available to other applications. The cache index will be allocated in conventional memory instead. This option should rarely be needed. /ON After CD-Quick is installed, it's possible to turn the cache on and off. The default when loaded is on. If you've previously turned it off, this option will re-enable it. 11 /OFF As mentioned, it's possible to turn CD-Quick's caching on and off. This switch will disable caching for all CD-ROM drives. /HELP or /? Gives a brief summary of CD-Quick's command line options. An Example Please As an example of all of this, let's assume you have in your AUTOEXEC.BAT file the line: MSCDEX /D:MSCD001 You want to use 2048KB (2MB) of XMS memory for a data cache. You have registered your copy of CD-Quick Cache (thank you!) and your name is Jack Sprat. Your KeyCode is '83C9'. You would add this line to your AUTOEXEC.BAT file before MSCDEX: CDQ /D:MSCD001 2048 /NAME=JACK_SPRAT /KEY=83C9 12 Memory Usage and CD-Quick To get the most out of both your computer and CD-Quick, it may be helpful to know a little about how CD-Quick uses memory. CD-Quick uses three different blocks of memory when it's loaded. The first block contains the actual program and is 11K in size. CD-Quick discards all of its start up code and data when it goes resident. The 11K remaining is only the code for the cache itself. The next and probably most obvious block is in extended (XMS) memory. This area is used to store the data from your CD-ROM. CD-Quick uses a cache index to locate the correct block of XMS memory when it's needed. This index can be located in the High Memory Area, Upper Memory Area or in conventional memory. CD-Quick needs approximately 6KB of cache index for each 1MB of XMS cache. This cache index will be allocated in the HMA if DOS is loaded high and there is enough room. If the HMA can't be used, the Upper Memory Area is tried next and finally conventional memory. The HMA is the best place for this data. There is usually about 20KB of free memory in this area and very few programs can use it. It's not easy to see the amount of free HMA memory. DOS v6.2 has a barely documented switch on the MEM command to display it however. You can type: MEM /a to list the amount of free memory in the HMA. If MS-DOS is loaded into the HMA, it will attempt to place its buffers in the HMA as well. Each buffer uses approximately 532 bytes of memory. If are using caching software for your hard drive, having more than 10 buffers set wastes memory and can prevent CD-Quick from using the HMA. The number of buffers is set by the BUFFERS= parameter in your CONFIG.SYS file. One of the few applications that will use the HMA is DOS's own DoubleSpace (or DriveSpace) disk compression. If you use disk compression, the HMA is actually a good place for working data. However it will most likely leave insufficient memory in the HMA for CD-Quick. CD-Quick will be forced to use other memory instead. There's not much you can do about this, but it's important to know what's going on here. Reducing MSCDEX Buffers With CD-Quick As mentioned in the Install section, the buffers normally used with MSCDEX should be reduced with CD-Quick. With most CD-ROMs these buffers waste memory and do not improve performance. There are a few CDs that benefit from having a few buffers set. The optimum number of buffers to use with CD-Quick is 6. More than this gives no benefit. You may even want to set this lower. However, 4 is the minimum you can set. Keep in mind that each MSCDEX buffer uses 2KB of memory. INSTALL will make the proper change for you, but if you don't use the Install program, add "/M:6" to MSCDEX. 13 CD-ROM Drive Performance Testing It's always helpful, when you're doing things to increase the performance of your system, to have some way of quantifying this improvement. To make this easier, and to show the effectiveness of CD-Quick, we have included a testing utility called CDTEST. CDTEST will perform two timed tasks on a CD-ROM. The first test will walk the directory structure of your CD-ROM. By walking the directory structure, we mean this test will visit every subdirec- tory and look at each file. As it's doing that, it will search for the largest file on your CD-ROM. CD-ROM's differ in the number of subdirectories and also in the way these are laid out. Some CD-ROM's have very few if any subdirec- tories and only a few very large files. This type of CD won't give you very meaningful results for this test. With so few files and directories, it only takes a fraction of a second to read them all. A CD-ROM that has many subdirectories and files is what you need for this test. If CDTEST finds you have too few directories and files, it displays a message warning of this fact. Since the way CD-ROM's are laid out varies from CD to CD, it's best to have a few CD-ROM's to use when testing. Some CD's will have all their subdirectories in the root directory. Others will have a real tree structure with many levels of subdirectories. With CD- Quick loaded, you will notice varying degrees of improvement (depending on file layout) when doing a directory walk. The second test CDTEST can perform is a read test. The program will read the largest file on your CD-ROM (found while doing the directory walk). This file is first read sequentially and then randomly. For the sequential read, 256 blocks are read from the beginning of the file. Each block on a CD-ROM is 2048 bytes (2KB), so the test reads 512KB. A CD-ROM block is the same thing as a sector. CDTEST will display the time it takes to do this read. Next a random read will read 128 blocks (256KB) from the same file. These blocks will be scattered all over the CD. Since it's impor- tant for the random test to access data that is widely dispersed, the file to be read must be at least 2MB in size. Actually it should be as large as possible. As with the sequential read test, the time taken will be reported. These read tests are repeated for three trials. Each time the same data is read and the time reported. After the three tests are completed, the total time taken is also displayed. With CD-Quick loaded, you will notice a dramatic difference between the first read test and the following tests. For the first test, the CD-ROM must be read directly. When it's time to read the data again, the cache can quickly find the data in memory. It should be noted that since the total amount of data read is 768KB, you must have at least that much RAM allocated to the cache for this test. Otherwise the cache will not be large enough to hold all the data and your CD-ROM will have to be read directly. Remember, direct reads are slow. Cache reads are FAST! 14 Displaying Cache Statistics from DOS CD-Quick has the ability to display cache statistics. This is another way to get a feel for the improvement CD-Quick provides. Anytime after CD-Quick is loaded, you can type CDQ from the DOS prompt to display status information. Displayed will be: Cache size, type and drive, Logical transfers (the total number of 2048 byte blocks requested), Physical transfers (the total number of blocks that had to be read from the CD-ROM), Transfers saved (the total number of blocks read from the cache), and Percent saved (the percent of cache transfers vs. physical transfers). A sample might look like this: CD-QUICK Cache, v1.20 Copyright (c) 1994-95 by Peter Volpa, Circuit Systems Using 1024K XMS cache for drive E: 1411 Logical transfers 659 Physical transfers 752 Transfers saved 53 percent saved. Because of CD-Quick's read-ahead buffering, your actual time savings will almost always be better than what is represented here. With read-ahead buffering, CD-Quick will read more data than is requested, saving all of it in the cache. When that data is later requested (and your CD-ROM's read head is usually somewhere else) this data will be retrieved from RAM. Performance is improved because the drive didn't have to reposition its read head. Unfor- tunately the numbers can't reflect this action. Transfers weren't saved because data was requested only once and read from the CD only once, but TIME was saved because the drive head didn't have to move. Any time you avoid moving the drive head you save time. Displaying Cache Statistics from Windows Also included with CD-Quick is a status utility that runs under Microsoft Windows. This utility called QUICKMON, is located in the same directory as CD-Quick. QUICKMON will display the same status information as CDQ will under DOS, but all information will be displayed in a small pop-up window. This allows you to view cache operation in real time. As you're using an application to access your CD-ROM, you'll see the cache statistics as they update! You can also flush and enable/disable the cache from here. QUICKMON is initially set to be "Always on top" so it can easily be seen. This operation can be changed by a choice on its pull down menu. You can use Windows' File Manager to start QUICKMON. Just change to the "\CDQUICK" subdirectory and double-click on QUICKMON. To make operation easier, you may want to add QUICKMON to one of your Windows program groups. The same attention to CD-Quick's read-ahead buffering applies when interpreting QUICKMON's statistics. Refer to the section above. 15 CD-ROM Drive Mechanics and Why CD-Quick Cache Helps For those of you who are interested, I'd like to give you a brief explanation of the inner workings of CD-ROM drives. After you understand some of what goes on behind the scenes you'll see why a CD-ROM cache is really a necessity with today's computers. Data on a CD-ROM is recorded in equal length sectors on a single spiral track that starts at the inner edge of the disc and finishes at the outer edge. This track is on the order of .6 microns wide, with a turn spacing of 1.6 microns. A micron, if you don't happen to remember, is equal to a millionth of a meter. A human hair is about 100 microns in diameter. A CD-ROM has a track density of about 16,000 turns per inch if you measured across the disc. If you stretched this track out into a straight line it would measure over 3 miles in length! A drive's read head assembly consists of a solid state laser, lenses, a beam splitting mirror and a photo diode to detect the reflected light. In relative terms this assembly is massive. The magnetic heads used in hard disk drives are tiny by comparison. CD-ROM drives utilize a principle called constant linear velocity (CLV). With CLV the data must pass across the read head at the same speed, no matter where on the disc it is positioned. Because data sectors on the outer and inner edges are the same length, the rotational speed of the disc must constantly change as the read head changes position. If it didn't, the bits on the outer edge of the disk would pass by almost 3 times faster than those near the center. So to summarize the mechanical problem we face, we must precisely follow a very narrow track of data using a relatively massive laser assembly. At the same time we must constantly vary the rotational speed of the disc so the data passes at a constant linear speed when we move the read head. And we want to be able to reposition this read head and be ready to access new data as quickly as possible. As you can imagine, it's just not possible to do this very quickly. The more mass something has, the slower you can whip it around. If in addition, you have to position it with sub-micron accuracy, this takes more time. And if you also have to readjust to a new rota- tional speed, you need more time still. This is why CD-ROM access times are slow and it's not going to change any time soon. Although triple and quadruple speed drives have increased the raw data rate (by increasing the rotational speed), access times have not dropped proportionally. The key to speeding up CD-ROM performance is to minimize the number of times we reposition the read head. Because every time we move this head, we waste time. The way to reduce head movement is to use a cache like CD-Quick. Once data is read into the cache, it will be accessed from RAM instead of the CD. If we can anticipate data to read when we are positioned at this data, we can minimize head movement. CD-Quick uses advanced caching techniques to help ensure that the data you need most will be found in the cache. 16 Revision History Version 1.20 - 6/12/95 It was possible for some other Windows programs to assume QuickMon's Rabbit icon when minimized. Fixed. If a cache size greater than 10MB was specified and memory was available, it would be allocated. Fixed. Improved compatibility with some older drives that don't handle disc changes quite right. Also added a "Change Fix" option to CDQ. Improved performance for triple and quad speed drives. In CDTEST if a CD-ROM was changed after doing a directory walk, and a read test was attempted, it failed. Added a warning message. Added a documentation file in Windows Write format. Changed the default cache size when automatic size deter- mination is used. Version 1.11 - 3/15/95 If you used a single hardware device driver with multiple CD-ROM drives, the Install program would put multiple instances of CDQ in your AUTOEXEC.BAT file. Fixed. Version 1.10 - 3/6/95 Now smaller and even faster! All start up code and data are now discarded before going resident. This reduces the resident program size to 11KB. The data for the cache index has been separated from the program and will use the HMA if available. The cache search routine has been improved to speed lookups, increasing cache throughput. Added flush and enable/disable options to CDQ and QuickMon. Added help option to CDQ. QuickMon was unable to start up minimized. Fixed. No longer supports locating the cache data in upper memory. Version 1.02 - 1/18/95 In the opening shareware screen, if you choose to print an order form and your printer was offline, CD-Quick would wait for the printer to be put back online. This gave the appearance that the software was hung. Logic to detect this condition has been added. Enhanced the Install program to work with any type of CD-ROM extensions (not just Microsoft's MSCDEX). Changes made to the AUTOEXEC.BAT file might not get saved if you used a hard drive cache that did write caching and you rebooted from within the install program. Fixed. QUICKMON would display a cache size of 1024K on startup if the CD-ROM drive had not been accessed first. Fixed. A real artist created a better looking icon for QUICKMON. Version 1.01 - 12/30/94 While Microsoft's MemMaker was optimizing upper memory use, CD- Quick was unable to find your CD-ROM's real hardware device driver. This resulted in too high a number of CD-ROM drives being reported, and caused MSCDEX to report an error. CD-Quick has been changed to enable it to always find the true device driver. Version 1.00 - 12/20/94 First release. 17 Appendix A - Error Messages Cache has already been installed. You have already loaded CD-Quick using this Device Driver name. If you want to use CD-Quick with another device driver, specify a different driver name. Cache must be installed before MSCDEX. CD-Quick requires that it be loaded AFTER your CD-ROM hardware device driver and BEFORE Microsoft's MSCDEX.EXE. Check your AUTOEXEC.BAT and/or CONFIG.SYS files to make sure that is the case. CD-Quick's executable has been corrupted. Please reinstall. Someone or something (another program perhaps) has changed your copy of CDQ.EXE. CD-QUICK checks itself every time it runs and this check has failed. Reinstall the program. Device driver not found: 'XXXXXXXX'. Please install before CD-QUICK. The hardware device driver you told CD-Quick to use has not been loaded. This is done by a line in your CONFIG.SYS file. Make sure this driver is loaded and the driver name is cor- rect. Extended Memory Manager not present. CD-Quick requires the extended memory in your system be man- aged by a memory manager. It's the memory manager's job to turn extended memory into XMS memory. The XMS memory manager HIMEM.SYS comes with DOS and should be loaded by a line in your CONFIG.SYS file. See your DOS manual if you need help with this. Any memory manager supporting version 2.0 of the XMS specification will work with CD-Quick. Extended Memory allocation error. CD-Quick tried to allocate XMS memory and the XMS memory manager returned an error. No memory could be allocated. Check to see if you've got some free XMS memory available. Extended Memory not present or not-usable. You don't have any memory above 1MB in your system. CD-Quick uses extended XMS memory for its data cache. Since many programs can perform better if you have some XMS memory, you may want to add some to your computer. 18 HMA can not be enabled. Use /NOHMA option. You have enough free memory in the High Memory Area, but it can't be accessed. Use the /NOHMA switch when loading CDQ to disable CD-Quick's HMA use. No valid CDROM device drivers selected. You didn't specify a CD-ROM hardware device driver to use with CD-Quick. Check your AUTOEXEC.BAT file to make sure you have used the '/D:' parameter. Not enough Extended Memory, must have at least 64K free. Although you have XMS memory in your system, less than 64K is free when CD-Quick loads. Either decrease the amount of XMS memory allocated to other applications that load before CD- Quick or buy more memory. Not enough Extended Memory, reducing number of buffers. You don't have enough free XMS memory to allocate a cache as large as you have specified. CD-Quick will allocate a lesser number of cache buffers to fit in the memory you do have available. This program requires DOS 3.10 or later. You have a very old version of DOS. Since MSCDEX.EXE or its equivalent requires DOS 3.1 or later, you should upgrade. Unable to allocate cache index table. You don't have enough memory to allocate CD-Quick's cache index table. This shouldn't be possible since CD-Quick tries to use the HMA, UMA and also conventional memory. Please let us know if you get this message. Your printer is NOT ready. You asked CD-Quick to print an order form but your printer is offline. Check to see if your printer has power, has paper and its cable is connected. 19 Appendix B - Common Questions and Answers Q. After installing CD-Quick, Windows won't load (or my Windows video driver, Wolfenstein or other whiz-bang program has problems). If I remove CD-Quick everything works. What's wrong? A. The problems you are having are related to the way you have apportioned your memory. CD-Quick uses XMS memory for its cache. Your problems go away when CD-Quick is not loaded because you have freed up the memory used by CD-Quick. It is now available for Windows (or other software) to use. You need to determine how you are allocating your XMS memory. Are you using a cache for your hard drive? If so, how much memory does it use? Do you have a RamDrive or print spooler that uses XMS memory? You should also check to see how much XMS memory CD-Quick is using. From DOS, just type CDQ any time after CD-Quick has loaded. From Windows start CD-Quick's QuickMon program. CD-Quick's memory usage will be displayed. After you learn how your memory is being allocated, you can then determine the proper division of XMS memory for your software that uses this memory. If you allow CD-Quick to automatically determine its cache size, it may use too much memory in some cases. CD-Quick can't anticipate your memory requirements after it loads. So you have to be aware of any software that requires more XMS memory than is usual. You can then set CD-Quick's cache size manually. Q. If I allocate a 2MB cache for CD-Quick and 2MB for my disk cache, I've used up over half my memory (I've got 8MB). A. A common mistake is to allocate too much memory to a hard drive cache. With today's hard drives, 80% of your perfor- mance gain will be had with 256KB to 512KB of memory. A 2MB hard drive cache just wastes memory that could be better used elsewhere. CD-ROMs are 20 times slower and require a larger cache size. We recommend a ratio of 1 to 4 when allocating memory to a hard drive cache and CD-Quick. For instance, if you have CD-Quick set for a 2MB cache, you should set your hard drive cache to use 512KB. If you want to set CD-Quick's cache lower, you should reduce your hard drive cache too. For a 1MB CD-ROM cache, use 256KB for your hard drive cache. Q. I don't use SmartDrive for my hard drive (I use a different cache). What's wrong with using SmartDrive v5.0 to cache only my CD-ROMs. A. In a word, memory. For a 2MB cache, SmartDrive uses 30K of conventional memory (45K before it goes resident!). In most cases, CD-Quick uses 11K. SmartDrive's use of XMS memory is equally inefficient. Typically you need to allocate a larger cache size to equal CD-Quick's performance. Or, to put it another way, CD-Quick will out perform SmartDrive for the same size cache. See Appendix C for more information. 20 Appendix C - Comparing CD-Quick to Microsoft's SmartDrive 5.0+ The version of SmartDrive included with MS-DOS v6.2 is capable of caching CD-ROM drives as well as hard and floppy drives. It's tempting, if you already have SmartDrive v5.0, to wonder how it compares to CD-Quick. SmartDrive has improved with each version of DOS, so that today it's not a bad disk cache. However, it has some problems when used with CD-ROMs. Its first problem is that it uses a single cache for hard drives, floppy drives and CD-ROMs. If you read a large enough block of data from any one of these, you effectively flush the cache for all the others. This can be something as simple as doing a file search of your hard drive with a program such as Norton's File Finder or similar "Where is" program. Unless SmartDrive's cache is VERY large, any CD-ROM data will be flushed from the cache. Tests I've run with a 345MB hard drive (87% full) and SmartDrive, show that a "Where is" search for a nonexistent file will flush the cache of CD-ROM data for cache sizes as great as 5MB!. Another problem with using a single cache for both hard drives and CD-ROMs is the big difference in access times between the two. Average access times for most of today's hard drives are under 15 milliseconds. CD-ROMs are about 20 times slower! When deciding on how much memory to allocate to a cache, you will always reach a point of diminishing returns. For instance, doubling the cache size may only increase performance by 10%. Sometimes, increasing cache size beyond a certain point will actually DECREASE performance. At the very least, having a cache larger than needed will waste memory. This point of diminishing returns for hard drives is much lower than it is for CD-ROMs. To be able to tune your system for the best performance, you need to be able to set the size of your hard drive cache and your CD-ROM cache independently. This can only be done if they're separate caches. Very good hard drive performance can be had with a 256KB to 512KB cache. A CD-ROM drive in the same system, might need a 2MB cache or larger. In addition to these considerations, SmartDrive doesn't use cache memory very efficiently. SmartDrive does a lot of sector read-ahead buffering. It reads more data than you ask for with the hope that you'll want it later. This is fine for sequential data reads, but it's very wasteful if you're reading data stored in many random locations. The cache can quickly fill with data you'll never want. CD-Quick also uses sector read-ahead buffering, but it dynamically adjusts the amount of read-ahead based on the pattern of your reads. It can drop the number of read-ahead sectors to zero if random data is being read. While the CDTEST utility included with CD-Quick is intended to demonstrate the difference between using a CD-ROM cache and not using one, it can also be helpful when comparing caching software. To illustrate SmartDrive's problem of using a shared cache, have CDTEST do a directory walk of a CD-ROM. Now do the walk again. If the directory data is found in the cache, it should only take a second or two. Now try a "Where is" search for a nonexistent file on your hard drive. 21 You can do this with the DOS DIR command. Type: DIR C:\weasel.dat /S This will search for a 'WEASEL.DAT' file on your hard drive. If you go back and run CDTEST's directory walk again, you will find the cache has been flushed (unless it's VERY large). As mentioned before, CD-Quick's cache is not shared by non CD-ROM drives, so it can never be flushed by any reads you do on your hard drive. If you'd like to see the effect of SmartDrive's read-ahead buffer- ing, you can use CDTEST to do a directory walk followed by a read test. If you go back and do another walk, you'll find in most cases the directory data has been flushed from the cache. This second directory walk should be very quick, since the first walk has already read the needed data. But with SmartDrive it will take much longer. Tests I've run show this occurs with cache sizes of up to 2MB. Because CD-Quick makes better use of cache memory, you won't see this problem until you reduce CD-Quick's cache size to about 1MB. A Word About Benchmarks All benchmark programs (CD-TEST included) are intended to test and quantify a particular aspect of a program's operation. To properly apply a benchmark, you have to understand what the benchmark is intended to measure. If you use it in a way other than that in which it was intended, your results may not be accurate. Here's a case in point. CD-TEST was intended to compare CD-Quick's performance to a system's performance without a CD-ROM cache. It will give meaningful results if you use it in that way. Some people would like to use it to compare CD-Quick with other CD-ROM caches such as SmartDrive. They might perform the following test: set SmartDrive to use a 2MB cache, run a directory walk then do CD- TEST's read test. Repeat with CD-Quick set to use a 2MB cache and compare times. If you do this, you probably won't see a big differ- ence in times. You would then (erroneously) conclude that CD-Quick is not much better than SmartDrive. If you did this test with both SmartDrive and CD-Quick set to use a 1MB cache, you would see a big difference in read times. You would then conclude that CD-Quick IS much better than SmartDrive. What's going on here? CD-TEST's read test reads a total of 384 blocks (or 768KB) for the combined sequential and random read tests. If you set both SmartDrive and CD-Quick to use a 2MB cache, this data easily fits in memory. However, with a 1MB cache size, Smart- Drive can't hold 768KB of data! If you ran this test with only the 2MB caches you'd never see this. So be careful when using benchmarks. Know what they're intended to test and use them accordingly. Also don't rely on them as your only measure of performance. If the benchmark doesn't test for it, the results can't show it. 22 Appendix D - Distribution Points for CD-Quick Cache The latest version of CD-Quick Cache may be found on the ASP's monthly CD-ROM. All BBS's who are ASP members receive this CD each month. Check for an ASP BBS near you. The filename to look for is CDQCKxxx.ZIP (where xxx is the version number). CD-Quick may also be found in the PC Hardware forum on CompuServe (GO PCHW) in Lib 1. Look for the filename CDQCK.ZIP. Lastly, CD-Quick is available via the ASP's Hub Network of BBS's. If you are in North America, these BBS's all allow downloading of CD-QUICK on the first call: Consultant BBS, NY (718) 837-3236 Break RBBS, VA (703) 680-9269 Twilight Zone, WI (715) 652-2758 Data Exchange BBS, LA (318) 239-2122 SPACE BBS, CA (415) 323-4398 Knightec BBS, Canada (519) 940-0007