`Miller et al.
`
`I 1111111111111111 11111 lllll lllll lllll lllll 111111111111111 111111111111111111
`5,465,360
`Nov. 7, 1995
`
`US005465360A
`[lll Patent Number:
`[45] Date of Patent:
`
`[54] METHOD AND APPARATUS FOR
`INDEPENDENTLY RESETTING
`PROCESSORS AND CACHE CONTROLLERS
`IN MULTIPLE PROCESSOR SYSTEMS
`
`[75]
`
`Inventors: David A. Miller, Houston; Kenneth A.
`Jansen, Spring; Paul R. Culley,
`Cypress; Mark Taylor; Javier F.
`Izquierdo, both of Houston, all of Tex.
`
`[73] Assignee: Compaq Computer Corp., Houston,
`Tex.
`
`[21] Appl. No.: 152,241
`
`[22] Filed:
`
`Nov. 12, 1993
`
`Related U.S. Application Data
`
`[63] Continuation of Ser. No. 15,314, Feb. 9, 1993, which is a
`continuation of Ser. No. 431,653, Nov. 3, 1989.
`Int. Cl.6
`•••••.•••••••••.•.••••..•••••••.•...•••••••••••..••.•... G06F 9/00
`[51]
`[52) U.S. Cl. ····································· 39Snoo; 364/DIG. 1;
`364/280.3; 364/280.2; 364/282
`[58) Field of Search ...................................... 395/700, 375
`
`[56]
`
`References Cited
`
`U.S. PATENT DOCUMENTS
`
`4,779,187 10/1988 Letwin .................................... 364/200
`4,787,032 11/1988 Culley ..................................... 364/200
`
`FOREIGN PATENT DOCUMENTS
`
`0191402
`0398995
`
`8/1986 European Pat. Off ..
`5/1989 European Pat. Off ..
`
`OTHER PUBLICATIONS
`
`Intel Corporation, Microprocessors 1990, pp. 4-170 to
`4-304.
`Intel Corporation, Microprocessors 1990, pp. 4-343 to
`4-409.
`Compaq Computer Corp., Compaq Deskpro 386/20 Tech(cid:173)
`nical Reference Guide, vol. 1, Oct., 1987, pp. 2-108 to
`2-122.
`Japan Abstract vol. 6 No. 206 (P-149) (1084) Oct. 9, 1982.
`
`Primary Examiner-Kevin A. Kriess
`Attorney, Agent, or Firm-Pravel, Hewitt, Kimball &
`Krieger
`
`[57]
`
`ABSTRACT
`
`A method and system for independently resetting primary
`and secondary processors 20 and 120 respectively under
`program control in a multiprocessor, cache memory system.
`Processors 20 and 120 are reset without causing cache
`memory controllers 24 and 124 to reset.
`
`4,679,166
`
`7 /1987 Berger et al ............................ 364/900
`
`6 Claims, 7 Drawing Sheets
`
`170 1---.---x,-,~'7~~.,.~-.;
`
`217 +-:::,____;W.:..:./.:..:.R-<
`Pl INT
`202
`164 1--~....-+--=E'°"l;~:-',-~i'='o~! -i
`
`CLK1
`
`214
`
`212
`
`217
`
`216
`
`230 ~-----,H-- P1 HOLD
`
`SHUTDOWN
`P1 HOLD A
`RESET
`CONTROL
`192 R STAR*
`LOGIC
`1661-lf-.-:19:-::-0--R;;-;;S:;-T-J---L__.,.._...J
`RESET --.-+--+'------+----'
`
`Pl PCL
`
`PI/P2 MODE
`
`CLK 2
`X DATA
`W/R
`PRS 0 .. 3
`EISACMD•
`
`202
`
`SHUTDOWN
`P2HOLD A
`RST
`
`190
`
`RESET
`
`218
`
`213
`
`230
`
`RESET
`CONTROL
`LOGIC
`
`186
`
`188
`
`Petitioners Microsoft Corporation and HP Inc. - Ex. 1039, p. 1
`
`
`
`=", =
`.... w
`01
`=",
`~
`....
`01
`
`-..J
`
`"""' s,
`ti) a
`rJ:J. =(cid:173)
`
`z Q
`
`Ut
`l,C
`"""'
`l,C
`;-l
`~
`
`~ i a
`00. •
`e •
`
`l
`
`l
`
`l
`
`cb
`
`I
`
`I
`
`I
`
`I
`
`•
`
`,,l
`
`ADDRESS 32 BIT
`
`t
`
`DATA 16/ 32 BIT
`
`CONTROL
`
`cb
`
`<t
`
`<b --
`
`_,,
`
`•
`
`t
`
`•
`
`If 26
`
`1..,ru1
`
`20
`
`I ADDRESS I
`• '
`
`\
`
`l
`
`!EXCHANGE
`
`'
`
`I t
`
`t l
`
`I
`
`I t
`
`L ~ 386
`
`l i
`
`WTL3167
`
`387
`22
`
`I
`
`L\34
`
`H DATA
`7
`
`CONTROLLER
`
`CACHE
`
`385
`
`--------
`
`36
`I
`EXCHANGE
`
`24
`
`I
`
`INCA MAP l-
`
`~2
`
`LOGIC
`PROG
`MAP
`
`I
`
`------------
`
`REQUEST
`
`BUS
`
`LOGIC
`
`____ _J
`I
`I
`I
`I
`I
`I
`I
`I
`I
`I
`I
`j,P1
`I
`I
`7
`Fl(;.1~ r-------------------
`
`ADDRESS
`
`I
`CONTROL
`
`DATA
`II I
`I
`
`I I
`
`I
`
`l
`
`t
`
`~r ~o
`
`t_
`
`~
`
`l
`
`RAM
`DATA j,19,
`CACHE
`2s
`
`LOGIC
`READY
`LOCAL BUS
`
`LOGIC
`ENABLE
`
`NA
`
`38
`
`I
`
`I
`
`40
`
`I
`
`BUFFERS L_
`
`42
`
`I
`
`I
`60
`
`EBB
`
`I
`
`1
`MEMORY -DATA
`l l
`
`CONTROLLER
`
`HOST
`
`/
`62
`
`l
`
`ARRAY
`MEMORY
`MAIN
`
`ss
`
`BUFFERS
`ADDR/CAS
`~6
`
`r' ~64
`
`LOGIC
`ENABLE
`
`•
`
`RAS
`
`Petitioners Microsoft Corporation and HP Inc. - Ex. 1039, p. 2
`
`
`
`~
`_,.
`01
`~
`~
`_,.
`01
`
`~ =
`
`...:a
`~ s,
`~
`r:,;_ =(cid:173)
`('Cl
`
`,...
`~...:a
`~
`
`(JJ
`\0
`\0
`
`~ ;-= ~
`
`~
`00. •
`d •
`
`f HOST I.I.
`
`BUS,
`
`_J
`I
`I
`I
`f
`I
`I
`I
`I
`
`L _________ ----
`I
`I
`I
`I
`I
`j
`I
`--r-,---;:n=~,-r-----,---r-_Jf
`I
`l
`l~=;=~:::;::;:1¢~~~~==!:!=::=::J
`I
`I
`1
`,-------------------
`
`-----------
`
`~=======~~;~=~=================~=======:1cQlo1, NiltfR OQbL~::J
`
`136
`
`124
`
`132
`
`REOUESl
`
`LOGIC
`BUS
`
`EXCHANGE
`
`DATA
`
`CONTROLLER
`
`EXCHANGE
`,---&....J.----1--._--+ ___ ADORES s
`
`CACHE
`
`LOGIC
`PROG
`MAP
`
`.,_ _ __, ____ _,
`NCAMAP
`~~-
`
`38s
`
`142
`
`~--':_=---.1.n::;_._ -~~;,-ts~t~ _,.__r.=_. LJ'=-~--:]~_ -':r~_ L=-=---=-=---= j 126 i
`
`I
`
`I
`I/
`I /P2
`7
`
`...__...
`
`386
`
`CPU 2
`
`-~
`
`.
`
`120
`
`Wll3167
`
`L
`387
`122
`
`RAM
`DAlA
`CACHE
`128
`
`LOGIC
`READY
`LOCAL BUS
`
`138
`
`LOGIC
`ENABLE
`
`NA
`140
`
`____ _J
`L LOGIC
`I
`I
`COMM.
`I PROCESSOR I
`i-l~ER--7
`
`j
`
`SGC
`
`150
`
`Flf;.1E
`
`Petitioners Microsoft Corporation and HP Inc. - Ex. 1039, p. 3
`
`
`
`Ul
`0'-.
`~
`,..
`Ul
`
`0'-. =
`,.. w
`
`--.::I
`s,
`~
`~
`Cl) ;
`
`~" ....
`~
`z
`
`Ul
`\0
`\0
`
`~ a. ~ = """'
`
`•
`rJl
`d •
`
`CONNECTOR
`COM PORT
`
`FIE,.2#-.
`
`108 .I
`
`L-_!_I:_ _ _J
`I • jPER;;;A~
`
`I
`
`REG.s
`SHIFT
`
`104
`-----1
`~--~
`1 CLOCK I
`•TIME
`il<EALl
`
`98
`
`XO DATA BUS BUFFER[) ()(15 . .QU
`X-BUS CONTROL SIGNALS
`
`96
`
`94
`
`102
`
`CONNECTOR
`
`MOUSE
`
`CONNECTOR
`KEYBOARD
`
`DRIVER
`SPEAKER
`
`C--"'
`
`PERIPHERAL
`
`SYSTEM
`
`INTEGRATED
`
`LAAODRESS BUS IEISA SECTION-LA(31 .. 24J~. LA(16 .. 2l)
`
`S
`
`LA ADDRESS BUS !ISA SECTION-L~A(2~3371J
`SA ADDRESS BUS USA ONLY-SA[19 .. 0))
`
`D DATA BUS IEISA SECTION -0(31 .. 16])
`Cl DAJAB~US IISA SECl!QN-JU,5 .. on
`
`84 ..,-4
`az--r
`
`80
`
`86
`
`78
`
`~ENERATIONJ
`,-AE~-7
`
`ISA CONTROL
`
`75
`
`CONTROLLER
`EISA BUS
`
`4 8
`
`ARBITRATION ______ .....,
`___,___._...._._ 7.4
`
`LOGIC
`
`5
`
`'-f" 1NTERRUP~l I OMA 1---f;:RBITRATioN}
`70
`
`_
`
`~ONTROLLER~ J -J~ L_LOGIC _
`
`56)\_-
`
`L:-~
`I LOGIC I
`INN[7
`
`72
`f
`
`)
`54
`
`Petitioners Microsoft Corporation and HP Inc. - Ex. 1039, p. 4
`
`
`
`~
`-a
`Ul
`=".
`-a .a;;.
`Ul
`
`=". =
`
`'1
`s,
`,I::..
`~
`rJ'J. =(cid:173) (0
`
`U1
`\0
`\0
`~
`
`~ __ '1
`
`to = """"
`
`""""
`~
`~
`rJJ. •
`•
`Cj
`
`I
`
`CONNECTOR
`
`VGA
`
`(STARLIGHT)
`
`VIDEO
`
`46
`
`'SLOTS,
`TOEISA
`
`110 _...,. I PARALLEL ___ r"pARALLEL 7 !VIDEO SUPPORT I I
`
`--l
`
`-
`
`-
`
`-
`
`L... -
`
`j
`
`PORT
`
`L
`
`CONNECTOR
`
`L ~UPPORT_ t-i -111------'
`jF1xE001si<
`~~l~~A l~~
`rMFG~AcH11
`
`1,
`
`REG.s
`SHIFT
`
`CONNEClOR
`FIXED DISK
`
`j
`l_x sus
`
`90
`
`52
`
`CONNECTOR ---•L UA~Tj
`r---,
`COM PORT
`CONNECTOR
`TPAW A
`
`FLOPPY
`
`.
`1 1
`
`FLOPPY DISK I•
`
`LOGIC
`
`Fl<3.2E
`
`EBB DATA L y EBB ADDRESS h
`
`BUFFERS
`
`BUFFERS
`
`(10)
`
`(9}
`
`(8)
`
`7)
`
`Petitioners Microsoft Corporation and HP Inc. - Ex. 1039, p. 5
`
`
`
`U.S. Patent
`
`Nov. 7, 1995
`
`Sheet 5 of 7
`
`5,465,360
`
`162
`____ CONTROL
`MIO;CMD .---__,,_---.
`
`W/R
`
`A (31...0)
`
`ADDRESS
`DECODE
`
`DATA (7 ... 0)
`
`BUS
`INTERFACE
`
`186
`
`LA (31 .. 2)
`174
`SA (1 .. 0)
`176
`
`XDATA
`178 (l.O)
`El SA
`CONTROL
`180
`
`EISA CLK
`(BCLK)
`
`SYSTEM.__ __ __
`RESET
`160
`
`FUNCTION
`SELECT
`
`/
`
`150
`
`166
`
`RESTART
`
`PORT 092
`
`RSTAR*
`
`KEYBOARD
`CONTROLLER
`SELECT. W-R
`
`168
`
`170
`
`REAL TIME
`CLOCK
`
`CLK
`
`172
`
`P 2 INTERRUPT
`CONTROLLER
`•
`•
`
`TO ISP
`
`22
`
`20
`
`122
`
`120
`
`ACP 1
`
`PROCESSOR 1
`
`ACP 2
`
`PROCESSOR 2
`
`124
`
`CACHE
`CONTROLLER
`
`24
`
`'------.-----,_E;..R..::E..:;..SP_2:__+----+-----...r--,
`PHOLD 1
`PHOLD2
`189 ::H:o:L:D~A2::=====:=========:
`PHOLD A 1
`....,.... ________ ~R=-ES=E=--T:..i
`~...,aa..;S;.;;;;E.;.,T____. ____ RESET
`
`186
`
`RESET
`
`RSTAR------'~
`
`SHUT DOWN
`
`Fl6.15
`
`160
`
`PRS
`
`150
`
`302
`
`HOST BUS
`
`44
`
`Petitioners Microsoft Corporation and HP Inc. - Ex. 1039, p. 6
`
`
`
`U.S. Patent
`
`Nov. 7, 1995
`
`Sheet 6 of 7
`
`5,465,360
`
`FIE,LJ
`•
`
`170
`
`217-
`1202
`
`CLK 2
`X DATA -
`W/R -
`~
`P1 INT
`PRS 0 .. 3
`EISA CMD*
`
`164
`-
`
`Pl/ P2 MODE
`1-- 219
`
`REG.
`
`- DECODE n
`
`~
`\.. 212
`216
`
`~ 217
`
`230
`
`\
`
`RESET
`CONTROL
`LOGIC
`
`-
`
`-
`
`Pl PCL
`
`P1/P2MODE
`
`crRST
`
`SHUTDOWN
`P1 HOLD A
`I 192 R STAR*
`
`190
`
`RST
`
`166
`
`RESET
`
`,
`
`l
`,, 202
`
`CLK 2
`X DATA
`W/R -
`PRS 0 .. 3 _
`EISACMD ~
`
`SHUTDOWN
`P2 HOLD A
`RST
`
`190
`{
`
`RESET
`'--,,
`
`CLK 1
`
`!
`
`TO
`ERESPI SYNCH 180386
`I
`- I
`
`l224
`
`P1 INT
`
`~214
`
`P1 HOLD
`
`V-186
`
`CLK 1
`
`!
`
`TO
`ERESPI
`180386
`I SYNCHI
`
`REG.
`DECODE
`
`'219
`
`PRST
`
`l
`218
`
`213
`
`230
`~
`
`RESET
`CONTROL
`LOGIC
`
`r t
`
`\... 226
`
`220
`
`P2 INT
`
`~188
`
`P2 HOLD
`
`P2 PCL
`
`• • •
`
`Petitioners Microsoft Corporation and HP Inc. - Ex. 1039, p. 7
`
`
`
`0\. =
`~
`...
`'-11
`0\.
`,l:;i,.
`...
`'-11
`
`....;J
`.-i,
`0
`....;J
`
`.....
`=-
`C"l.l
`
`('D
`('D
`
`z 0
`
`~....;J
`~
`
`....
`
`(It
`\Cl
`\Cl
`
`=
`=
`
`"""'"
`
`"""'"
`~
`
`~
`•
`rJ'J.
`•
`d
`
`ZCLIR\I
`
`Fl<;.S
`
`280
`
`/
`
`RQO
`
`RQ
`
`RQO*
`
`244
`
`D a
`
`RQl*
`
`RQ
`
`RQ1
`
`D Q
`
`242
`
`RC2*
`
`RQ
`
`RQ2
`
`D Q
`
`240
`
`ERESP
`
`j0 ll32
`
`R Q
`
`, 248
`
`RESCPU MCLKI/ I
`
`RESCPU*
`
`PHOLD
`
`r R:
`f's
`
`Q
`
`I
`D Q
`
`250
`
`RSTR *
`ZCLKIR \I
`£fl
`
`252
`
`41P
`
`190
`
`RST
`
`RESCPU--i.....,l'--Lt4
`
`CLK2w
`CLKl
`
`RQhf
`RQ2
`RQO
`RQ1*
`RQ2
`RQl
`
`R02*-r-'\_
`RQO*
`RQ2*
`RQO
`RQ1*
`RQO
`RQ2
`RQ1 * ~
`
`2~
`
`RQ1
`
`RQ2
`
`./264
`
`/
`
`230
`
`SHUTDOWN
`PRST
`ZCLKIR
`
`PHLD* ~ l
`
`RESREQ
`RESCPU
`
`256
`
`RS TAR* ----cf5 a}
`
`269
`
`RESREQ
`
`....
`
`l
`
`RQ2• 3)
`268
`
`RQO•
`RQ1*
`
`Petitioners Microsoft Corporation and HP Inc. - Ex. 1039, p. 8
`
`
`
`5,465,360
`
`1
`METHOD AND APPARATUS FOR
`INDEPENDENTLY RESETTING
`PROCESSORS AND CACHE CONTROLLERS
`IN MULTIPLE PROCESSOR SYSTEMS
`
`This continuation of application Ser. No. 08/015,314
`filed on Feb. 9, 1993, which is a continuation of application
`Ser. No. 07/431,653 filed on Nov. 3, 1989, now abandoned.
`
`BACKGROUND OF THE INVENTION
`
`lO
`
`2
`busses. Details of an example of such systems is set forth in
`the Intel system design handbooks for the 80386 family,
`such as the Microprocessor and Peripheral Handbook Vol(cid:173)
`ume 1, specifically pages 4-292 through 4-353 of the Octo-
`5 ber, 1988 reference manual.
`Further development of personal computer systems led to
`the design of systems including multiple processors, each
`having an associated cache memory and cache controller, as
`well as a coprocessor. In such sy,stems one of the processors
`is typically the primary processor which controls and utilizes
`the other secondary processors. The Intel Microprocessor
`and Peripheral Handbook at page 4-295 disclosed such a
`multiple processor system where each processor and asso(cid:173)
`ciated cache system were connected to a common local bus
`15 which is then connected to a system bus. In the Intel design,
`another device known as the Intel 82380 32-bit OMA
`controller was also connected to the local bus and utilized to
`provide direct memory access control, interrupt control,
`timing, wait state generation, dynamic (non-cache) memory
`refreshing and processor reset control. In the Intel system,
`both processors and cache controllers interface to the system
`bus via a common local bus interface. As designed, the cache
`controllers and associated processors were reset by a com-
`mon signal.
`Resets are utilized to interrupt all system activity and
`bring all elements of the system to a known initialization
`state. Resets are assigned the highest priority among system
`signals and when a reset signal is asserted, all activity
`ceases. In 80386 and earlier 80286 based systems reset
`30 signals can be generated by hardware such as a switch, by
`operator command via a keyboard or under program control.
`A hardware reset occurs when the system is first energized
`or turned on. Software or program controlled resets are
`utilized by programmers for a variety of reasons.
`One example of the use of a programmed reset relates to
`setting the mode of the processor. Both 80286 and 80386
`processors are initialized in a mode known as the Real
`Mode. Real Mode operation is typically only utilized as a
`prelude to system operation such as during a system initial(cid:173)
`ization sequence which occurs on power up. Real Mode
`operation utilizes a system addressing scheme which is
`limited and greatly restricts the ability of the processor to
`address large memory spaces. In the 80386 Real Mode
`45 operation limits the processor to one megabyte of address(cid:173)
`able memory space. Typically, once initialization is com(cid:173)
`pleted, the system transitions to Protected Mode. Protected
`Mode allows the processor to use virtual addressing to
`expand the addressable memory to four terabytes.
`In the design of the 80286 family it was not anticipated
`that after system initialization it would be desirable to revert
`from Protected Mode to Real Mode, and consequently no
`provision was made to accomplish this under program
`control. Software designed for the 80286 system frequently
`incorporated software initiated resets to cause the 80286 to
`reset in order to revert from Protected Mode to Real Mode.
`In order to maintain software compatibility with software
`designed for 80286 systems, it is necessary to accommodate
`software resets as a method of resetting the processor to Real
`60 Mode.
`In prior art systems using multiple processors and cache
`controllers connected via a common bus the utilization of a
`reset signal caused all processors and cache controllers to
`reset. On reset the 82385 cache controller clears the cache
`65 memory by executing a cache flush operation which invali(cid:173)
`dates all data stored in the cache. When 82385 controllers
`are utilized in master mode, a reset causes the controller to
`
`20
`
`35
`
`1. Field of the Invention
`This invention relates to a method and apparatus for
`independently controlling and implementing the reset of the
`processors and cache memory system controllers in multiple
`processor computer systems utilizing cache memory.
`2. Discussion of the Related Art
`Personal computer systems have developed from systems
`utilizing a single processing unit or CPU to systems which
`include multiple processors operating in parallel. One of the
`first developments was to include a second arithmetic copro(cid:173)
`cessor in parallel with the main CPU to perform time(cid:173)
`consuming and complex arithmetic tasks leaving the main
`CPU free to perform system control, input/output, memory
`operations and other less time-consuming code execution. 25
`Systems incorporating the Intel 80386 processor and 80387
`coprocessor are one common example of such more
`advanced systems.
`In addition to the development of arithmetic coprocessors,
`memory systems used by the processor have evolved from
`single units of read only memory for storing fixed system
`instructions and static random access integrated circuit
`memory to further include peripheral memory devices such
`as floppy-disk and fixed-disk memories and associated inter(cid:173)
`face and control circuity.
`As the speed of processors was enhanced, it became
`necessary to enhance the speed at which memory operations
`could be performed so as to take advantage of the newer
`high speed processors such as the Intel 80386. High speed 40
`static RAM devices were available, but to implement the
`entire memory requirement with high speed RAM was too
`expensive for personal computer systems. One solution to
`the problem was the implementation of what is known as a
`cache memory system.
`In a cache memory system a small amount of more
`expensive fast memory, typically static RAM devices, is
`used for high speed execution and slower, less expensive
`dynamic RAM and peripheral devices are used for the bulk
`memory requirements. Data or code contained in portions of 50
`the main memory is duplicated in the fast cache memory so
`that operations requiring only data or code in cache memory
`can be executed quickly. Idealized cache memory systems
`seek to match the upcoming processor code and data
`requests to code and data maintained in cache memory by 55
`changing the contents of the cache memory as the processor
`executes code or instructions to minimize the number of
`times slower memory has to be accessed by the processor.
`Updating and maintaining the directory to the cache
`memory is performed by a device known as a cache con(cid:173)
`troller. One such device is the Intel 82385 cache controller
`designed for use with the 80386 processor. The cache
`controller also determines whether the requested data or
`code is resident in cache or whether it is necessary to retrieve
`it for the processor from main memory. The cache controller
`therefore interfaces between the processor and the cache
`memory and the main memory via one or more system
`
`Petitioners Microsoft Corporation and HP Inc. - Ex. 1039, p. 9
`
`
`
`5,465,360
`
`4
`shown in FIGS. 1 and 2; and
`FIG. 4 is a schematic diagram of one portion of the reset
`control circuit which forms a part of the system shown in
`FIGS. 1 and 2.
`FIG. 5 is a schematic diagram of a second portion of the
`reset control circuitry which forms a part of the system
`shown in FIGS. 1 and 2.
`FIG. 6 is a schematic block diagram illustrating a portion
`of the system shown in FIGS. 1 and 2.
`
`DETAILED DESCRIPTION OF THE
`PREFERRED EMBODIMENT
`
`3
`latch the 80386 reset values to the system bus interface by
`emitting a pulsed output signal on its address clock pulse
`(BACP) output pin. This results in the 82385 trying to
`acquire control of the system bus. In situations where the
`reset is a software reset intended only to reset one processor, 5
`as distinguished from a power up, hardware system reset, the
`prior art provided no simple and efficient way to avoid bus
`contention by the 82385 controllers which tried to acquire
`the bus while one of the non-reset processors was operating.
`In multiprocessor systems, it is desirable to independently
`reset each processor. The prior art provides no suitable
`mechanism to meet this need.
`The present invention addresses these shortcomings of
`prior art systems and provides a system wherein each
`processor may be reset independently under program control 15
`after system initialization. The present invention also pro(cid:173)
`vides a system for resetting each processor independently
`without introducing cache memory incoherency. A cache
`memory incoherency may occur when more than one device
`has access to common memory space. In such situations, one 20
`device may make an alteration to data in memory which is
`not also made to the duplicated data in the cache memory.
`
`10
`
`SUMMARY OF THE INVENTION
`
`Referring now to FIGS. 1 and 2, the letter C designates
`generally a computer system incorporating the present
`invention. For clarity, system C is shown in two portions,
`with the interconnections between FIGS. 1 and 2 designated
`by reference to the circled numbers one to ten. System C is
`comprised of a number of block clements interconnected via
`three busses. Throughout this specification in signal mncu-
`monics an asterisk following the signal descriptors indicates
`the signal is active at a logic low level.
`In FIG. 1, a dual processor cache memory computer
`25 system is depicted. A primary processing unit Pl comprises
`a processor 20, a numerical coprocessor 22 and a cache
`memory controller 24 and associated logic circuits con(cid:173)
`nected to a processor bus 26. Associated with cache con(cid:173)
`troller 24 is a high speed cache data random access memory
`30 28, cache memory map programmable logic circuit 30,
`non-cacheable cache memory map logic circuit 32, address
`exchange latch circuit 34 and data exchange transceiver 36.
`Associated with Pl also are local bus ready logic circuit 38,
`next address enable logic circuit 40 and bus request logic
`35 circuit 42.
`Processor 20 is preferably an Intel 80386 microprocessor.
`Processor 20 has its control, address and data lines inter(cid:173)
`faced to processor bus 26. Coprocessor 22 is preferably an
`Intel 80387 numeric coprocessor interfacing with processor
`bus 26 and processor 20 in the conventional manner. Cache
`ram 28 is preferably a suitable high-speed static random
`access memory circuit which interfaces with the address and
`data elements of bus 26 under control of cache controller 24
`to carry out required cache memory operations. Controller
`24 is preferably an Intel 82385 cache controller configured
`to operate in two-way set associative master mode. Address
`latch 34 and data transceiver 36 interface the cache control(cid:173)
`ler 24 with processor 20 and provide a local bus interface
`between processor bus 26 and a host bus 44.
`Circuit 38 is a logic circuit which provides a bus ready
`signal to control access to bus 26 and validate address
`information. Enable circuit 40 is utilized by processor 20 to
`enable the next address of data or code to be utilized by
`sub-system elements in pipelined address mode.
`Circuit 30 is a programmable logic circuit which is
`utilized by cache controller 24 to map data locations in cache
`ram 28. Non-cacheable map circuit 32 is utilized by pro(cid:173)
`cessor 20 to designate areas of cache ram that are non-
`60 cacheable to avoid any cache memory incoherency for data
`or code at specified main memory locations. Bus request
`logic circuit 42 is utilized by processor 20 and associated
`elements to request access to the system bus 46 in situations
`such as when requested data is not located in cache memory
`65 28 and access to system main memory is required. (FIG. 2).
`In the drawings, system C is configured having the
`processor bus 26, host bus 44 and extended industry stan-
`
`The present invention provides a system of independently
`res~tting processors in a multiprocessor cache memory
`environment. On power up, a hardware reset, all processors
`and cache memory devices are reset to initialization values.
`The cache controllers are reset only on hardware reset, and
`placed in a hold state after the processor reset signals are
`released. Since power up resets of the processors and cache
`controllers are synchronized, no bus contention results. After
`hardware reset, when the secondary processors acknowledge
`a hold request, the primary processor is given access to the
`common processor or host bus until system protocol deter(cid:173)
`mines one of the other processors or system elements, such
`as the extended industry standard (EISA) bus in EISA
`systems, requires the bus.
`Software or programmed resets cause only the selected 40
`processor(s) and not the cache controllers to be reset.
`Programmed resets are synchronized to hold acknowledge
`signals from the processors so that resets do not occur during
`program execution by one or more processors thereby
`avoiding any cache memory incoherency. The primary pro- 45
`cessor can be reset under program control consistent with
`existing software convention without effecting the operation
`of the cache controllers or the secondary processors. The
`primary processor may also be independently reset in
`response to a keyboard initiated instruction. The secondary 50
`processors can be program reset by setting a reset bit located
`in a designated secondary processor control register addres(cid:173)
`sable under program control, or via the user interface
`keyboard, or by the primary processor. All processors are
`reset in response to system shutdown signals.
`
`55
`
`BRIEF DESCRIPTION OF THE DRAWINGS
`
`A better understanding of the present invention can be
`obtained when the following detailed description of the
`preferred embodiment is considered in conjunction with the
`following drawings, in which:
`FIG. 1 is a schematic block diagram of a portion of a
`computer system incorporating the present invention;
`FIG. 2 is a schematic block diagram of a portion of a
`computer system incorporating the present invention;
`FIG. 3 is a schematic diagram of one portion of the system
`
`Petitioners Microsoft Corporation and HP Inc. - Ex. 1039, p. 10
`
`
`
`5,465,360
`
`5
`dard bus 46. The details of the portion of the system
`illustrated in FIG. 2, and not discussed in detail below are
`not significant to the present invention other than to illustrate
`an example of a fully configured dual processor cache
`memory system. The EISA specification Version 3.1 is 5
`provided in U.S. Pat. No. 5,101,492 filed Sep. 3, 1989,
`issued Mar. 31,, 1992, and entitled "Data Redundancy and
`Recovery Protection" by Schultz, et al., and fully explains
`the requirements of an EISA systems and is hereby incor(cid:173)
`porated by reference. The portion of system C illustrated in 10
`FIG. 2 is essentially a conventionally configured EISA
`system which includes the necessary bus 46, EISA bus
`controller 48, data transceiver 50 and address latch 52 to
`interface between bus 46 and host bus 44. Also illustrated in
`FIG. 2 is an integrated system peripheral 54, such as the Intel 15
`82380 DMA controller and integrated system support
`peripherals.
`Circuit 54 includes a direct memory access controller 56
`for controlling direct access to main memory 58 (FIG. 1) by
`system elements via bus 44. Memory array 58 comprises a 20
`memory circuit array of size suitable to accommodate the
`particular requirements of the system. Circuit 54 also
`includes interrupt controllers 70, non-maskable interrupt
`logic 72 and system timers 73 which allow control of
`interrupt signals and generate necessary timing signals and 25
`wait states in a conventional manner. In the preferred
`embodiment, processor generated interrupt requests are con(cid:173)
`trolled via dual interrupt control circuits emulating Intel
`8259 interrupt controllers resident in system integrated
`peripheral circuit 54. Circuit 54 also includes DMA arbitra- 30
`tion logic 76 which controls and arbitrates among system
`DMA requests.
`Memory array 58 (FIG. 1) is preferably dynamic random
`access memory. Memory 58 interfaces with bus 44 via data
`buffer circuit 60 and memory controller circuit 62 in a 35
`conventional manner. Buffer 60 performs data transceiving
`and parity checking functions. Controller 62 interfaces with
`memory 58 via an address multiplexer circuit which
`includes row address enable logic circuit 64 and column
`address circuit 66 in a conventional manner.
`Arbitration for busses .44 and 46 is controlled by arbi(cid:173)
`tration logic circuit 74.
`Bus 46 includes ISA and EISA control elements 75 and
`78 ISA and EISA data elements 80 and 82 and address
`el:ments 84, 86 and 88 in a standard EISA configuration. 45
`System peripherals are interfaced via X bus 90 in combi(cid:173)
`nation with the control element 75 from bus 46. Control and
`data/address transfer for X bus 90 are facilitated by X-bus
`control logic 92, data transceiver 94 and address latch 96.
`Attached to X bus 90 are various peripheral devices such
`as keyboard/mouse controller 98 which interfaces bus 90
`with a suitable keyboard and mouse via connectors 100 and
`102, respectively. Also attached to X bus 90 are real time
`clock circuit 104 and a read only memory circuit 106 which 55
`contains basic operations software for the system C and for
`system graphics. A serial communications port 108 is also
`connected to the system C via X-bus 90.
`External memory and control interface, parallel printer
`and communications ports, and video support circuits are 60
`provided in block circuit 110 in a conventional manner.
`Referring now back to FIG. 1, a secondary processor P2
`is illustrated. Processor P2 is a duplicate of processor Pl and
`consequently it is not necessary to describe the individual
`elements in detail. Elements of P2 are the same as corre- 65
`sponding elements of Pl and have been numbered so that
`elements of P2 bear numbers 120, 122, 124 etc. correspond-
`
`50
`
`6
`ing to elements 20, 22 and 24 in processor Pl.
`Arbitration logic circuit 74 arbitrates requests for access
`to host bus 44 among Pl, P2 and the EISA DMA controller.
`If one processor requires the host bus and the other processor
`has the host bus, but is inactive, arbitrater circuit 74 requests
`the inactive processor to relinquish the bus by asserting an
`active signal on the processor's HOLD input line. When the
`inactive processor asserts a HOLD ACKNOWLEDGE
`(HLDA) response, control of the host bus is granted to the
`requesting processor by deasserting its HOLD line. If one
`processor requests the host bus while it is controlled by the
`EISA bus master, a CPUMISS* signal is asserted to arbi(cid:173)
`trator 76 in ISP circuit 54. The EISA bus master maintains
`control until the ISP arbitrator deasserts its H HOLD signal
`whereupon arbitration circuit 74 deasserts its processor H
`HOLD signal and the requesting processors HOLD line. If
`both processors are requesting control of the bus and pri(cid:173)
`mary processor Pl is not asserting an interrupt, the processor
`least-recently on the bus is granted control. If both proces(cid:173)
`sors are requesting control and Pl is asserting an interrupt,
`Pl is granted control. If either processor .has control of host
`bus 44, it maintains control until a request from the other
`processor or the EISA bus 46 is received.
`Control of the host bus 44 by either processor Pl or P2 is
`protected from interruption by EISA bus controller 48 by an
`EISA arbitration inhibit timer resident in arbitration circuit
`74. When control of host bus 44 is transferred to either
`processor Pl or P2, the timer is started and remains active
`for a period of time as specified in a read/write, input/output
`arbitration register to accommodate processor operation. As
`long as the timer is active, the processor with control of the
`host bus 44 will not be interrupted by a H HOLD from the
`EISA controller or the other processor's bus request; pro-
`cessor P2 can still be interrupted by processor Pl if proces(cid:173)
`sor Pl is asserting its interrupt request.
`The period of the inhibit timer is set by multiplying the
`basic clock period of processor Pl by two and by the value
`set in the arbitration register under program control. At reset,
`the arbitration value is zero (no arbitration inhibit) and is
`.
`subsequently adjusted depending upon program reqmre-
`ments.
`EISA bus 46 requires access to host bus 44 during direct
`memory access operation and EISA bus master cycles. The
`EISA bus controller 48 initiates a request for access to host
`bus 44 by asserting a H HOLD signal to arbitration circuit
`74. If the EISA inhibit timer is not active, or when the
`processor which controls the bus deasserts its bus request,
`arbitration circuit 74 requests the bus by asserting its HOLD
`line to the controlling processor. When the controlling
`processor asserts its HOLD ACKNOWLEDGE signal,
`access to the host bus 44 is granted to the EISA bus 46 by
`the arbitration circuit asserting an active HHLDA acknowl(cid:173)
`edge signal. Control by EISA bus 46 is thereafter maintained
`until H HOLD is deasserted. The H HOLD signal is syn(cid:173)
`chronized to CLKl * (Pl primary clock signal, negative
`component). HHLDA is synchronized to CLKl * before
`being asserted.
`In the drawings, logic circuit 150 designates generally
`processor control and communication application specific
`integrated circuit which includes logic circuits necessary to
`generate a variety of interprocessor control and communi(cid:173)
`cations signals. Circuit 150 includes circuitry to accomplish
`processor reset requests and reset signal generation for the
`primary and secondary processors. Circuit 150 also includes
`a communication Input/Output register for facilitating inter(cid:173)
`processor communications and processor control. In the
`
`~
`
`Petitioners Microsoft Corporation and HP Inc. - Ex. 1039, p. 11
`
`
`
`7
`preferred embodiment an eight-bit register is provided for
`each processor in the system. These registers are part of a
`processor control logic circuit for each processor. These
`registers can be either input/output or memory mapped and
`are decoded from four pseudo address lines designated 5
`PRS3 to PRS0.
`While circuit 150 is illustrated as a single block, it should
`be understood that functions performed in this logic circuit
`as well as other logic circuits described generally herein can
`be distributed to other single purpose or multipurpose inte-
`grated circuits without departing from the present invention.
`The distribution oflogic functions to one or more integrated
`circuits is largely a matter of design choice within the
`ordinary skill in the art. In the preferred embodiment, the
`functions described herein as within circuit 150 are physi(cid:173)
`cally located in portions of two separately packaged gate(cid:173)
`arrays which integrate a number of system control and
`cominunications functions. These two gate-arrays also inte(cid:173)
`grate a number of other functions for the system C shown
`herein as separate schematic blocks.
`
`15
`
`RESET AND PROGRAMMABLE RESET
`(RESTART)
`Referring now to FIG. 3, a schematic block diagram of a 25
`portion of logic circuit 150 is illustrated. This portion of
`circuit 150 includes a bus interface 160, an address decode
`circuit 162, processor control logic register sele