home *** CD-ROM | disk | FTP | other *** search
/ hackzapple.com / www.hackzapple.com.tar / www.hackzapple.com / PATENTS / PATENT1ZIPGS.HTM.orig < prev   
Text File  |  2010-10-06  |  41KB  |  626 lines

  1. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Frameset//EN" "http://www.w3.org/TR/html4/frameset.dtd">
  2. <HTML>
  3. <HEAD>
  4. <TITLE>HACK Z APPLE, Collection Apple II</TITLE>
  5.   <link rel="shortcut icon" type="image/x-icon" href="http://www.hackzapple.com/favicon.ico">
  6.   <meta http-equiv="imagetoolbar" content="no">
  7.   <meta name="author" content="JPL">
  8.  <meta name="KEYWORDS"    content="HACK Z APPLE, JPL, Cracking, Hacking, DISK II, DRIVES, DISQUETTES, Collection APPLE II, APPLE, Apple II, APPLE II Plus, 2+, Europlus, 2e, //e, enhanced, Platinium, Stealth,  Cortland, GS, IIGS, WOZ, IIGS WOZ, ROM 0, ROM 1, ROM 4, IIc, IIc Plus,Apple III, LISA, MAC XL, DARK VADOR, ITT 2020, APPLE BF,APPLE REV0, REVISION 0, RFI, NON RFI">
  9.   <meta name="TITLE"     content="Apple II standard">
  10.   <meta name="OWNER"     content="HACKZAPPLE.COM">
  11.   <meta name="SUBJECT"     content="Collection Apple II">
  12.   <meta name="REVISIT-AFTER"     content="10 DAYS">
  13.   <meta name="LANGUAGE" content="FR">
  14.   <meta name="ROBOTS"     content="All">   
  15. <link href="../BASIC.CSS" rel="stylesheet" type="text/css"> 
  16. </HEAD>
  17.  
  18. <BODY>
  19. <TABLE width="100%">
  20.   <TBODY>
  21.   <TR>
  22.     <TD align=left width="50%"><B>United States Patent </B></TD>
  23.     <TD align=right width="50%"><B><B><I>4,794,523</I></B> </B></TD></TR>
  24.   <TR>
  25.     <TD align=left width="50%"><B>Adan ,   et al.</B> <!-- 2: Adan; Manolito
  26. ,Meadows; Steven
  27. ,McCaslin; Robert
  28. ,
  29. <br>Adan, ;, , ,  --></TD>
  30.     <TD align=right width="50%"><B>December 27, 1988 </B></TD></TR></TBODY></TABLE>
  31. <HR>
  32. <FONT size=+1>Cache memory architecture for microcomputer speed-up board 
  33. </FONT><BR><BR>
  34. <CENTER><B>Abstract</B></CENTER>
  35. <P >A method and apparatus for enhancing the speed of operation of a computer 
  36. consists of providing a cache memory which is faster than the computer's main 
  37. memory, disabling the computer's main microprocessor, and replacing it with a 
  38. microprocessor with a faster clock cycle time. A portion of the program stored 
  39. in the main memory is stored in the cache memory. The addresses of the portion 
  40. of the main memory stored in the cache memory are noted in a tag RAM. Upon each 
  41. addressing sequence during the execution of a program, the tag RAM is examined 
  42. to determine if the addressed located is stored in the cache memory. If the 
  43. stored location is identified in the tag RAM, it is retrieved from the cache 
  44. memory at high-speed. Otherwise, the data in the address location is retrieved 
  45. from main memory at a slower speed and written into the cache memory so that 
  46. subsequent accesses may be made at high-speed. </P>
  47. <HR>
  48.  
  49. <TABLE width="100%">
  50.   <TBODY>
  51.   <TR>
  52.     <TD vAlign=top align=left width="10%">Inventors: </TD>
  53.     <TD align=left width="90%"><B>Adan; Manolito</B> (3545 S. Jasmine, Los 
  54.       Angeles, CA 90034); <B>Meadows; Steven</B> (4345 - 154th St., Lawndale, CA 
  55.       90260); <B>McCaslin; Robert</B> (1227 Coldwater Canyon, Beverly Hills, CA 
  56.       90210) </TD></TR>
  57.   <TR>
  58.     <TD vAlign=top noWrap align=left width="10%">Appl. No.: </TD>
  59.     <TD align=left width="90%"><B>782664</B></TD></TR>
  60.   <TR>
  61.     <TD vAlign=top align=left width="10%">Filed: </TD>
  62.     <TD  align=left width="90%"><B>September 30, 1985</B></TD></TR></TBODY></TABLE>
  63. <P>
  64.  
  65. <TABLE width="100%">
  66.   <TBODY>
  67.   <TR>
  68.     <TD vAlign=top align=left width="40%"><B>Current U.S. Class:</B></TD>
  69.     <TD vAlign=top align=right width="60%"><B>713/100</B>; 711/156; 713/501 
  70.   </TD></TR>
  71.   <TR>
  72.     <TD vAlign=top align=left width="40%"><B>Intern'l Class: </B></TD>
  73.     <TD vAlign=top align=right width="60%">G06F 009/28</TD></TR>
  74.   <TR >
  75.     <TD vAlign=top align=left width="40%"><B>Field of Search: </B></TD>
  76.     <TD vAlign=top align=right width="60%">364/200,900 </TD></TR></TBODY></TABLE>
  77. <HR>
  78.  
  79. <CENTER><B>References Cited <A 
  80. href="http://patft.uspto.gov/netacgi/nph-Parser?Sect1=PTO2&Sect2=HITOFF&p=1&u=%2Fnetahtml%2Fsearch-adv.htm&r=0&f=S&l=50&d=CR88&Query=ref/4,794,523">[Referenced 
  81. By]</A></B></CENTER>
  82. <HR>
  83.  
  84. <CENTER><B>U.S. Patent Documents</B></CENTER>
  85. <TABLE width="100%">
  86.   <TBODY>
  87.   <TR >
  88.     <TD width="25%"><A 
  89.       href="http://patft.uspto.gov/netacgi/nph-Parser?Sect2=PTO1&Sect2=HITOFF&p=1&u=%2Fnetahtml%2Fsearch-bool.html&r=1&f=G&l=50&d=PALL&RefSrch=yes&Query=PN%2F4104725">4104725</A></TD>
  90.     <TD width="25%">Aug., 1978</TD>
  91.     <TD align=left width="25%">Rose et al.</TD>
  92.     <TD align=right width="25%">364/900. </TD></TR>
  93.   <TR>
  94.     <TD width="25%"><A 
  95.       href="http://patft.uspto.gov/netacgi/nph-Parser?Sect2=PTO1&Sect2=HITOFF&p=1&u=%2Fnetahtml%2Fsearch-bool.html&r=1&f=G&l=50&d=PALL&RefSrch=yes&Query=PN%2F4304497">4304497</A></TD>
  96.     <TD width="25%">Dec., 1981</TD>
  97.     <TD align=left width="25%">Cavill et al.</TD>
  98.     <TD align=right width="25%">364/900. </TD></TR>
  99.   <TR>
  100.     <TD width="25%"><A 
  101.       href="http://patft.uspto.gov/netacgi/nph-Parser?Sect2=PTO1&Sect2=HITOFF&p=1&u=%2Fnetahtml%2Fsearch-bool.html&r=1&f=G&l=50&d=PALL&RefSrch=yes&Query=PN%2F4442487">4442487</A></TD>
  102.     <TD width="25%">Apr., 1984</TD>
  103.     <TD align=left width="25%">Fletcher et al.</TD>
  104.     <TD align=right width="25%">364/200. </TD></TR>
  105.   <TR>
  106.     <TD width="25%"><A 
  107.       href="http://patft.uspto.gov/netacgi/nph-Parser?Sect2=PTO1&Sect2=HITOFF&p=1&u=%2Fnetahtml%2Fsearch-bool.html&r=1&f=G&l=50&d=PALL&RefSrch=yes&Query=PN%2F4484273">4484273</A></TD>
  108.     <TD width="25%">Nov., 1984</TD>
  109.     <TD align=left width="25%">Stiffler et al.</TD>
  110.     <TD align=right width="25%">364/200. </TD></TR>
  111.   <TR>
  112.     <TD width="25%"><A 
  113.       href="http://patft.uspto.gov/netacgi/nph-Parser?Sect2=PTO1&Sect2=HITOFF&p=1&u=%2Fnetahtml%2Fsearch-bool.html&r=1&f=G&l=50&d=PALL&RefSrch=yes&Query=PN%2F4504902">4504902</A></TD>
  114.     <TD width="25%">Mar., 1985</TD>
  115.     <TD align=left width="25%">Gallaher et al.</TD>
  116.     <TD align=right width="25%">364/200. </TD></TR>
  117.   <TR>
  118.     <TD width="25%"><A 
  119.       href="http://patft.uspto.gov/netacgi/nph-Parser?Sect2=PTO1&Sect2=HITOFF&p=1&u=%2Fnetahtml%2Fsearch-bool.html&r=1&f=G&l=50&d=PALL&RefSrch=yes&Query=PN%2F4516199">4516199</A></TD>
  120.     <TD width="25%">May., 1985</TD>
  121.     <TD align=left width="25%">Frieder et al.</TD>
  122.     <TD align=right width="25%">364/200. </TD></TR>
  123.   <TR>
  124.     <TD width="25%"><A 
  125.       href="http://patft.uspto.gov/netacgi/nph-Parser?Sect2=PTO1&Sect2=HITOFF&p=1&u=%2Fnetahtml%2Fsearch-bool.html&r=1&f=G&l=50&d=PALL&RefSrch=yes&Query=PN%2F4523297">4523297</A></TD>
  126.     <TD width="25%">Jun., 1985</TD>
  127.     <TD align=left width="25%">Ugon</TD>
  128.     <TD  align=right width="25%">364/900. </TD></TR>
  129.   <TR>
  130.     <TD width="25%"><A 
  131.       href="http://patft.uspto.gov/netacgi/nph-Parser?Sect2=PTO1&Sect2=HITOFF&p=1&u=%2Fnetahtml%2Fsearch-bool.html&r=1&f=G&l=50&d=PALL&RefSrch=yes&Query=PN%2F4528626">4528626</A></TD>
  132.     <TD width="25%">Jul., 1985</TD>
  133.     <TD align=left width="25%">Dean et al.</TD>
  134.     <TD align=right width="25%">364/200. </TD></TR>
  135.   <TR>
  136.     <TD width="25%"><A 
  137.       href="http://patft.uspto.gov/netacgi/nph-Parser?Sect2=PTO1&Sect2=HITOFF&p=1&u=%2Fnetahtml%2Fsearch-bool.html&r=1&f=G&l=50&d=PALL&RefSrch=yes&Query=PN%2F4545023">4545023</A></TD>
  138.     <TD width="25%">Oct., 1985</TD>
  139.     <TD align=left width="25%">Mizzi</TD>
  140.     <TD align=right width="25%">364/900. </TD></TR>
  141.   <TR>
  142.     <TD width="25%"><A 
  143.       href="http://patft.uspto.gov/netacgi/nph-Parser?Sect2=PTO1&Sect2=HITOFF&p=1&u=%2Fnetahtml%2Fsearch-bool.html&r=1&f=G&l=50&d=PALL&RefSrch=yes&Query=PN%2F4556953">4556953</A></TD>
  144.     <TD width="25%">Dec., 1985</TD>
  145.     <TD align=left width="25%">Caprio et al.</TD>
  146.     <TD align=right width="25%">364/900. </TD></TR>
  147.   <TR>
  148.     <TD width="25%"><A 
  149.       href="http://patft.uspto.gov/netacgi/nph-Parser?Sect2=PTO1&Sect2=HITOFF&p=1&u=%2Fnetahtml%2Fsearch-bool.html&r=1&f=G&l=50&d=PALL&RefSrch=yes&Query=PN%2F4648034">4648034</A></TD>
  150.     <TD width="25%">Mar., 1987</TD>
  151.     <TD align=left width="25%">Heninger</TD>
  152.     <TD align=right width="25%">364/200. </TD></TR></TBODY></TABLE><BR>
  153. <TABLE width="90%"><TR><TD><BR>
  154.   <CENTER><B>Other References</B></CENTER></TD></TR>
  155.   <TBODY >
  156.   <TR>
  157.     <TD align=left><BR>MC68020 32-Bit Microprocessor User's Manual, 2nd Ed, 
  158.       1984, 1985 Prentice Hall, Inc., Englewood Cliffs, N.J. pp. 1-2, 7-1-7-4. 
  159.       <BR>Verebely, P. "GD80-Multiprocessor Architecture for Computer Graphics" 
  160.       Euromicro Journal 6 (1980) pp. 406-409. </TD></TR></TBODY></TABLE>
  161. <BR><I>Primary 
  162. Examiner:</I> Zache; Raulfe B. <BR><I>Assistant Examiner:</I> Coleman; Eric 
  163. <BR><I>Attorney, Agent or Firm:</I> Townsend & Townsend <BR>
  164. <HR>
  165.  
  166. <CENTER><B><I>Claims</I></B></CENTER>
  167. <HR>
  168. <BR><BR>What is claimed is: <BR><BR>1. A method for enhancing the speed of 
  169. operation of a computer having a plurality of devices including a first 
  170. microprocessor coupled to a main memory via an address bus, said computer being 
  171. designed to operate at a first clock cycle time, comprising the steps of: 
  172. <BR><BR>providing a cache memory having a faster access time than an access time 
  173. of said main memory used by said computer; <BR><BR>permanently disabling or 
  174. disconnecting said first microprocessor on or before power-up; <BR><BR>producing 
  175. a second clock having a faster cycle time than said first clock cycle time; 
  176. <BR><BR>providing a second microprocessor operating at said second clock cycle 
  177. time; <BR><BR>storing a portion of the data of said main memory in said cache 
  178. memory; <BR><BR>intercepting an addressing of a location in said main memory on 
  179. said address bus by said fast microprocessor; <BR><BR>producing a signal 
  180. designating one of a plurality of banks of said main memory in response to the 
  181. addressing of a location in said main memory by said second microprocessor, each 
  182. of said banks using the same addresses from said second microprocessor; 
  183. <BR><BR>determining, in response to said addressing of a location in said main 
  184. memory, whether the data of said location is stored in said cache memory; 
  185. <BR><BR>retrieving said data for said fast microprocessor from said cache memory 
  186. at said faster access time if said data are determined to be in said cache 
  187. memory; and <BR><BR>communicating with said plurality of devices, excluding said 
  188. first microprocessor, at said first clock cycle time. <BR><BR>2. The method of 
  189. claim 1 wherein said determining step comprises the steps of: <BR><BR>storing, 
  190. in a tag memory, a first portion of each of said main memory addresses for data 
  191. also stored in said cache memory, said data being stored in said cache memory at 
  192. a location in said cache memory corresponding to a second portion of said main 
  193. memory address; and <BR><BR>comparing a first portion of a current address to 
  194. said address first portion stored in said tag memory. <BR><BR>3. The method of 
  195. claim 1 wherein said data is stored in said cache memory upon a first request 
  196. for said data. <BR><BR>4. The method of claim 3 further comprising the step of 
  197. eliminating an earlier byte of data stored in a cache memory location upon a 
  198. request for a byte of data after said cache memory location is filled. 
  199. <BR><BR>5. The method of claim 1 wherein said disabling step comprises providing 
  200. a signal to a direct memory access line of said computer. <BR><BR>6. The method 
  201. of claim 1 further comprising the steps of: <BR><BR>decoding an address to 
  202. determine the location of said address; and <BR><BR>providing a clock speed for 
  203. said second microprocessor compatible with said location. <BR><BR>7. The method 
  204. of claim 1 further comprising the steps of: <BR><BR>storing an element of data 
  205. to be written into said main memory in a buffer during a clock cycle 
  206. corresponding to said faster access time; and <BR><BR>subsequently writing said 
  207. element of data into said main memory during a slower clock cycle independent of 
  208. said faster access clock cycle. <BR><BR>8. A method for enhancing the speed of 
  209. operation of a computer having a plurality of devices including a first 
  210. microprocessor coupled to a main memory via an address bus, said computer being 
  211. designed to operate at a first clock cycle time, comprising the steps of: 
  212. <BR><BR>providing a cache memory having a faster access time than an access time 
  213. of said main memory used by said computer; <BR><BR>permanently disabling or 
  214. disconnecting said first microprocessor on or before power-up; <BR><BR>producing 
  215. a second clock having a faster cycle time than said first clock cycle time; 
  216. <BR><BR>providing a second microprocessor operating at said second clock cycle 
  217. time; <BR><BR>storing a portion of the data of said main memory in said cache 
  218. memory; <BR><BR>intercepting an addressing of a location in said main memory on 
  219. said address bus by said fast microprocessor; <BR><BR>producing a signal 
  220. designating one of a plurality of banks of said main memory in response to the 
  221. addressing of a location in said main memory by said second microprocessor, each 
  222. of said banks using the same addresses from said second microprocessor; 
  223. <BR><BR>storing, in a tag memory, a first portion of each of the main memory 
  224. addresses for data also stored in said cache memory, said data being stored in 
  225. said cache memory at a location in said cache memory corresponding to a second 
  226. portion of said main memory address; <BR><BR>comparing a first portion of a 
  227. current address to said address first portion stored in said tag memory; 
  228. <BR><BR>retrieving said data from said cache memory if said compared addresses 
  229. are identical; and <BR><BR>communicating with said plurality of devices, 
  230. excluding said first microprocessor, at said first clock cycle time. <BR><BR>9. 
  231. An apparatus for enhancing the speed of operation of a computer having a 
  232. plurality of devices including a first microprocessor and a main memory, said 
  233. computer being designed to operate at a first clock cycle time, comprising: 
  234. <BR><BR>means for coupling said apparatus to address and data lines coupled to 
  235. said first microprocessor and permanently disabling said first microprocessor on 
  236. or before power-up; <BR><BR>means for communicating with said plurality of 
  237. devices, excluding said first microprocessor, at said first clock cycle time; 
  238. <BR><BR>means for producing a second clock having a faster cycle time than said 
  239. first clock cycle time; <BR><BR>a cache memory having a faster access time than 
  240. an access time of said main memory used by said computer; <BR><BR>a second 
  241. microprocessor operating at said second clock cycle time; <BR><BR>means for 
  242. storing a portion of the data of said main memory in said cache memory; 
  243. <BR><BR>means for producing a signal designating one of a plurality of banks of 
  244. said main memory in response to the addressing of a location in said main memory 
  245. by said second microprocessor, each of said banks using the same addresses from 
  246. said second microprocessor; <BR><BR>means for determining, in response to the 
  247. addressing of a location in said main memory by said second microprocessor, 
  248. whether the data of said location is stored in said cache memory; and 
  249. <BR><BR>means for retrieving said data for said second microprocessor from said 
  250. cache memory using said second clock if said data are determined to be in said 
  251. cache memory. <BR><BR>10. The apparatus of claim 9 wherein said means for 
  252. determining comprises: <BR><BR>a tag memory; <BR><BR>means for storing in said 
  253. tag memory a first portion of each of said main memory addresses for data stored 
  254. in said cache memory at a location in said cache memory corresponding to a 
  255. second portion of said main memory address; and <BR><BR>means for comparing a 
  256. first portion of a current address to said address first portion stored in said 
  257. tag memory. <BR><BR>11. The apparatus of claim 9 wherein said data is stored in 
  258. said cache memory upon a first request for said data. <BR><BR>12. The apparatus 
  259. of claim 11 further comprising means for eliminating an earlier byte of data 
  260. stored in a cache memory location upon a request for a byte of data from said 
  261. main memory after said cache memory location is filled. <BR><BR>13. The 
  262. apparatus of claim 9 wherein said disabling means comprises means for providing 
  263. a signal to a direct memory access line of said first microprocessor. 
  264. <BR><BR>14. The apparatus of claim 9 further comprising: <BR><BR>means for 
  265. decoding an address from said second microprocessor to determine the location of 
  266. said address; and <BR><BR>means for providing an addressing sequence clock speed 
  267. for said second microprocessor compatible with said location. <BR><BR>15. The 
  268. apparatus of claim 9 further comprising: <BR><BR>a buffer for storing an element 
  269. of data to be written into said main memory during a clock cycle corresponding 
  270. to said faster access time; and <BR><BR>means for subsequently writing said 
  271. element of data into said main memory during a slower clock cycle. <BR><BR>16. 
  272. An add-on apparatus for enhancing the speed of operation of a computer having a 
  273. plurality of devices including a first microprocessor and a main memory, said 
  274. computer being designed to operate at a first clock cycle time, comprising: 
  275. <BR><BR>means for coupling said apparatus to a first address bus and first data 
  276. bus coupled to said first microprocessor and permanently disabling said first 
  277. microprocessor on or before power-up; <BR><BR>means for communicating with said 
  278. plurality of devices, excluding said first microprocessor, at said first clock 
  279. cycle time; <BR><BR>means for producing a second clock having a faster cycle 
  280. time than said first clock cycle time; <BR><BR>a second microprocessor operating 
  281. at said second clock cycle time; <BR><BR>a cache memory having a faster access 
  282. time than an access time of said main memory of said computer, said cache memory 
  283. being smaller than said main memory; <BR><BR>a tag memory for storing a first 
  284. portion of each main memory address for data also stored in said cache memory, 
  285. said first address portion being stored in said tag memory at an address 
  286. corresponding to a second portion of said main memory address; <BR><BR>a 
  287. comparator for comparing a first portion of a current address with a first 
  288. address portion stored in said tag memory; <BR><BR>control means for retrieving 
  289. data for said second microprocessor from said cache memory at said faster access 
  290. time responsive to said comparator; <BR><BR>a fast data bus, internal to said 
  291. add-on apparatus, coupled to said second microprocessor and said cache memory; 
  292. <BR><BR>a fast address bus, internal to said add-on apparatus, coupled to said 
  293. second microprocessor, said tag memory and said comparator; <BR><BR>means for 
  294. producing a signal designating one of a plurality of banks of said main memory 
  295. in response to the addressing of a location in said main memory by said second 
  296. microprocessor, each of said banks using the same addresses from said second 
  297. microprocessor; <BR><BR>a first buffer means for coupling said fast data bus to 
  298. said first data bus of said first microprocessor; and <BR><BR>a second buffer 
  299. means for coupling said fast address bus to said first address bus of said first 
  300. microprocessor. 
  301. <HR>
  302.  
  303. <CENTER><B><I>Description</I></B></CENTER>
  304. <HR>
  305. <BR><BR>BACKGROUND OF THE INVENTION <BR><BR>The present invention relates to 
  306. fast add-on memory for microcomputers. <BR><BR>Cache memory is a computer memory 
  307. design concept which has been used for mainframe computers for several years. 
  308. The concept is to have two separate memories for the same machine, a main memory 
  309. which is large and medium speed and a cache memory which is small and fast. The 
  310. software is loaded into the main memory and then sections of it are loaded into 
  311. the cache memory as required for the central processing unit (CPU) to process. 
  312. The purposes of this arrangement is to increase the processing speed of the 
  313. computer without requiring the entire main memory to be of high-speed which can 
  314. be very expensive. The cache memory in such mainframe computers are typically 
  315. hard-wired into the computer and the internal CPU decides which operations 
  316. should use cache memory and which operations should use the slower main memory. 
  317. <BR><BR>Speed-up memory cards have been designed for microcomputers which have a 
  318. high-speed processor and high-speed random access memory (RAM). Such cards have 
  319. served to disable the processor in the microcomputer and replace the processor 
  320. and RAM in the microcomputer with that on the memory card. However, the 
  321. replacing of the entire memory with high-speed RAM can be very expensive due to 
  322. the cost of such high-speed RAM. <BR><BR>SUMMARY OF THE INVENTION <BR><BR>The 
  323. present invention is a method and apparatus for enhancing the speed of operation 
  324. of a computer. A cache memory which is faster than the main memory of a computer 
  325. is provided. A portion of the program stored in the main memory is stored in the 
  326. cache memory. The addresses of the portion of the main memory stored in the 
  327. cache memory are noted in a tag RAM. Upon each addressing sequence during the 
  328. execution of a program, the tag RAM is examined to determine if the addressed 
  329. location is stored in the cache memory. If the stored location is identified in 
  330. the tag RAM, it is retrieved from the cache memory at high-speed. Otherwise, the 
  331. data in the address location is retrieved from main memory at a slower speed and 
  332. written into the cache memory so that subsequent accesses may be made at 
  333. high-speed. <BR><BR>In the normal operation of any microcomputer, the software 
  334. to be executed is down-loaded from disc storage into the computer's memory 
  335. (called "main memory"). The microprocessor on the computer then begins to 
  336. execute the software out of main memory with the speed of execution controlled 
  337. by the speed of the microprocessor, which is in turn controlled by a clock 
  338. signal. The clock signal speed is set so that it will not exceed the operating 
  339. speed of the logic and memory chips in the computer. For economy of costs 
  340. microcomputers do not use the fastest chips available for the main memory. 
  341. <BR><BR>The cache memory design of the present invention utilizes a high-speed 
  342. microprocessor and high-speed memory. Small portions of the software from main 
  343. memory are copied into the cache memory which are then executed from cache 
  344. memory using the high-speed microprocessor. When a card containing the present 
  345. invention is plugged into a computer, the microprocessor resident in the 
  346. computer will be disabled by the power-up of the board of the present invention. 
  347. Since only small portions of the software are cached at any one time, the cache 
  348. memory can be a small fraction of the size of main memory, thereby reducing its 
  349. cost. <BR><BR>Each byte of software placed in the cache memory is tagged with a 
  350. byte in the tag RAM. The byte in the tag RAM records which section of main 
  351. memory it came from. Thus, for example, where the cache memory has 4K, the main 
  352. memory is divided into 4K blocks with a 4K tag RAM simply recording which of the 
  353. 4K blocks a particular address in the cache memory came from. When the 
  354. microprocessor addresses the next byte of instruction to execute, a cache memory 
  355. control logic first checks the tag RAM to determine if the byte to be fetched is 
  356. in cache memory. If it is, the byte is executed from the cache memory at 
  357. high-speed. If it is not, the microprocessor is shifted to a low speed to 
  358. execute the instruction out of main memory, while simultaneously copying it into 
  359. the cache RAM. <BR><BR>This caching process means that when the processor is to 
  360. make, say, ten iterations through a loop that is not in cache memory, the first 
  361. iteration will be executed from a main memory at slow speed and the successive 
  362. nine iterations will be executed from a cache memory at high-speed. Thus, the 
  363. execution speed of software using the present invention will vary depending upon 
  364. how the software is designed. If the software consists of often repeated loops, 
  365. most execution time will be from a cache memory at high-speed. Typical software 
  366. execution spends approximately 80% of its time executing out of cache memory. 
  367. <BR><BR>The present invention also contains write-through logic which allows an 
  368. address to be written to be stored in a buffer at high-speed and thereafter 
  369. entered into main memory at slow speed speed without slowing down the operation 
  370. of the fast microprocessor. The main microprocessor of the computer is also 
  371. uniquely disabled through use of the direct memory access (DMA) line which is 
  372. activated to inhibit the main microprocessor and take over operation of the 
  373. computer. <BR><BR>The present invention can be applied to many different 
  374. microcomputers, including the IBM and APPLE microcomputers. The APPLE 
  375. microcomputer contain "soft switches" which are combinations or codes of certain 
  376. addresses which indicate that certain locations are to be accessed. The soft 
  377. switches determine how and which memory is to be accessed. For example, the 
  378. computer may have ROM and RAM which reside at the same memory address. A soft 
  379. switch will determine if the processor is to access the ROM or the RAM. 
  380. Accordingly, by using programmable array logic (PAL), these codes can be decoded 
  381. to provide indication of which memory location is to be accessed and cached. 
  382. This decoded value is then stored in the tag RAM along with the identification 
  383. of the 4K block in memory. When soft switches are turned on and off, the PAL 
  384. circuitry mirrors this information so that the speed-up card knows the current 
  385. mode of the computer. <BR><BR>The present invention, through its unique ability 
  386. to disable the main microprocessor using the DMA line and its use of the tag 
  387. RAM, is able to provide fast operation using only a small high-speed memory. 
  388. Thus, the large expense of replacing the entire main memory with high-speed 
  389. memory as in prior art memory speed-up cards is avoided. <BR><BR>BRIEF 
  390. DESCRIPTION OF THE DRAWINGS <BR><BR>FIG. 1 is a block diagram of a preferred 
  391. embodiment of the present invention; <BR><BR>FIG. 2 is a block diagram of the 
  392. embodiment of FIG. 1 adapted for an APPLE computer; and <BR><BR>FIGS. 3A-3C are 
  393. schematic diagrams of the embodiment of FIG. 2. <BR><BR>DETAILED DESCRIPTION OF 
  394. THE PREFERRED EMBODIMENTS <BR><BR>FIG. 1 is a block diagram of a preferred 
  395. embodiment of a memory speed-up board according to the present invention. CPU 
  396. and control logic 10 is coupled to a data bus 12 and an address bus 14. A cache 
  397. memory 16 receives addresses from bus 14 through a buffer 15 and data from data 
  398. bus 12 through a buffer 18. A tag RAM 20 is addressed by address bits A0-A10 
  399. from address bus 14 and stores address bits A12-A15 which are input through a 
  400. buffer 22. The address bits A12-A15 stored at a particular location in tag RAM 
  401. are compared with bits A12-A15 of a current address by a comparator 24. CPU 10 
  402. controls the operation of the various components of the board through a number 
  403. of control lines 26. <BR><BR>In operation, after the board of the present 
  404. invention is plugged into a computer, it is powered up and disables the 
  405. computer's main microprocessor. Instructions are then executed at fast speed 
  406. using a fast microprocessor in CPU 10. Whenever an address appears on address 
  407. bus 14, bits A0-A10 of that address are input to tag RAM 20 which produces an 
  408. output to comparator 24 consisting of the bits A12-A15 stored in the tag RAM. 
  409. These bits A12-A15 identify the particular 4K block of memory which is stored in 
  410. cache memory 16. If this 4K block does not match the 4K block identified by 
  411. address bits A12-A15 of the current address, comparator 24 would indicate no 
  412. match on output line 28 to CPU 10. CPU 10 will then switch to a slow speed and 
  413. access the address from the computer's main memory. This address will then be 
  414. stored in cache memory 16 and the 4K block identifying its location will be 
  415. stored in tag RAM 20. The next time this particular address is executed, 
  416. comparator 24 would indicate that it is stored in cache memory and CPU 10 will 
  417. execute such address out of cache memory 16 at high-speed. <BR><BR>FIG. 2 is a 
  418. block diagram of the embodiment of FIG. 1 adapted for an APPLE microcomputer. In 
  419. addition to the elements of FIG. 1, a speed control circuit 30 and a cache 
  420. memory control circuit 32 have been separated out from CPU 10 of FIG. 1 and 
  421. perform the functions of the control logic in CPU 10 of FIG. 1. Speed control 
  422. circuit 30 provides a clock signal 36 determining the microprocessor speed. CPU 
  423. 34 provides a read/write signal 38 to cache memory control circuit 32. Speed 
  424. control circuit 30 and cache control circuit 32 then control the operation of 
  425. the remaining elements of the system. <BR><BR>A bank switch control 40 is 
  426. provided to receive addresses A0-A15 and to decode the addresses to produce a 
  427. three-bit word M1-M3, which, in conjunction with the current soft switch 
  428. settings, determine the exact source of a single byte of memory. Such a soft 
  429. switch is a particular address which indicates that a particular memory location 
  430. of the main memory is to be accessed, i.e., auxiliary memory, ROM, RAM, etc. 
  431. This additional address information M1-M3 is also processed through buffer 22 
  432. and stored in tag RAM 20. For a microcomputer which does not use soft switches, 
  433. such as the IBM microcomputers, instead of a bank switch control 40, additional 
  434. tag RAM 20 is provided to cover all the address locations. The operation of the 
  435. system of FIG. 2 is otherwise as set forth for the system of FIG. 1. 
  436. <BR><BR>FIGS. 3A-3C are schematic diagrams of a circuit implementing the 
  437. embodiment of FIG. 2. A fast microprocessor 42 has its data lines coupled to a 
  438. fast internal data bus 43 for data bits DAT0-DAT7. This internal data bus is 
  439. coupled through registers 44, 46 to the slower main microcomputer bus on the 
  440. APPLE computer for data bits D0-D7. Register 44 is used to buffer information 
  441. coming from the slower bus to the internal bus, while register 46 is used to 
  442. buffer data going from the fast internal bus to the slower external bus. The 
  443. internal data bits DAT0-DAT7 are also coupled to the data inputs of the fast 
  444. cache RAM's 48 and 50. <BR><BR>The addresses of microprocessor 42 are coupled to 
  445. a fast internal address bus 52 for address bits AD0-AD15. Fast address bus 52 is 
  446. coupled to the address inputs of cache RAM's 48 and 50. The fast address bus 52 
  447. is coupled to the slower main microcomputer bus 54 for address bits A0-A15 by 
  448. registers 56, 58 and latches 60, 62. <BR><BR>The remaining circuitry of FIG. 3A 
  449. provides the various clock and timing signals through the use of a number of 
  450. flip-flops and gates and PAL's 64 and 66. <BR><BR>Referring to FIG. 3C, tag 
  451. RAM's 68 and 70 are provided with data through a buffer 72. Address bits 
  452. AD12-AD15 of the current address and soft switch mode signals Mode1-Mode3 for 
  453. the current address are compared to the contents of RAM's 68 and 70 (address 
  454. bits A12-A15 and Mode1-Mode3) in comparator 74. PAL's 76, 78 and 80 decode the 
  455. current address to produce a three-bit signal (Mode1-Mode3) on lines 82 based on 
  456. the current soft switch settings. <BR><BR>In operation, on power-up, a ROM 84 
  457. does a dummy read to validate the system and fill the cache RAM with known 
  458. values. If requested by the user, it also performs a self-test transfer from the 
  459. APPLE minicomputer main memory and the APPLE resident ROM (read-only memory) and 
  460. then disables itself and turns over control to microprocessor 42. <BR><BR>PAL 
  461. circuits 76, 78 and 80 of FIG. 3C perform a straightforward decoding of the soft 
  462. switches in the addresses. A signal RWN to PAL 76 is activated for certain APPLE 
  463. addresses which are only meaningful when written to. An output signal TGO 
  464. produced by PAL 80 is used for disk access which requires system operation to 
  465. slow down. A one-shot 86 in FIG. 3A provides the required 15 millisecond (ms) 
  466. delay. An output signal MENABB from PAL 80 indicates that the address decoded 
  467. should not be read out of cache RAM's 48 and 50 because it corresponds to an I/O 
  468. (input/output) slot or other memory which should not be cached (for example, 
  469. bank switched memory as the tag cannot maintain the bank). Because it is an I/O 
  470. slot, its contents might change and the cache RAM would not be aware of this 
  471. change. Therefore, it must be updated for every addressing. A signal ROMEN input 
  472. to PAL 80 and to ROM 84 is used to activate the ROM and deactivate PAL 80 upon 
  473. power-up. <BR><BR>Referring now to FIG. 3A, registers 56, 58 and latches 60, 62 
  474. allow data to be written to the latches at high-speed with microprocessor 42 
  475. continuing on to the next instruction. Thereafter, the system can at its 
  476. leisure, at the slower 1-megahertz (MHz) APPLE speed, write the data to the 
  477. APPLE computer's main memory. Microprocessor 42 will normally operate at 3.5 
  478. MHz, thereby giving it an optimum 3.5 times speed increase over the APPLE 
  479. computer's resident microprocessor. Depending on how the software is written and 
  480. how often repeat loops are performed, the execution speed will more typically be 
  481. between 2.5 and 3.2 times faster than the normal APPLE execution speed. 
  482. <BR><BR>The PAL's and the logic circuits of FIG. 3B provide the timing and 
  483. control signals for the system. The functons of the signals operated on and 
  484. produced by PAL's 64, 66 are set forth in Table I below. <BR><BR><PRE>                  TABLE I
  485.     ______________________________________
  486.     PAL Control Signals
  487.     ______________________________________
  488.     PAL 64
  489.     PCK:   Processor Clock. Depending on the mode of
  490.            the system (high speed or synchronous with
  491.            slower APPLE clock) this clock will fluctuate
  492.            between 1 MHz and 3.59 MHz.
  493.     WRT:   Cache write signal. Low when writing to Cache
  494.            memory 48, 50.
  495.     CEN:   Cache output enable. Low when processor 42
  496.            is reading Cache memory 48, 50.
  497.     EXW:   External Write signal. Asserted when a write
  498.            to the APPLE bus 47 is required. Propagates
  499.            through to PALX where the actual APPLE write
  500.            is synchronized. This signal initiates the process.
  501.     TAG:   Cache tag signal. This signal is asserted
  502.            when cache RAM 48, 50 is written to.
  503.     CRD:   Cache read signal. This signal is asserted
  504.            when cache RAM 48, 50 is read from.
  505.     FF0:   Timing signal flip-flop. This signal, combined
  506.            with FF1, stops and starts PCK for transitions
  507.            between synchronous 1 MHz operation and asyn-
  508.            chronous 3.59 MHz operation.
  509.     CLR:   Initiates slow down of PCK from 3.59 MHz to 1
  510.            MHz. Also latches address and data into buf-
  511.            fers 56, 58 and 46 for writes to the APPLE
  512.            bus 47, 54 which are later enabled onto the
  513.            APPLE bus during the next phase 0 clock cycle.
  514.            If data is latched into the first stage buf-
  515.            fers 56, 58 and 46 and a subsequent write
  516.            occurs before the next phase 0, the processor
  517.            will stop until the next phase 0 before CLR
  518.            can latch the new data into the buffer.
  519.     DL1:   Used for synchronization during clock changes.
  520.            No signals may be generated unless DL1 and
  521.            DL2 are of the same state. When the clock
  522.            rate is to change, these two signals will
  523.            sequentially change states. Other signals in
  524.            the PAL's look at these two signals to deter-
  525.            mine whether writes/reads are out of cache or
  526.            the APPLE bus 47, 54.
  527.     DL2:   See DL1.
  528.     0AN:   Same as 0AN on PAL 66.
  529.     7MN:   Inverted 7.18 MHz clock from the APPLE bus.
  530.            This clock is divided by two internally pro-
  531.            ducing the 3.59 MHz clock used for high-speed
  532.            operations.
  533.     HLD:   When CLR is generated, HLD holds CLR for one
  534.            following phase 0 clock cycle.
  535.     4M:    High speed clock. This is the divided by two
  536.            versions of 7MN described above. This is
  537.            actually a misnomer since the actual frequency
  538.            present at this pin is 3.59 MHz.
  539.     RWN:   Read/Write signal output from microprocessor 42.
  540.     FF1:   See FF0.
  541.     MCH:   Match signal from comparator 74. This signal
  542.            is asserted low by the comparator whenever
  543.            tag memory 68, 70 matches the current requested
  544.            memory byte. If the tag bits match, MCH may
  545.            still be disabled if the location is not a
  546.            valid cache location as determined by MENABN
  547.            produced by MEN of PAL 80.
  548.     2MN:   Used for proper synchronization of DL1 and DL2.
  549.     PAL 66
  550.     TMO:   Clock for disabling the system. This signal
  551.            gates the BDDIS* signal from PAL 78 into a
  552.            latch which completely removes the system
  553.            from operation thus releasing all address and
  554.            data lines. Allows the Direct Memory Access
  555.            line (pin 22) on the APPLE bus to float high
  556.            enabling the APPLE's normal 6502 microproces-
  557.            sor to operate. Any time pin 22 is low, the
  558.            APPLE 6052 is completely disabled, floating
  559.            all of its address and data lines which is
  560.            the method in which the present system takes
  561.            control of the APPLE.
  562.     XWR:   This signal takes the place of the normal
  563.            APPLE WR* signal (pin 18 on the APPLE bus).
  564.            When an actual write to the APPLE bus occurs,
  565.            this signal drops low. This signal is dis-
  566.            abled when DMA is not asserted.
  567.     REN:   ROM Enable: The presence of ROM 84 is indi-
  568.            cated by the assertion of this signal and is
  569.            only present while the system is determining
  570.            the mode of operation. It disallows the sys-
  571.            tem to cache memory from the high address
  572.            space which is where the ROM image is initially
  573.            located (thus overlaying the APPLE operating
  574.            system ROM's). This is necessary since the
  575.            cache RAM is undefined upon power-up and it
  576.            allows the power-up software to define all of
  577.            the cache before normal operation. After the
  578.            cache initialization, the system creates a
  579.            copy of itself in normal APPLE RAM at address
  580.            $1000 (hex) and transfers execution to there.
  581.            Normal operation starts, and this signal is
  582.            asserted false, thus allowing the system to
  583.            cache high memory.
  584.     DOE:   Data Bus Buffer Output Enable: This signal
  585.            enables the data bus output buffers 44, 46
  586.            for writes to the APPLE bus 47.
  587.     BRE:   Data Bus Buffer Read Output Enable: For reads
  588.            from the APPLE bus, this signal enables the
  589.            output buffer.
  590.     OAN:   Maser Asynchronous 3.59 MHz clock which is
  591.            derived by dividing the APPLE 7.18 MHz clock by 2.
  592.     FF1:   See FF1 of PAL 64.
  593.     7MN:   See 7MN of PAL 64.
  594.     EXW:   See EXW of PAL 64.
  595.     FF0:   See FF0 of PAL 64.
  596.     RST:   Reset signal from APPLE bus. Causes the sys-
  597.            tem to begin reading its on-board ROM 84 with-
  598.            out caching memory, thus enabling the software
  599.            to initialize the cache memory.
  600.     INQ:   I/OSTRB* signal from APPLE bus. REN is enabled
  601.            by a reset and is held until this signal appears.
  602.     DMA:   Allows signals to be generated. When the
  603.            system is disabled, this signal is asserted
  604.            low causing outputs from this PAL to the APPLE
  605.            bus to stop.
  606.     CRD:   Latched version of CRD from PAL 64. Causes
  607.            generation of read signals from this PAL 66
  608.            and is latched through by the 4MN clock.
  609.     0ON:   Inverted phase 0 from APPLE bus.
  610.     A11:   Inverted Address line 11 from microprocessor 42.
  611.     CFD:   When gated with EXW generates a timing pulse
  612.            for system disable.
  613.     ______________________________________
  614. </PRE><BR><BR>As will be understood by those familar with the art, the present 
  615. invention may be embodied in other specific forms without departing from the 
  616. spirit or essential characteristics thereof. FIGS. 2 and 3 show a specific 
  617. embodiment for an APPLE microcomputer. Other embodiments could implement the 
  618. system of FIG. 1 for IBM or other microcomputers. Accordingly, the disclosure of 
  619. the preferred embodiment of the invention is intended to be illustrative, but 
  620. not limiting, of the scope of the invention which is set forth in the following 
  621. claims. <BR><BR>
  622. <CENTER><B>* * * * *</B></CENTER>
  623. <HR>
  624. </BODY>
  625. </HTML>
  626.