Disk drives comprise a disk and a head connected to a distal end of an actuator arm which is rotated about a pivot by a voice coil motor (VCM) to position the head radially over the disk. The disk comprises a plurality of radially spaced, concentric tracks for recording user data sectors and servo sectors. The servo sectors comprise head positioning information (e.g., a track address) which is read by the head and processed by a servo control system to control the actuator arm as it seeks from track to track.
Multiple access commands may be received from the host while the disk drive is executing a current access command. The access commands are typically buffered in a command queue, and when the disk drive is finished executing the current command, a next command is selected from the command queue according to a rotational position optimization (RPO) algorithm. The RPO algorithm attempts to select the next command that will minimize the mechanical latency in accessing the disk, including the seek time required to move the head to the target track and the rotational time for the head to reach the target data sector.
The seek time is typically estimated for a given seek length (the number of tracks the head must traverse to arrive at the target track), where the seek time is typically related to the performance capabilities of the VCM as well as the parameters selected for the servo system to perform the seek, such as the selected velocity trajectory. Since the performance capability of the VCM is typically not a linear function of seek distance, and since the servo parameters may change based on the seek distance, the relationship between the seek length and seek time is also typically not linear across the radius of the disk. This is illustrated in
In the embodiment of
In one embodiment, the capacity of the disk drive is reduced by limiting the maximum stroke of the actuator arm 44, thereby limiting the maximum radial movement of the head 16 over the disk 18. That is, the data tracks defined outside of the maximum radial movement of the head 16 are not accessed, thereby reducing the capacity of the disk drive. The maximum radial movement of the head may be limited in any suitable manner, such as by defining an inaccessible band of data tracks at the outer diameter of the disk 18, or at the inner diameter of the disk 18, or both. Limiting the maximum radial movement of the head also limits the maximum seek length, which increases the performance relative to a full stroke disk drive.
In one embodiment, it may be desirable for a limited stroke disk drive to exhibit performance similar to a full stroke disk drive. In this manner a disk drive manufacturer may offer disk drives of varying capacity having similar performance characteristics in terms of throughput. In one embodiment, the performance of a limited stroke disk drive is reduced relative to a full stroke disk drive by adding access latency to each access command prior to executing the RPO algorithm.
An RPO algorithm selects a next access command from the command queue to execute based on an access latency determined from a seek latency for the head to reach a target data track and a rotational latency for the disk to rotate to the target data sector. Increasing the access latency for each access command in the command queue reduces the performance of a limited stroke disk drive by changing the execution order of the access commands as determined by the RPO algorithm.
The access latency for each access command in the command queue may be increased in any suitable manner. In one embodiment, the access latency is increased without increasing either the seek latency of the head or the rotational latency of the disk. That is, the access latency is increased only with respect to the RPO algorithm, whereas the actual access latency remains the same since the seek and rotational latencies are unchanged. When the RPO algorithm processes the virtually increased access latencies, the order of execution changes which detunes the performance, even though the potential performance remains higher.
In an alternative embodiment, the access latency may be increased by increasing at least one of the seek latency of the head and the rotational latency of the disk. For example, the seek latency of the head may be increased by modifying a seek profile, such as by decreasing one or more of an acceleration trajectory, a constant velocity phase trajectory, or a deceleration phase trajectory. In addition (or alternatively), the rotational latency can be increased by decreasing the spin rate of the disk. Accordingly in this embodiment the actual access latency is increased for each access command in the command queue such that the order of access commands selected by the RPO algorithm is truly optimal. The execution order of the access commands as determined by the RPO algorithm will be the same regardless as to whether the access latency is increased virtually or actually.
In one embodiment, the access latency of each access command is increased by adding an offset that is computed as a non-linear function of the seek length for each access command so that the two plots shown in
where N is a value that defines a minimum for the offset, distance_delta represents the difference between the seek length of an access command and the first seek length 46, and C is a scalar. Adding a fraction of C (e.g., C/2) as the offset for the seek latencies up to the first seek length 46, and then adding an offset computed using the above equation causes the two plots shown in
Any suitable control circuitry may be employed to implement the flow diagrams in the embodiments of the present invention, such as any suitable integrated circuit or circuits. For example, the control circuitry may be implemented within a read channel integrated circuit, or in a component separate from the read channel, such as a disk controller, or certain operations described above may be performed by a read channel and others by a disk controller. In one embodiment, the read channel and disk controller are implemented as separate integrated circuits, and in an alternative embodiment they are fabricated into a single integrated circuit or system on a chip (SOC). In addition, the control circuitry may include a suitable preamp circuit implemented as a separate integrated circuit, integrated into the read channel or disk controller circuit, or integrated into a SOC.
In one embodiment, the control circuitry comprises a microprocessor executing instructions, the instructions being operable to cause the microprocessor to perform the flow diagrams described herein. The instructions may be stored in any computer-readable medium. In one embodiment, they may be stored on a non-volatile semiconductor memory external to the microprocessor, or integrated with the microprocessor in a SOC. In another embodiment, the instructions are stored on the disk and read into a volatile semiconductor memory when the disk drive is powered on. In yet another embodiment, the control circuitry comprises suitable logic circuitry, such as state machine circuitry.
Number | Name | Date | Kind |
---|---|---|---|
5371888 | Lehnertz et al. | Dec 1994 | A |
5880902 | Yu et al. | Mar 1999 | A |
6014283 | Codilian et al. | Jan 2000 | A |
6052076 | Patton, III et al. | Apr 2000 | A |
6052250 | Golowka et al. | Apr 2000 | A |
6067206 | Hull et al. | May 2000 | A |
6078453 | Dziallo et al. | Jun 2000 | A |
6091564 | Codilian et al. | Jul 2000 | A |
6094020 | Goretzki et al. | Jul 2000 | A |
6101065 | Alfred et al. | Aug 2000 | A |
6104153 | Codilian et al. | Aug 2000 | A |
6122133 | Nazarian et al. | Sep 2000 | A |
6122135 | Stich | Sep 2000 | A |
6141175 | Nazarian et al. | Oct 2000 | A |
6160368 | Plutowski | Dec 2000 | A |
6181502 | Hussein et al. | Jan 2001 | B1 |
6195222 | Heminger et al. | Feb 2001 | B1 |
6198584 | Codilian et al. | Mar 2001 | B1 |
6198590 | Codilian et al. | Mar 2001 | B1 |
6204988 | Codilian et al. | Mar 2001 | B1 |
6243223 | Elliott et al. | Jun 2001 | B1 |
6281652 | Ryan et al. | Aug 2001 | B1 |
6285521 | Hussein | Sep 2001 | B1 |
6292320 | Mason et al. | Sep 2001 | B1 |
6310742 | Nazarian et al. | Oct 2001 | B1 |
6320714 | Moon et al. | Nov 2001 | B1 |
6320718 | Bouwkamp et al. | Nov 2001 | B1 |
6342984 | Hussein et al. | Jan 2002 | B1 |
6347018 | Kadlec et al. | Feb 2002 | B1 |
6369972 | Codilian et al. | Apr 2002 | B1 |
6369974 | Asgari et al. | Apr 2002 | B1 |
6373649 | Walker et al. | Apr 2002 | B1 |
6446156 | Chia et al. | Sep 2002 | B1 |
6462896 | Codilian et al. | Oct 2002 | B1 |
6476996 | Ryan | Nov 2002 | B1 |
6484577 | Bennett | Nov 2002 | B1 |
6493169 | Ferris et al. | Dec 2002 | B1 |
6496324 | Golowka et al. | Dec 2002 | B1 |
6498698 | Golowka et al. | Dec 2002 | B1 |
6499022 | Dittmar et al. | Dec 2002 | B1 |
6507450 | Elliott | Jan 2003 | B1 |
6534936 | Messenger et al. | Mar 2003 | B2 |
6538839 | Ryan | Mar 2003 | B1 |
6545835 | Codilian et al. | Apr 2003 | B1 |
6549359 | Bennett et al. | Apr 2003 | B1 |
6549361 | Bennett et al. | Apr 2003 | B1 |
6560056 | Ryan | May 2003 | B1 |
6568268 | Bennett | May 2003 | B1 |
6574062 | Bennett et al. | Jun 2003 | B1 |
6577465 | Bennett et al. | Jun 2003 | B1 |
6578107 | Anderson et al. | Jun 2003 | B1 |
6614615 | Ju et al. | Sep 2003 | B1 |
6614618 | Sheh et al. | Sep 2003 | B1 |
6636377 | Yu et al. | Oct 2003 | B1 |
6690536 | Ryan | Feb 2004 | B1 |
6693764 | Sheh et al. | Feb 2004 | B1 |
6707635 | Codilian et al. | Mar 2004 | B1 |
6710953 | Vallis et al. | Mar 2004 | B1 |
6710966 | Codilian et al. | Mar 2004 | B1 |
6714371 | Codilian | Mar 2004 | B1 |
6714372 | Codilian et al. | Mar 2004 | B1 |
6724564 | Codilian et al. | Apr 2004 | B1 |
6731450 | Codilian et al. | May 2004 | B1 |
6735041 | Codilian et al. | May 2004 | B1 |
6738220 | Codilian | May 2004 | B1 |
6747837 | Bennett | Jun 2004 | B1 |
6754036 | Dehnert | Jun 2004 | B2 |
6760186 | Codilian et al. | Jul 2004 | B1 |
6788483 | Ferris et al. | Sep 2004 | B1 |
6791785 | Messenger et al. | Sep 2004 | B1 |
6795268 | Ryan | Sep 2004 | B1 |
6819518 | Melkote et al. | Nov 2004 | B1 |
6826006 | Melkote et al. | Nov 2004 | B1 |
6826007 | Patton, III | Nov 2004 | B1 |
6847502 | Codilian | Jan 2005 | B1 |
6850383 | Bennett | Feb 2005 | B1 |
6850384 | Bennett | Feb 2005 | B1 |
6867944 | Ryan | Mar 2005 | B1 |
6876508 | Patton, III et al. | Apr 2005 | B1 |
6882496 | Codilian et al. | Apr 2005 | B1 |
6885514 | Codilian et al. | Apr 2005 | B1 |
6894863 | Arakawa et al. | May 2005 | B2 |
6900958 | Yi et al. | May 2005 | B1 |
6900959 | Gardner et al. | May 2005 | B1 |
6903897 | Wang et al. | Jun 2005 | B1 |
6914740 | Tu et al. | Jul 2005 | B1 |
6914743 | Narayana et al. | Jul 2005 | B1 |
6920004 | Codilian et al. | Jul 2005 | B1 |
6924959 | Melkote et al. | Aug 2005 | B1 |
6924960 | Melkote et al. | Aug 2005 | B1 |
6924961 | Melkote et al. | Aug 2005 | B1 |
6934114 | Codilian et al. | Aug 2005 | B1 |
6934135 | Ryan | Aug 2005 | B1 |
6937420 | McNab et al. | Aug 2005 | B1 |
6937423 | Ngo et al. | Aug 2005 | B1 |
6952322 | Codilian et al. | Oct 2005 | B1 |
6954324 | Tu et al. | Oct 2005 | B1 |
6958881 | Codilian et al. | Oct 2005 | B1 |
6963465 | Melkote et al. | Nov 2005 | B1 |
6965488 | Bennett | Nov 2005 | B1 |
6967458 | Bennett et al. | Nov 2005 | B1 |
6967811 | Codilian et al. | Nov 2005 | B1 |
6970319 | Bennett et al. | Nov 2005 | B1 |
6972539 | Codilian et al. | Dec 2005 | B1 |
6972540 | Wang et al. | Dec 2005 | B1 |
6972922 | Subrahmanyam et al. | Dec 2005 | B1 |
6975480 | Codilian et al. | Dec 2005 | B1 |
6977789 | Cloke | Dec 2005 | B1 |
6980389 | Kupferman | Dec 2005 | B1 |
6987636 | Chue et al. | Jan 2006 | B1 |
6987639 | Yu | Jan 2006 | B1 |
6989954 | Lee et al. | Jan 2006 | B1 |
6992848 | Agarwal et al. | Jan 2006 | B1 |
6992851 | Cloke | Jan 2006 | B1 |
6992852 | Ying et al. | Jan 2006 | B1 |
6995941 | Miyamura et al. | Feb 2006 | B1 |
6999263 | Melkote et al. | Feb 2006 | B1 |
6999267 | Melkote et al. | Feb 2006 | B1 |
7006320 | Bennett et al. | Feb 2006 | B1 |
7016134 | Agarwal et al. | Mar 2006 | B1 |
7023637 | Kupferman | Apr 2006 | B1 |
7023640 | Codilian et al. | Apr 2006 | B1 |
7027256 | Subrahmanyam et al. | Apr 2006 | B1 |
7027257 | Kupferman | Apr 2006 | B1 |
7035026 | Codilian et al. | Apr 2006 | B2 |
7043567 | Trantham | May 2006 | B2 |
7046472 | Melkote et al. | May 2006 | B1 |
7050249 | Chue et al. | May 2006 | B1 |
7050254 | Yu et al. | May 2006 | B1 |
7050258 | Codilian | May 2006 | B1 |
7054098 | Yu et al. | May 2006 | B1 |
7061714 | Yu | Jun 2006 | B1 |
7064918 | Codilian et al. | Jun 2006 | B1 |
7068451 | Wang et al. | Jun 2006 | B1 |
7068459 | Cloke et al. | Jun 2006 | B1 |
7068461 | Chue et al. | Jun 2006 | B1 |
7068463 | Ji et al. | Jun 2006 | B1 |
7084894 | Van Brocklin et al. | Aug 2006 | B2 |
7088547 | Wang et al. | Aug 2006 | B1 |
7095579 | Ryan et al. | Aug 2006 | B1 |
7110208 | Miyamura et al. | Sep 2006 | B1 |
7110214 | Tu et al. | Sep 2006 | B1 |
7113362 | Lee et al. | Sep 2006 | B1 |
7113365 | Ryan et al. | Sep 2006 | B1 |
7116505 | Kupferman | Oct 2006 | B1 |
7126781 | Bennett | Oct 2006 | B1 |
7158329 | Ryan | Jan 2007 | B1 |
7180703 | Subrahmanyam et al. | Feb 2007 | B1 |
7184230 | Chue et al. | Feb 2007 | B1 |
7196864 | Yi et al. | Mar 2007 | B1 |
7199966 | Tu et al. | Apr 2007 | B1 |
7203021 | Ryan et al. | Apr 2007 | B1 |
7209321 | Bennett | Apr 2007 | B1 |
7212364 | Lee | May 2007 | B1 |
7212374 | Wang et al | May 2007 | B1 |
7215504 | Bennett | May 2007 | B1 |
7224546 | Orakcilar et al. | May 2007 | B1 |
7248426 | Weerasooriya et al. | Jul 2007 | B1 |
7251098 | Wang et al. | Jul 2007 | B1 |
7253582 | Ding et al. | Aug 2007 | B1 |
7253989 | Lau et al. | Aug 2007 | B1 |
7265933 | Phan et al. | Sep 2007 | B1 |
7289288 | Tu | Oct 2007 | B1 |
7298574 | Melkote et al. | Nov 2007 | B1 |
7301717 | Lee et al. | Nov 2007 | B1 |
7304819 | Melkote et al. | Dec 2007 | B1 |
7330019 | Bennett et al. | Feb 2008 | B1 |
7330327 | Chue et al. | Feb 2008 | B1 |
7333280 | Lifchits et al. | Feb 2008 | B1 |
7333290 | Kupferman | Feb 2008 | B1 |
7339761 | Tu et al. | Mar 2008 | B1 |
7365932 | Bennett | Apr 2008 | B1 |
7388728 | Chen et al. | Jun 2008 | B1 |
7391583 | Sheh et al. | Jun 2008 | B1 |
7391584 | Sheh et al. | Jun 2008 | B1 |
7433143 | Ying et al. | Oct 2008 | B1 |
7440210 | Lee | Oct 2008 | B1 |
7440225 | Chen et al. | Oct 2008 | B1 |
7450334 | Wang et al. | Nov 2008 | B1 |
7450336 | Wang et al. | Nov 2008 | B1 |
7453661 | Jang et al. | Nov 2008 | B1 |
7457071 | Sheh | Nov 2008 | B1 |
7466509 | Chen et al. | Dec 2008 | B1 |
7468855 | Weerasooriya et al. | Dec 2008 | B1 |
7471486 | Coker et al. | Dec 2008 | B1 |
7477471 | Nemshick et al. | Jan 2009 | B1 |
7480116 | Bennett | Jan 2009 | B1 |
7489464 | McNab et al. | Feb 2009 | B1 |
7492546 | Miyamura | Feb 2009 | B1 |
7495857 | Bennett | Feb 2009 | B1 |
7499236 | Lee et al. | Mar 2009 | B1 |
7502192 | Wang et al. | Mar 2009 | B1 |
7502195 | Wu et al. | Mar 2009 | B1 |
7502197 | Chue | Mar 2009 | B1 |
7505223 | McCornack | Mar 2009 | B1 |
7542225 | Ding et al. | Jun 2009 | B1 |
7548392 | Desai et al. | Jun 2009 | B1 |
7551390 | Wang et al. | Jun 2009 | B1 |
7558016 | Le et al. | Jul 2009 | B1 |
7573670 | Ryan et al. | Aug 2009 | B1 |
7576941 | Chen et al. | Aug 2009 | B1 |
7580212 | Li et al. | Aug 2009 | B1 |
7583470 | Chen et al. | Sep 2009 | B1 |
7595954 | Chen et al. | Sep 2009 | B1 |
7602575 | Lifchits et al. | Oct 2009 | B1 |
7616399 | Chen et al. | Nov 2009 | B1 |
7619844 | Bennett | Nov 2009 | B1 |
7626782 | Yu et al. | Dec 2009 | B1 |
7630162 | Zhao et al. | Dec 2009 | B2 |
7639447 | Yu et al. | Dec 2009 | B1 |
7656604 | Liang et al. | Feb 2010 | B1 |
7656607 | Bennett | Feb 2010 | B1 |
7660067 | Ji et al. | Feb 2010 | B1 |
7663835 | Yu et al. | Feb 2010 | B1 |
7675707 | Liu et al. | Mar 2010 | B1 |
7679854 | Narayana et al. | Mar 2010 | B1 |
7688534 | McCornack | Mar 2010 | B1 |
7688538 | Chen et al. | Mar 2010 | B1 |
7688539 | Bryant et al. | Mar 2010 | B1 |
7697233 | Bennett et al. | Apr 2010 | B1 |
7701661 | Bennett | Apr 2010 | B1 |
7710676 | Chue | May 2010 | B1 |
7715138 | Kupferman | May 2010 | B1 |
7729079 | Huber | Jun 2010 | B1 |
7733189 | Bennett | Jun 2010 | B1 |
7746592 | Liang et al. | Jun 2010 | B1 |
7746594 | Guo et al. | Jun 2010 | B1 |
7746595 | Guo et al. | Jun 2010 | B1 |
7760461 | Bennett | Jul 2010 | B1 |
7800853 | Guo et al. | Sep 2010 | B1 |
7800856 | Bennett et al. | Sep 2010 | B1 |
7800857 | Calaway et al. | Sep 2010 | B1 |
7839591 | Weerasooriya et al. | Nov 2010 | B1 |
7839595 | Chue et al. | Nov 2010 | B1 |
7839600 | Babinski et al. | Nov 2010 | B1 |
7843662 | Weerasooriya et al. | Nov 2010 | B1 |
7852588 | Ferris et al. | Dec 2010 | B1 |
7852592 | Liang et al. | Dec 2010 | B1 |
7864481 | Kon et al. | Jan 2011 | B1 |
7864482 | Babinski et al. | Jan 2011 | B1 |
7869155 | Wong | Jan 2011 | B1 |
7876522 | Calaway et al. | Jan 2011 | B1 |
7876523 | Panyavoravaj et al. | Jan 2011 | B1 |
7916415 | Chue | Mar 2011 | B1 |
7916416 | Guo et al. | Mar 2011 | B1 |
7916420 | McFadyen et al. | Mar 2011 | B1 |
7916422 | Guo et al. | Mar 2011 | B1 |
7929238 | Vasquez | Apr 2011 | B1 |
7961422 | Chen et al. | Jun 2011 | B1 |
8000053 | Anderson | Aug 2011 | B1 |
8031423 | Tsai et al. | Oct 2011 | B1 |
8054022 | Ryan et al. | Nov 2011 | B1 |
8059357 | Knigge et al. | Nov 2011 | B1 |
8059360 | Melkote et al. | Nov 2011 | B1 |
8072703 | Calaway et al. | Dec 2011 | B1 |
8077428 | Chen et al. | Dec 2011 | B1 |
8078901 | Meyer et al. | Dec 2011 | B1 |
8081395 | Ferris | Dec 2011 | B1 |
8085020 | Bennett | Dec 2011 | B1 |
8116023 | Kupferman | Feb 2012 | B1 |
8145934 | Ferris et al. | Mar 2012 | B1 |
8179626 | Ryan et al. | May 2012 | B1 |
8189286 | Chen et al. | May 2012 | B1 |
8213106 | Guo et al. | Jul 2012 | B1 |
8254222 | Tang | Aug 2012 | B1 |
8300348 | Liu et al. | Oct 2012 | B1 |
8315005 | Zou et al. | Nov 2012 | B1 |
8320069 | Knigge et al. | Nov 2012 | B1 |
8351174 | Gardner et al. | Jan 2013 | B1 |
8358114 | Ferris et al. | Jan 2013 | B1 |
8358145 | Ferris et al. | Jan 2013 | B1 |
8364992 | Guthrie et al. | Jan 2013 | B2 |
8390367 | Bennett | Mar 2013 | B1 |
8432031 | Agness et al. | Apr 2013 | B1 |
8432629 | Rigney et al. | Apr 2013 | B1 |
8451697 | Rigney et al. | May 2013 | B1 |
8482873 | Chue et al. | Jul 2013 | B1 |
8498076 | Sheh et al. | Jul 2013 | B1 |
8498172 | Patton, III et al. | Jul 2013 | B1 |
8508881 | Babinski et al. | Aug 2013 | B1 |
8531798 | Xi et al. | Sep 2013 | B1 |
8537486 | Liang et al. | Sep 2013 | B2 |
8542455 | Huang et al. | Sep 2013 | B2 |
8553351 | Narayana et al. | Oct 2013 | B1 |
8564899 | Lou et al. | Oct 2013 | B2 |
8576506 | Wang et al. | Nov 2013 | B1 |
8605382 | Mallary et al. | Dec 2013 | B1 |
8605384 | Liu et al. | Dec 2013 | B1 |
8610391 | Yang et al. | Dec 2013 | B1 |
8611040 | Xi et al. | Dec 2013 | B1 |
8619385 | Guo et al. | Dec 2013 | B1 |
8630054 | Bennett et al. | Jan 2014 | B2 |
8630059 | Chen et al. | Jan 2014 | B1 |
8634154 | Rigney et al. | Jan 2014 | B1 |
8634283 | Rigney et al. | Jan 2014 | B1 |
8643976 | Wang et al. | Feb 2014 | B1 |
8649121 | Smith et al. | Feb 2014 | B1 |
8654466 | McFadyen | Feb 2014 | B1 |
8654467 | Wong et al. | Feb 2014 | B1 |
8665546 | Zhao et al. | Mar 2014 | B1 |
8665551 | Rigney et al. | Mar 2014 | B1 |
8670206 | Liang et al. | Mar 2014 | B1 |
8687312 | Liang | Apr 2014 | B1 |
8693123 | Guo et al. | Apr 2014 | B1 |
8693134 | Xi et al. | Apr 2014 | B1 |
8699173 | Kang et al. | Apr 2014 | B1 |
8711027 | Bennett | Apr 2014 | B1 |
8717696 | Ryan et al. | May 2014 | B1 |
8717699 | Ferris | May 2014 | B1 |
8717704 | Yu et al. | May 2014 | B1 |
8724245 | Smith et al. | May 2014 | B1 |
8724253 | Liang et al. | May 2014 | B1 |
8724524 | Urabe et al. | May 2014 | B2 |
8737008 | Watanabe et al. | May 2014 | B1 |
8737013 | Zhou et al. | May 2014 | B2 |
8743495 | Chen et al. | Jun 2014 | B1 |
8743503 | Tang et al. | Jun 2014 | B1 |
8743504 | Bryant et al. | Jun 2014 | B1 |
8749904 | Liang et al. | Jun 2014 | B1 |
20100035085 | Jung et al. | Feb 2010 | A1 |
20100037223 | Yorimitsu | Feb 2010 | A1 |
20120042182 | Fulkerson et al. | Feb 2012 | A1 |
20120284493 | Lou et al. | Nov 2012 | A1 |
20130120870 | Zhou et al. | May 2013 | A1 |
20130148240 | Ferris et al. | Jun 2013 | A1 |
Entry |
---|
U.S. Appl. No. 13/433,856 dated Mar. 29, 2012 22 pages. |