KR20050012742A - 디지털 멀티 상태 상 변화 물질을 이용한 계산 방법 - Google Patents
디지털 멀티 상태 상 변화 물질을 이용한 계산 방법Info
- Publication number
- KR20050012742A KR20050012742A KR10-2004-7018175A KR20047018175A KR20050012742A KR 20050012742 A KR20050012742 A KR 20050012742A KR 20047018175 A KR20047018175 A KR 20047018175A KR 20050012742 A KR20050012742 A KR 20050012742A
- Authority
- KR
- South Korea
- Prior art keywords
- energy
- state
- programming
- phase change
- change material
- Prior art date
Links
- 239000012782 phase change material Substances 0.000 title claims abstract description 247
- 238000000034 method Methods 0.000 title claims description 310
- 238000004364 calculation method Methods 0.000 claims abstract description 80
- 230000015654 memory Effects 0.000 claims description 331
- 239000000463 material Substances 0.000 claims description 48
- 230000008859 change Effects 0.000 claims description 27
- 230000007704 transition Effects 0.000 claims description 27
- 238000003860 storage Methods 0.000 claims description 26
- 238000006243 chemical reaction Methods 0.000 claims description 13
- 239000000203 mixture Substances 0.000 claims description 11
- 229910052798 chalcogen Inorganic materials 0.000 claims description 7
- 150000001787 chalcogens Chemical class 0.000 claims description 7
- 229910052710 silicon Inorganic materials 0.000 claims description 7
- 238000011410 subtraction method Methods 0.000 claims description 7
- 230000001174 ascending effect Effects 0.000 claims description 5
- 229910052787 antimony Inorganic materials 0.000 claims description 4
- 229910052711 selenium Inorganic materials 0.000 claims description 4
- 229910052714 tellurium Inorganic materials 0.000 claims description 4
- 229910052785 arsenic Inorganic materials 0.000 claims description 3
- 229910052797 bismuth Inorganic materials 0.000 claims description 3
- 229910052760 oxygen Inorganic materials 0.000 claims description 3
- 229910052698 phosphorus Inorganic materials 0.000 claims description 3
- 229910052717 sulfur Inorganic materials 0.000 claims description 3
- 229910052718 tin Inorganic materials 0.000 claims description 3
- 229910052732 germanium Inorganic materials 0.000 claims description 2
- 229910052738 indium Inorganic materials 0.000 claims description 2
- 238000000638 solvent extraction Methods 0.000 claims description 2
- 239000000956 alloy Substances 0.000 claims 4
- 229910045601 alloy Inorganic materials 0.000 claims 4
- 229910052804 chromium Inorganic materials 0.000 claims 2
- 230000001747 exhibiting effect Effects 0.000 claims 2
- 229910052742 iron Inorganic materials 0.000 claims 2
- 229910052745 lead Inorganic materials 0.000 claims 2
- 229910052751 metal Inorganic materials 0.000 claims 2
- 239000002184 metal Substances 0.000 claims 2
- 229910052759 nickel Inorganic materials 0.000 claims 2
- 229910052758 niobium Inorganic materials 0.000 claims 2
- 229910052763 palladium Inorganic materials 0.000 claims 2
- 229910052697 platinum Inorganic materials 0.000 claims 2
- 229910052723 transition metal Inorganic materials 0.000 claims 2
- 150000003624 transition metals Chemical class 0.000 claims 2
- 230000003287 optical effect Effects 0.000 claims 1
- 230000003252 repetitive effect Effects 0.000 claims 1
- 230000000875 corresponding effect Effects 0.000 description 59
- 238000012545 processing Methods 0.000 description 55
- 238000007792 addition Methods 0.000 description 53
- 238000004422 calculation algorithm Methods 0.000 description 53
- 230000000295 complement effect Effects 0.000 description 43
- 230000008569 process Effects 0.000 description 39
- 238000012360 testing method Methods 0.000 description 28
- 230000006870 function Effects 0.000 description 13
- 238000011161 development Methods 0.000 description 12
- 230000018109 developmental process Effects 0.000 description 12
- 230000000694 effects Effects 0.000 description 12
- 230000008439 repair process Effects 0.000 description 12
- 238000000205 computational method Methods 0.000 description 8
- 238000013139 quantization Methods 0.000 description 8
- 238000013459 approach Methods 0.000 description 7
- 230000008901 benefit Effects 0.000 description 6
- XUIMIQQOPSSXEZ-UHFFFAOYSA-N Silicon Chemical compound [Si] XUIMIQQOPSSXEZ-UHFFFAOYSA-N 0.000 description 5
- 238000001514 detection method Methods 0.000 description 5
- 230000004044 response Effects 0.000 description 5
- 239000010703 silicon Substances 0.000 description 5
- 239000000126 substance Substances 0.000 description 5
- 230000009471 action Effects 0.000 description 4
- 238000013500 data storage Methods 0.000 description 4
- 238000005259 measurement Methods 0.000 description 4
- 230000015572 biosynthetic process Effects 0.000 description 3
- 238000000354 decomposition reaction Methods 0.000 description 3
- 230000007423 decrease Effects 0.000 description 3
- 238000013461 design Methods 0.000 description 3
- 230000003993 interaction Effects 0.000 description 3
- 238000001459 lithography Methods 0.000 description 3
- 238000004377 microelectronic Methods 0.000 description 3
- 230000000704 physical effect Effects 0.000 description 3
- 230000009467 reduction Effects 0.000 description 3
- 230000002441 reversible effect Effects 0.000 description 3
- 239000011232 storage material Substances 0.000 description 3
- 230000002596 correlated effect Effects 0.000 description 2
- 230000001186 cumulative effect Effects 0.000 description 2
- 230000003247 decreasing effect Effects 0.000 description 2
- 230000006872 improvement Effects 0.000 description 2
- 230000014759 maintenance of location Effects 0.000 description 2
- 238000004519 manufacturing process Methods 0.000 description 2
- 230000005055 memory storage Effects 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 208000003580 polydactyly Diseases 0.000 description 2
- 230000001105 regulatory effect Effects 0.000 description 2
- 239000011669 selenium Substances 0.000 description 2
- 230000001131 transforming effect Effects 0.000 description 2
- OAICVXFJPJFONN-UHFFFAOYSA-N Phosphorus Chemical compound [P] OAICVXFJPJFONN-UHFFFAOYSA-N 0.000 description 1
- BUGBHKTXTAQXES-UHFFFAOYSA-N Selenium Chemical compound [Se] BUGBHKTXTAQXES-UHFFFAOYSA-N 0.000 description 1
- NINIDFKCEFEMDL-UHFFFAOYSA-N Sulfur Chemical compound [S] NINIDFKCEFEMDL-UHFFFAOYSA-N 0.000 description 1
- ATJFFYVFTNAWJD-UHFFFAOYSA-N Tin Chemical compound [Sn] ATJFFYVFTNAWJD-UHFFFAOYSA-N 0.000 description 1
- 230000006978 adaptation Effects 0.000 description 1
- 230000003044 adaptive effect Effects 0.000 description 1
- WATWJIUSRGPENY-UHFFFAOYSA-N antimony atom Chemical compound [Sb] WATWJIUSRGPENY-UHFFFAOYSA-N 0.000 description 1
- RQNWIZPPADIBDY-UHFFFAOYSA-N arsenic atom Chemical compound [As] RQNWIZPPADIBDY-UHFFFAOYSA-N 0.000 description 1
- QVGXLLKOCUKJST-UHFFFAOYSA-N atomic oxygen Chemical compound [O] QVGXLLKOCUKJST-UHFFFAOYSA-N 0.000 description 1
- 230000004888 barrier function Effects 0.000 description 1
- JCXGWMGPZLAOME-UHFFFAOYSA-N bismuth atom Chemical compound [Bi] JCXGWMGPZLAOME-UHFFFAOYSA-N 0.000 description 1
- 239000002178 crystalline material Substances 0.000 description 1
- 238000012217 deletion Methods 0.000 description 1
- 230000037430 deletion Effects 0.000 description 1
- 239000003989 dielectric material Substances 0.000 description 1
- 238000009826 distribution Methods 0.000 description 1
- 230000005684 electric field Effects 0.000 description 1
- 230000005670 electromagnetic radiation Effects 0.000 description 1
- 230000003203 everyday effect Effects 0.000 description 1
- GNPVGFCGXDBREM-UHFFFAOYSA-N germanium atom Chemical compound [Ge] GNPVGFCGXDBREM-UHFFFAOYSA-N 0.000 description 1
- 238000002017 high-resolution X-ray diffraction Methods 0.000 description 1
- APFVFJFRJDLVQX-UHFFFAOYSA-N indium atom Chemical compound [In] APFVFJFRJDLVQX-UHFFFAOYSA-N 0.000 description 1
- 230000002452 interceptive effect Effects 0.000 description 1
- 238000012423 maintenance Methods 0.000 description 1
- 230000007257 malfunction Effects 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 238000002844 melting Methods 0.000 description 1
- 230000008018 melting Effects 0.000 description 1
- 238000000386 microscopy Methods 0.000 description 1
- 239000001301 oxygen Substances 0.000 description 1
- 239000002245 particle Substances 0.000 description 1
- 239000011574 phosphorus Substances 0.000 description 1
- 229920002120 photoresistant polymer Polymers 0.000 description 1
- 238000000053 physical method Methods 0.000 description 1
- 239000002243 precursor Substances 0.000 description 1
- 238000003672 processing method Methods 0.000 description 1
- 238000010791 quenching Methods 0.000 description 1
- 230000000171 quenching effect Effects 0.000 description 1
- 229910052709 silver Inorganic materials 0.000 description 1
- 239000004332 silver Substances 0.000 description 1
- 239000011593 sulfur Substances 0.000 description 1
- PORWMNRCUJJQNO-UHFFFAOYSA-N tellurium atom Chemical compound [Te] PORWMNRCUJJQNO-UHFFFAOYSA-N 0.000 description 1
- 230000009466 transformation Effects 0.000 description 1
- 230000003936 working memory Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C13/00—Digital stores characterised by the use of storage elements not covered by groups G11C11/00, G11C23/00, or G11C25/00
- G11C13/0002—Digital stores characterised by the use of storage elements not covered by groups G11C11/00, G11C23/00, or G11C25/00 using resistive RAM [RRAM] elements
- G11C13/0004—Digital stores characterised by the use of storage elements not covered by groups G11C11/00, G11C23/00, or G11C25/00 using resistive RAM [RRAM] elements comprising amorphous/crystalline phase transition cells
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/38—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/38—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
- G06F7/48—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
- G06F7/49—Computations with a radix, other than binary, 8, 16 or decimal, e.g. ternary, negative or imaginary radices, mixed radix non-linear PCM
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C11/00—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor
- G11C11/56—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using storage elements with more than two stable states represented by steps, e.g. of voltage, current, phase, frequency
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C11/00—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor
- G11C11/56—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using storage elements with more than two stable states represented by steps, e.g. of voltage, current, phase, frequency
- G11C11/5678—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using storage elements with more than two stable states represented by steps, e.g. of voltage, current, phase, frequency using amorphous/crystalline phase transition storage elements
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C13/00—Digital stores characterised by the use of storage elements not covered by groups G11C11/00, G11C23/00, or G11C25/00
- G11C13/0002—Digital stores characterised by the use of storage elements not covered by groups G11C11/00, G11C23/00, or G11C25/00 using resistive RAM [RRAM] elements
- G11C13/0021—Auxiliary circuits
- G11C13/004—Reading or sensing circuits or methods
Landscapes
- Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Mathematical Optimization (AREA)
- Mathematical Analysis (AREA)
- Computing Systems (AREA)
- Pure & Applied Mathematics (AREA)
- Computational Mathematics (AREA)
- Chemical & Material Sciences (AREA)
- Crystallography & Structural Chemistry (AREA)
- Computer Hardware Design (AREA)
- General Engineering & Computer Science (AREA)
- Nonlinear Science (AREA)
- Semiconductor Memories (AREA)
Abstract
비이진 계산 방법은 디지털 멀티 상태 상 변화 물질을 활용한다. 가산, 감산, 곱셈, 나눗셈이 상 변화 물질로의 에너지 공급 제어에 의해 수행된다. 상 변화 물질의 리셋 상태를 셋시키는데 불충분한 양의 에너지가 주어져 하나 이상의 수들을 저장시키며, 수학 연산 기능의 특징을 보이는 에너지가 계산을 일으키기 위해 공급된다.
Description
컴퓨터의 개발이 이십세기 후반의 가장 중요한 발전 중 하나라고 일반적으로 간주된다. 컴퓨터는 일상 생활의 많은 측면을 단순화시켰고 경제적으로 큰 생산성의 이득을 가져왔다. 영상 처리 및 복잡한 계산에 있어서의 최근의 수요는 마이크로프로세서 속도 및 메모리 저장 밀도의 엄청난 발전을 능가하고 있다. 앞으로의 컴퓨터의 발전과 응용은 보다 많은 정보량을 훨씬 더 효과적인 방식으로 처리하는 인간의 능력에 달려 있다.
실리콘은 오늘날의 컴퓨터에서 그 중추에 있다. 계산력과 속도의 발전의 대부분은 실리콘의 근본적인 특성을 보다 잘 이해하고 그 특성들을 실용적 효과를 위해 이용한 결과였다. 초기의 발전은 실리콘을 이용한 트랜지스터와 다이오드 같은 기본 전자 소자들을 설계한 것을 기반으로 했고, 그 후의 발전은 집적 회로의 개발로부터 뒤따랐다. 최근의 발전은 이러한 추세가 지속되고 있음을 나타내며 이제는단일 칩 위에 보다 많은 수의 마이크로 전자 소자들을 소형 설계(miniaturization) 및 집적화하는 것에 대해 주안점을 두고 있다. 보다 작은 소자들이, 보다 높은 메모리 저장 밀도, 보다 고집적된 회로, 및 동일 칩 상의 소자들간 인터랙션(interaction, 상호동작) 횟수의 감소를 이끌어낸다.
처리 속도 및 저장 밀도를 향상시키기 위한 현재의 전략은 실리콘 기반의 마이크로 전자 소자들의 소형화를 지속시키는 능력에 달려 있다. 지금까지, 소형화 설계는 거의 무어의 법칙(Moor's law)을 따랐다. 무어의 법칙에 따르면, 소정 크기의 칩에 집적될 수 있는 트랜지스터의 수는 18개월 마다 두 배가 될 것으로 예상된다. 무어의 법칙은 지난 25년간 대단히 신뢰할 만한 예측임을 증명해 왔고, 현시점에서 칩들은 트랜지스터 하나가 약 0.2 미크론(micron)의 직경을 가진 수천만개의 트랜지스터들을 포함하는 상태에 이르렀다.
앞으로의 문제는, 소형화 설계 노력이 무한하게 계속될 수 있느냐의 여부, 혹은 실제적 또는 근본적인 물리적 한계가 소형화에 대한 극복 불가능한 장벽을 제공할 것인지의 여부에 대한 것이다. 중대한 현실적 한계로는 칩 상의 소자들간의 크로스토크(crosstalk, 혼선) 및 소자들의 크기를 추가로 줄이는데 따르는 어려움들이 포함된다. 이상적으로는, 칩 상의 모든 소자들이, 이 칩의 로직이나 궁극적으로 의도된 목적에 따라 정의된 소정 상호 연결을 따라 상호 동작하는 것이다. 그러나 소형화가 실시될 때, 소자들간의 공간은 부득이 줄어들게 되고 관통형 패턴의 상호연결(through patterned interconnects)이 아닌 근접한 공간적 접근 때문에 한 소자로부터의 전기장, 전하 또는 전류가 다른 소자들에 영향을 미치면서 소자들간 원치 않는 상호동작이 점차 문제가 된다. 크로스토크는 칩의 의도된 기능을 방해한다.
칩 상에 축적될 수 있는 마이크로 전자 소자들의 크기는 본질적으로 그 소자들을 패턴화하는데 사용되는 석판인쇄(lithography) 프로세스의 한 함수이다. 석판인쇄는 감광(photoresist) 물질을 빛에 노출시키는 프로세스이다. 빛에 노출되는 감광 물질의 크기는 칩 상에 형성되는 궁극적인 소자들의 크기와 직접적인 관계가 있다. 석판인쇄에 쓰이는 빛의 파장이 빛에 노출되는 감광 물질의 크기를 제어한다. 사용되는 빛의 파장이 짧을수록, 석판인쇄 프로세스의 분해능(resolution)이 높아져서 형성되는 궁극적 소자들의 크기가 작아진다.
원론적으로는, 크로스토크 및 석판인쇄 분해능에 의해 나타내는 실제적 한계들은 극복될 수 있다. 가령, 크로스토크는 현재 트랜지스터 구조에 사용되는 것 보다 낮은 유전(dielectric) 상수를 가진 절연층들을 병합함으로써 극복될 수 있다. 석판인쇄 분해능은 가령 엑시머 레이저와 같은 보다 짧은 파장의 광원을 개발함으로써 향상될 수 있다. 제안되고 있는 이러한 해법 또는 기타의 해법들은 잠정적으로는 가능하지만, 엄청난 생산비 증가를 수반한다. 하나의 칩 제조 설비를 만드는 비용은 지난 25년 동안 5백만 달러 미만에서 15억 달러 이상까지 증가해 왔다. 앞으로도 비용은 꾸준히 빠르게 증가할 것으로 예상되며, 현재로서도 칩의 추가 개선이 경제적으로 더 이상 합당할 수 없을 만큼 충분히 가혹한 경지에 이르고 있다. 컴퓨터 산업은 기로에 서 있다.
컴퓨터 산업이 팽창하고 컴퓨터가 일용 아이템 이상이 되도록 하기 위해, 컴퓨터가 작동하는 방식과 프로세싱 및 메모리 소자들에서 사용되는 물질의 혁명적인 전환이 필요하다. 일반적인 컴퓨터가 보다 인터랙티브하고 적응적인 학습 장치로 진화해 나가려면 다른 어떤 발전 가운데서도, 계산(computing) 속도, 효율성, 보다 많은 병렬처리(parallelness)에 있어서의 향상이 필요하다.
본 발명은 일반적으로 비이진(not-binary) 계산 방식에 관한 것으로, 보다 상세하게는 상 변화 물질의 디지털 멀티 상태 특성을 이용한 가산, 감산, 곱셈 및 나눗셈 방법에 관한 것이다.
도 1은 대표적 상 변화 물질의 전기 저항을 제공된 에너지량의 함수로서 보인 곡선이다. 이 곡선은 왼쪽에 고저항 정체 영역을, 그리고 후설정(post-setting) 영역을 포함한다. 두 영역들에 있는 대표적 상태들이 예시용으로 보여지고 있다.
도 2는 RESET(a)로 표기된 리셋 방법의 단계들을 도시한 것이다.
도 3은 RESET(a) 리셋 방법의 단계들에 대한 다른 묘사를 보인 것이다.
도 4는 한 수의 보수를 계산하는데 사용될 수 있는 HALFCOPY_1 방법의 단계들을 도시한 것이다. 이 실시예에서, a 위치에 있는 수의 보수는 위치 b로 주어진다.
도 5는 한 수의 보수를 계산하는데 사용될 수 있는 HALFCOPY_2 방법의 단계들을 보인 것이다. 이 실시예에서, a 위치에 있는 수의 보수는 b 위치로 주어진다.
도 6은 COPY_1이라 표기된 복사 방법의 단계들을 보인 것이다. 이 실시예에서, 위치 a에 저장된 수가 위치 b 및 c로 복사된다.
도 7은 BASIC ADD로 표기된 가산 방법의 단계들을 보인 것이다. 이 실시예에서, 위치 a 및 b에 있는 수들의 합이 주어진다.
도 8은 ADD로 표기된 가산 방법의 단계들을 보인다. 이 실시예에서, 위치 a및 b에 있는 수들의 합이 주어진다.
도 9는 BASIC SUBTRACT로 표기된 감산 방법의 단계들을 보인다. 이 실시예에서, 위치 b 및 a에 수들의 차가 주어진다.
도 10은 SUBTRACT로 표기된 감산 방법의 단계들을 보인다. 이 실시예에서, 위치 b 및 a에 수들의 차가 주어진다.
도 11은 BASIC MULTIPLY로 표기된 곱셈 방법의 단계들을 보인다. 이 실시예에서, 위치 a 및 b에 있는 수들의 곱이 주어진다.
도 12는 BASIC DIVIDE로 표기된 나눗셈 방법의 단계들을 보인다. 이 실시예에서, 위치 b 및 a에 있는 수들의 몫(quotient)이 주어진다. 몫은 제수(divisor)인 a의 배수 및 나머지를 포함한다.
본 발명은 상변화 물질의 디지털 멀티 상태 특성을 활용한 비이진 방식의 계산(computing) 방법을 제공한다. 디지털 멀티 상태 상 변화 물질이 컴퓨터의 메모리 소자들 또는 레지스터들 및 본 발명의 계산 방법을 구현할 수 있는 기타 데이터 처리부 안에 포함될 수 있다. 본 발명의 계산 방법에서 활용되는 디지털 멀티 상태 상 변화 메모리 물질은 적어도 고저항 상태와, 검출시 판별 가능한 저저항 상태를 가진다. 디지털 멀티 상태 상 변화 물질로 이뤄진 메모리 소자들을 리셋하는 동작, 숫자들의 저장을 위한 프로그래밍 상태를 규정하는 동작, 한 메모리 소자의 내용을 다른 메모리 소자로 이동하는 동작, 한 숫자의 보수를 계산하는 동작, 및 디지털 멀티 상태 상 변화 물질을 이용해 가산, 감산, 곱셈, 및 나눗셈을 실행하는 동작을 위한 방법 및 알고리즘들이 여기 개시된다.
디지털 멀티 상태 상 변화 물질을 구비하는 메모리 소자들은 메모리 그룹들로 편성되고, 한 그룹 내 각 메모리 소자는 멀티 디지트 수의 한 디지트를 저장하는데 사용된다. 메모리 소자는 여기서 레지스터라고도 칭할 수 있다. 따라서 메모리 그룹은 메모리 소자들 또는 레지스터들의 집합에 해당한다. 한 메모리 그룹에 포함되는 메모리 소자들 또는 레지스터들의 수는 가변적이며 보통 저장 목적을위한 수와 결부시키고자 하는 최대 디지트 수에 의해 정해진다. 한 수와 결부시킨 최대 디지트 수는 정밀도와 조작효율 사이의 타협의 소산(tradeoff)이다.
메모리 그룹들을 형성하기 위한 레지스터들의 그루핑을 통해, 메모리 소자들은 멀티 디지트 넘버들을 저장하도록 프로그램될 수 있다. 바이너리, 혹은 2진 연산 시스템에 기초한 연산에 국한되지 않고, 상 변화 물질의 디지털 멀티 상태 특성은 레지스터들에서 임의의 수리 단위(arithmetic base)와 관련된 디지트들의 저장 및 처리를 가능하게 하여 비이진(non-binary) 계산 기능을 수행할 수 있도록 한다. 예를 들어, 10진 수, 8진수, 또는 16진수들의 직접 저장 및 처리가 본 발명에서는 가능하다. 수 백, 수 천, 혹은 그 이상의 단위들(bases) 역시 본 발명에서는 양립될 수 있다. 결과적으로, 본 발명은 대량의 병렬 연산을 수행할 여지를 제공한다. 본 발명의 계산 방식을 통해 멀티 상태 메모리 소자들을 이용해 가능한 병렬 연산 기능, 보다 높은 저장 밀도, 및 비이진 연산은 일반적인 계산 기기들과 관련해 계산 속도 및 효율성을 매우 크게 향상시킬 수 있는 여지를 제공한다.
여기 개시된 알고리즘들은 상 변화 물질을 구비한 멀티 상태 메모리 소자들을 이용해 정보를 저장 및 처리하는 방법을 기술한다. 본 발명에는 단일 레지스터 연산 뿐 아니라 멀티 상태 메모리 그룹들의 레지스터별 연산에 대한 방법들이 포함된다. 이 방법들에 있어서, 한 디지트를 저장하거나 이전에 저장되었던 디지트의 값을 변경하기 위해 하나의 레지스터나 메모리 그룹 내 개개의 레지스터들로 에너지가 공급된다. 이 방법들은 원하는 수학적 연산 또는 프로세싱 목적을 달성하기 위해 하나 이상의 메모리 그룹들과 관련된, 개별 레지스터들을 어드레싱하는 규정을 포함하고 레지스터들의 그룹이나 그 관련 부분 집합을 다루는 방식들을 제공한다.
본 발명은 상 변화 물질의 디지털 멀티 상태 특성을 이용한 데이터 계산 및 처리 방법을 제공한다. 상 변화 물질은 컴퓨터나 기타 데이터 처리 유닛의 메모리 그룹들, 메모리 소자들 또는 레지스터들 안에 병합될 수 있다. 여기 사용되는 것과 같이, 메모리 그룹들은 메모리 소자들로 구획되거나 세분될 수 있는 다량의 상 변화 물질을 구비하며, 여기서 각 메모리 소자는 멀티 디지트 수의 한 디지트를 저장하는데 사용된다. 메모리 소자는 여기서 레지스터로도 불릴 수 있다. 따라서 메모리 그룹은 메모리 소자들 또는 레지스터들의 집합에 해당한다. 한 메모리 그룹 안에 포함된 메모리 소자들 또는 레지스터들의 개수는 가변적이며, 일반적으로 저장 목적의 수들과 결부시키고자 하는 최대 디지트 수에 의해 결정된다. 본 발명의 계산 방법은 상 변화 물질의 디지털 멀티 상태 특성을 활용한 수학적 연산 및 데이터 처리를 수행하는 것에 관한 것이다.
일반적인 컴퓨터 및 데이터 처리기들이 "0"과 "1" 비트의 바이너리(이진) 형태로 된 두 상태를 이용해 데이터를 저장 및 처리하는 바이너리 메모리 소자들에 의존하는 반면, 본 발명은 다중 상태를 채택할 수 있는 메모리 소자들에 대한 계산 방법 및 알고리즘을 제공한다. 이러한 메모리 소자들은 바이너리 컴퓨터들에서 가능한 것 보다 많은 정보를 소정량의 메모리 물질 안에 저장할 수 있다. 결국, 본 발명의 계산 방법으로 동작하는 컴퓨터들은 기존의 컴퓨터들에 비해 훨씬 높은 데이터 저장 기능을 제공할 수 있다. 본 발명의 방법들은 또한 비이진(non-binary) 방식의 계산 기능 역시 제공한다. 결과적으로, 데이터 쓰기, 처리 및 읽기가 비이진 방법들을 통해 수행되므로 기존의 바이너리 계산 장치들에서의 고유한 한계들로부터 벗어날 수 있게 된다.
이십세기 후반의 흥미있는 발전은 양자화 계산(quantum computing)이라는 개념이었다. 양자화 계산의 핵심적인 잠정적 이점은 많은 수의 첨가된 상태들(superimposed states)의 결부를 통한 대량의 병렬 계산 능력의 달성에 있다. 이 능력은 차세대 계산과 관련된 복잡성을 해결할 수 있는 솔루션으로서 널리 요구되는 것이며, 몇 몇 그룹들은 Shor 알고리즘과 같이 큰 수들의 인수분해와 같은 오래된 문제들을 해결하기 위한 양자화 계산 알고리즘을 개발하는데 있어 최초의 진보를 보여왔다. 그러나 지금까지 고안되었던 양자화 컴퓨터의 사용 모델들은 사소해 보이는 외부의 요인과 맞서 변덕스럽고 오작동의 가능성이 높다. 따라서 양자화컴퓨터가 제공하는 병렬연산은 실제 상황이 되기에는 먼 거리에 있다고 보아진다.
디지털 멀티 상태 특성을 활용한 본 발명의 계산 방법들은 양자화 컴퓨터로부터 잠정적으로 달성될 수 있는 것과 같은 대량 병렬 계산 기능을 달성할 수 있는 여지를 제공한다. 본 발명의 계산 방법들에 의해 동작되는 상 변화 물질의 디지털 멀티 상태 특성들은 양자화 컴퓨터의 연루(entanglement) 효과에 있어 중추적인 다중 상태들의 중첩에 견줄 수 있다. 그러나 양자화 컴퓨터와는 달리, 멀티 상태 상 변화 물질 및 본 발명의 계산 방법은 광범위하고 다양한 외부 영향에 대해 강력하고 안정적이다. 본 발명에 의해 제공되는 고저장 밀도 및 멀티 상태 계산 특성은 기존의 컴퓨터들을 능가하는 계산 속도 및 효율성을 달성하기 위한 중대한 기회들을 제공한다.
기존의 바이너리 메모리 물질들에 있어서의 비트 연산 및 알고리즘이 디지털 멀티 상태 상 변화 물질에 기반한 메모리 소자들로 직접 적용될 수는 없을 것이다. 이 멀티 상태 메모리 소자들은 데이터를 처리하고 수학 연산을 수행하기 위한 새로운 알고리즘을 필요로 한다. 멀티 상태 메모리 소자들에 대해 설계된 여러 방법 및 알고리즘들이 여기에서 개시된다. 이 방법들은 메모리 소자들 안에 병합된 상 변화 물질의 물리적 화학적 특성에 따른 메모리 소자들과의 에너지 인터랙션에 기반한다. 상 변화 물질의 기본 특성이 이하에서 검토될 것이며, 이 명세서에서 참고용으로 병합된 미국 특허 번호 5,912,839 및 6,141,241에서 이전에 기술되었다.
본 발명이 작동하는 메모리 소자들 및 레지스터들은 적어도 고저항 상태 및, 검출시 명확한 저저항 상태를 가진 상 변화 물질로 이뤄진다. 여기 사용되는 것과같이, 고/저저항 상태들은 각각 고/저의 전기 저항으로 특징짓는 물리적 상태들을 말하는 것이며, 그 고/저의 전기 저항 상태들의 전기적 저항은 서로에 대해 상관적이고 검출시 서로 명확하다. 본 발명의 방법에 의해 사용되는 상 변화 메모리 물질들의 예가 공동 출원인에 의한 미국 특허 번호 5,166,758; 5,296,716; 5,524,711; 5,536,947; 5,596,522; 5,825,046; 및 5,687,112에 기술되어 있고, 이들은 이 명세서에서 참고적으로 병합되고 있다.
본 발명의 계산 방법들이 가리키는 상 변화 물질은 효과적 에너지량의 공급에 따라 고저항 상태에서 저저항 상태로 변환될 수 있다. 여기 개시된 도 1은 에너지 함수인 상 저항 물질의 전기 저항 곡선이다. 도 1의 실시예에서의 에너지는 전기적 전류 펄스의 형태로 공급되는 전기 에너지이다. 상 변화 물질이 초기에 고저항 상태에 있으면, 적은량의 에너지 공급이 그 물질을 고저항 상태로 유지시킨다. 이러한 상태가 도 1의 왼편에 보여진 고저항 정체(plateau) 영역에 의해 보여진다. 그러나 충분한 양의 에너지가 공급될 때, 상 변화 물질은 고저항 상태에서 저저항 상태로 변환된다. 이 변환은 도 1의 고저항 정체 영역의 오른편으로의 급격한 전기 저항의 감소에 의해 묘사된다. 고저항 상태에서 저저항 상태로의 상 변화 물질의 이러한 변환은 다음부터 상 변화 물질을 "세팅, setting"한다고 불려질 것이다. 세팅에 따라 발생된 저저항 상태는 이제부터 상 변화 물질의 "셋 상태, set state"라고 불려진다. 상 변화 물질을 셋하는데 충분한 에너지량은 "셋(set) 에너지" 또는 "세팅(setting) 에너지"로 불릴 것이다. 셋 에너지는 고저항 정체 영역에서의 각 상태에 대한 것과는 다르다는 것을 주지해야 한다.
도 1의 오른편은 상 변화 물질이 세팅되었을 때의 동작에 해당한다. 일단 세팅되었으면, 상 변화 물질은 저저항 상태에 있게 되고 도 1의 오른편에 보여지는 세팅후(post-setting) 영역에 따른 에너지 공급에 의해 영향을 받는다. 이 부분의 전기 저항 응답 곡선은 참고용으로 병합된 상기 미국 특허들 중 몇 가지에서의 아날로그 또는 그레이스케일(greyscale) 멀티비트 부분의 커브라고 불려졌다. 상 변화 물질의 세팅후 상태에 대한 에너지 공급은 그 전기 저항의 변화를 일으킨다. 전기 저항의 변화는 공급된 에너지량에 의해 결정된다. 공급된 에너지 및 도 1의 세팅후 영역의 상 변화 물질 상태에 따라, 전기 저항의 증가 또는 감소가 일어날 수 있는데 이는 세팅후 영역의 동작이 가역적(reversible)이기 때문이다. 이러한 가역성이 도 1의 세팅후 영역에 보여지는 두 개의 화살표에 의해 도시되고 있다. 에너지 및 전기 저항은 세팅후 여역의 각 포인트와 관련된다. 공급된 에너지가 세팅후 영역의 상 변화 물질을 나타내는 포인트와 관련된 에너지를 초과하면, 상 변화 물질의 전기 저항은 증가한다. 이와 반대로, 공급된 에너지가 세팅후 영역의 상변화 물질을 나타내는 포인트와 관련된 에너지 보다 적으면, 전기 저항은 감소한다. 가역성은 도 1의 세팅후 영역에 한정된다. 세팅 변환을 앞서는(즉, 세팅 변환의 왼편으로) 도 1의 고저항 정체 영역의 한 포인트에 해당하는 에너지를 공급해 세팅 변환을 바꿀 수는 없다.
그러나, 도 1의 세팅후 영역의 한 포인트로 묘사되는 물질에 충분히 높은 에너지를 공급해 상 변화 물질의 고저항 상태를 복구하는 것은 가능하다. 이러한 에너지 공급은 세팅 변환을 되돌리는 방향이라기 보다는 도 1의 에너지 증가의 방향으로 가는 것에 해당한다. 도 1의 세팅후 영역에서 보여지는 것과 같이, 지속적으로 증가하는 에너지 공급은 전기 저항의 지속적 증가를 야기한다. 상 변화 물질을 도 1의 오른편 끝부분으로 이끄는 충분한 에너지 공급에 의해, 상 변화 물질은 고저항 상태로 복귀하고 고저항 정체상태를 재개한다. 상 변화 물질을 그 저저항 셋 상태에서 고저항 상태로 변환하는데 필요한 에너지 량을 이제부터 "리셋(reset) 에너지" 또는 "리셋 에너지"라 부를 것이다. 리셋 에너지 공급의 궁극에 있어서의 상 변화 물질의 상태는 "리셋 상태"라고 부를 것이다. 리셋 후의 추가 에너지 공급에 대해 보여진 양태는 도 1의 고저항 정체 영역에 대해 기술된 것과 유사하다. 도 1에 보여진 곡선은 세팅 및 리셋의 한 주기에 해당한다. 상 변화 물질은 수 많은 주기에 걸쳐 반복적으로 셋 및 리셋될 수 있다.
도 1의 세팅후 영역과 관련된 가역 양태는 고유한 전기 저항 값에 대해 프로그램 가능한 아날로그, 멀티 비트 그레이 스케일 디바이스들의 기초를 형성한다. 이러한 디바이스들의 예들이, 예를 들어, Ovshinsky 들의 미국 특허 번호 5,687,112와 Ovshinsky의 미국 특허 번호 3,271,591 및 3,530,441에 기술되어져 있고, 그것은 이 명세서에서 참고용으로 병합되었다.
본 발명의 컴퓨터 및 알고리즘들의 메모리 소자들은 도 1의 왼편에 묘사된 정체 영역에 의해 표현된 고저항 상태들의 상 변화 메모리 물질들을 토대로 한다. 고저항 정체 영역에서의 상태들은, 이들이 모두 실질적으로 전기 저항 값과 동일하다는 점에서 응답 곡선의 설정후 영역의 상태들과 구별된다. 설정후 영역의 상태들은 그와 반대로 지속적으로 가변되는 전기 저항 값들을 가진다. 고저항 정체영역은 보다 빠르고 보다 만능의 컴퓨터들을 가능하게 할 수 있는 디지털 멀티 상태 저장 및 처리 능력을 제공한다. 본 발명의 계산 방법은 상 변화 물질들의 전기적 응답에 있어 디지털 멀티 상태 고저항 정체 영역의 이점을 활용한다.
상 변화 물질의 멀티 상태 성능은 고저항 상태들의 특성에 대한 결과이다. 고저항 상태의 상 변화 물질에 대해 "서버-세팅량의 에너지, sub-setting amount of energy"로 불리는, 세팅하는데 필요한 것 보다 적은 량의 에너지를 공급하면 전기 저항을 크게는 변화시키지는 않는, 물질의 물리적 변경을 가능하게 한다. 도 1의 정체 영역은 고저항 상태들의 이러한 특성에 대해 보인 것이다. 도 1의 정체 영역의 첫번째 포인트로 묘사된 상 변화 물질에 서브-세팅 량의 에너지를 공급하는 것은 그 상 변화 물질을 첫번째 포인트 오른쪽에 있는 정체 영역의 두번째 포인트로 묘사된 물리 상태로 변환시킨다. 서브-세팅 량의 에너지 공급을 통해 고저항 정체 영역의 왼쪽 방향으로 상 변화 물질을 변환시키는 것은 불가능하다. 도 1의 세팅후 아날로그 멀티 비트 부분에 대해 위에서 설명한 것과 같은 가역성의 개념은 세팅전 디지털 멀티 상태 고저항 정체 상태에는 적용되지 않는다. 고저항 정체 영역의 초기 포인트의 왼쪽에 있는 포인트는 상 변화 물질을 세팅하고, 그것을 리셋하고 나서 적절한 서브-세팅량의 에너지를 공급함으로써 도달될 수 있다.
고저항 정체 영역의 일방 응답의 결과로서, 본 발명의 계산 방법에 의해 동작되는 상 변화 물질은 그 물질의 셋 에너지에 달하는 량의 에너지를 축적 및 저장할 수 있다. 상 변화 물질의 전기 저항이 고저항 정체 영역에서는 변화하지 않음에도 불구하고, 각각의 서브-세팅 에너지 공급이 상 변화 물질로 하여금 저저항 셋상태로 예측 가능하게 진행될 수 있도록 한다. 상 변화 물질의 이러한 양태는 멀티 상태 메모리 소자들에서 활용되어 여기 개시된 방법 및 알고리즘들의 근거가 된다.
바람직한 일실시예에서, 리셋 상태가 도 1의 고저항 정체 영역 안의 시작 포인트로서 선택된다. 상 변화 물질을 그 리셋 상태에서 셋 상태로 변환시키는데 필요한 에너지 구간(interval)을 이제부터 "리셋 상태의 세팅(또는 셋) 에너지"라 부른다. 리셋 상태의 세팅 에너지는 세팅 및 리셋의 여러 주기들에 걸쳐 반복적이고 일정하다는 특성이 있으므로, 둘 이상의 서브 구간들로 분할되고 그 상 변화 메모리 물질의 서로 다른 프로그래밍 상태 또는 프로그래밍 값들이 서로 다른 수 또는 서로 다른 조합의 서브 구간 에너지 공급에 따라 규정되거나 그와 관련될 수 있다. 도 1의 고저항 정체 영역의 상 변화 물질의 반복적 일방 양태는 서브 구간 크기의 물질에 공급되는 누적량의 에너지에 따라 뚜렷한 프로그래밍 상태들을 설정하는 기능을 제공한다. 뚜렷한 프로그래밍 상태들의 집합이 에너지의 서브 구간 공급의 서브 세팅 시리즈에 따라 리셋 상태로 공급되는 누적된 에너지량에 의해 고유하고 반복적으로 규정될 수 있다. 예를 들어, 첫번째 상태는 리셋 상태에 대한 첫번째 서브 구간 에너지 량의 공급과 관련될 수 있다. 첫번째 프로그래밍 상태에 있는 상 변화 물질에 대한 첫번째 서브 구간 에너지 량의 두번째 공급은 두번째 프로그래밍 상태를 규정하는데 쓰일 수 있다. 두번째 프로그래밍 상태는 두번째 서브 구간 에너지량의 단일 공급과 선택적으로 연관될 수 있으며, 이것은 리셋 상태에 대한 첫번째 서브 구간 에너지 량과는 크기가 다르다. 서브 구간 에너지량의 계속적인 공급 및 그 조합은 도 1의 고저항 정체 영역 전체에 대한 일련의 프로그래밍 상태들을 규정하는데 이용된다.
에너지의 서브 구간 공급의 복수개의 시퀀스 및 조합이 본 발명의 계산 방법들에 의해 사용될 수 있는 프로그래밍 상태들을 설정하기 위한 실시예들을 구성한다. 어떤 실시예들에 있어서, 고저항 정체 영역 안에 있는 상태들만이 프로그래밍 상태들로서 포함된다. 다른 실시예들에서는, 저저항 상태로의 상 변화 물질의 변환에 따라 얻어진 세팅 상태가 부가적 프로그래밍 상태로서 포함된다. 리셋 상태에 대해 공급된 누적 에너지량이 리셋 상태의 세팅 에너지에 달할 때, 상 변화 물질이 세팅된다. 세팅 후, 추가 에너지 공급에 따른 상 변화 물질의 양상은 도 1의 세팅후 영역에 의해 결정된다.
본 발명에 사용되는 상 변화 물질은 리셋 상태에서 셋 상태로 확장되는 상태들의 연속체를 갖춘다. 그 상태들은 리셋 상태, 고저항 정체 기간 상의 일련의 중간 상태들 및 셋 상태를 포함한다. 중간 상태들 및 셋 상태는 리셋 상태에 에너지를 공급함으로써 얻어질 수 있다. 따라서 상 변화 물질과 관련된 상태들은 리셋 상태와 관련해 구분 가능한 에너지 상태들의 연속체를 형성하는 것으로서 보여질 수 있다. 상술한 프로그래밍 상태들은 이 상태들의 연속체로부터 선택된다. 일반적으로 프로그래밍 상태들은 정수들과 같은 이산 데이터 값들과 결부되어 있고, 상 변화 물질을 프로그래밍 상태들로 변환하기 위해 상 변화 물질의 리셋 상태에 부가될 필요가 있는 에너지에 해당하는 프로그래밍 에너지들을 가진다. 예를 들어, 특정 프로그래밍 상태는 상 변화 물질의 리셋 상태가 프로그래밍 상태로 변환될 수있도록 그 리셋 상태에 부가되어야 하는 에너지량에 해당하는 프로그래밍 에너지를 가진다. 한 프로그래밍 상태의 프로그래밍 에너지는 따라서 리셋 상태와 상관된 에너지 단위이고 각 프로그래밍 상태는 고유 프로그래밍 에너지와 결부된다.
바람직한 실시예에 있어서, 각 프로그래밍 상태는 그에 할당 또는 결부된 고유한 데이터값을 가진다. 다른 바람직한 실시예에서, 연속 정수들이 증가하는 프로그래밍 에너지 순으로 프로그래밍 상태들에 할당 또는 결부된다. 이 실시예들에서, 한 수는, 상 변화 물질을 그 수와 결부된 프로그래밍 상태로 변환함으로써 저장되어진다. 숫자 값들과 프로그래밍상태들과의 고유한 대응이, 어떤 범위의 수라도 상 변화 물질의 한 특정 상태로 저장할 수 있는 기능을 제공한다. 여러개의 수들은 상 변화 물질의 여러 부분들에 저장될 것이다. 계산은 일반적으로 계산할 객체에 따라 하나 이상의 프로그래밍 상태들 사이에 변환을 일으킬 에너지의 공급을 통해 수행된다.
상술한 바와 같이, 각 서브 구간 에너지 공급이 고저항 정체 구간의 상 변화 물질로 하여금 셋 상태로 진행되게 만든다. 리셋 및 고저항 정체 구간의 중간 상태들이 실질적으로 동일한 전기 저항을 가지고 있어서 전기 저항에 기반해서는 구별될 수 없다고 하더라도, 고저항 정체 구간의 각 상태는 그 고저항 정체 구간의 서로 다른 포인트들로 묘사된 상 변화 물질들을 세팅하는데 서로 다른 에너지가 필요로 되기 때문에 서로에 대해 검출시 모두 구분 가능하다. 예를 들어, 한 에너지량이 고저항 정체 영역의 제1포인트로 묘사된 상 변화 물질을 고저항 정체 영역의 제2포인트로 변환하고자 공급될 때, 엄밀하게는 제2포인트로 묘사된 상 변화 물질을 셋 상태로 변환하는데 필요로 한 에너지량이 제1포인트로 묘사된 상 변화 물질을 셋 상태로 변환하는데 필요한 것 보다는 적다. 셋 상태는 고저항 정체 영역의 상태들과 관련해 검출시 구분 가능한 저저항 상태이고, 그 고저항 정체 영역의 어떤 포인트로 묘사된 상 변화 물질들을 세팅하는데 필요로 되는 에너지량은 정해질 수 있으므로, 고저항 정체 영역의 서로 다른 포인트들은 서로 구분 가능하고 고저항 정체 영역의 각 포인트는 서로 다른 프로그래밍 상태 및/또는 수치와 결부될 수 있다. 결국, 리셋 상태에서 셋 상태까지의 에너지 구간을 적절한 수의 서브 구간들로 나눔으로써, 실질적으로 몇 개의 프로그래밍 상태들이라도 도 1의 고저항 정체 영역 안에서 규정될 수 있다. 결과적으로, 고저항 정체 영역은 데이터 저장 및 처리를 위해 사용될 수 있는 일련의 이산 프로그래밍 상태들로 세분될 수 있다. 상 변화 물질을 구비한 메모리 소자들은 현재의 바이너리 컴퓨터들의 경우에서와 같은 두개의 프로그래밍 상태들에 국한되지 않으며, 비이진 멀티 상태 프로그래밍 및 계산 기능을 제공하고, 그에 따라 각 메모리 소자 마다 둘 이상의 수들을 저장할 수 있다.
이산 프로그래밍 상태들의 개수는 리셋 상태(또는 다른 시작 상태)에서 셋 상태(리셋 상태 또는 시작 상태의 셋 에너지 크기)로의 상 변화 물질의 변환과 관련된 에너지 구간의 크기 뿐 아니라, 이 에너지 구간을 서브 구간들로 분할할 수 있는 분해능, 및 특정 수의 프로그래밍 상태들을 가지는 것과 관련된 계산 또는 처리의 상대적 이점과 같은 실질적 고려사항들에 달려 있다. 여기 사용되는 것과 같이, 시작 상태 또는 초기 상태는 고저항 정체 영역의 제1 또는 최저 에너지 프로그래밍 상태를 말하나. 리셋 상태를 시작 상태로 하는 것이 바람직하며, 다르게 특정되지 않으면 리셋 상태가 지금부터의 설명에서 시작 상태로 전제될 것이다. 그러나, 고저항 정체 영역의 다른 상태가 시작 상태로 선택될 수도 있음을 알아야 한다.
리셋 상태 및 셋 상태 사이의 에너지 간격의 크기는 다음에 설명되는 바와 같이 상 변화 물질의 화학적 조성에 의해 영향을 받는다. 서브 구간들이 정의될 수 있는 분해능은 본 발명의 계산 방법에서 동작되는 멀티 상태 메모리 소자들을 프로그램 또는 판독하는데 사용되는 에너지 소스들로부터 사용가능한 에너지 분해능에 달려 있다. 본 발명의 계산 방법에 따라 상 변화 물질을 그 상태들 사이에서 변환시키기 적합한 에너지 소스들이 이하에서 보다 상세히 기술될 것이다. 계산적 견지에서, 프로그래밍 상태들의 개수는 계산 방법 또는 알고리즘의 성격, 속도, 병렬성 또는 편리성에 영향을 미친다. 예를 들어 여러 프로그래밍 사태들의 개수를 2로 선택하면 본 발명의 비이진 계산 방식들에서 사용되도록 현재 사용되는 이진 알고리즘의 적용이 가능하다. 예를 들어 4, 8, 16, 32, 64 등의 프로그래밍 상태들을 포함하는 실시예들이 본 발명에 포함된다. 10 개의 프로그래밍 상태들의 사용은 통상적으로 매사에 사용되는 10 단위(10진수) 시스템에 기반한 알고리즘의 편리한 구현이 가능하며 이 역시 본 발명의 실시예들 가운데 포함된다.
상 변화 물질을 그 리셋 상태에서 셋 상태로 변환하는데 필요로 되는 에너지 간격을 점점 더 적은 서브 구간들로 분할함으로써, 많은 수의 프로그래밍 상태들을 만드는 것이 가능하고 프로그래밍 상태들의 연속 분포에 가깝게 될 수 있다. 양자화 컴퓨터와 어느 정도 유사한 방식으로, 준-연속(quasi-continuous) 프로그래밍 상태들을 생성할 확률은 대량의 병렬 계산 기능을 달성하도록 하는 기회를 제공한다. 수백, 수천 또는 심지어 그 보다 더 높은 수에 달하는 프로그래밍 상태들은 상 변화 물질을 구비한 메모리 소자들에서 얻어질 수 있고 본 발명의 계산 방법 및 알고리즘에 의해 처리될 수 있다.
본 발명의 계산 방법 및 알고리즘들과 함께 사용하기 적합한 상 변화 물질들의 예가 미국 특허 번호 5,166,758; 5,296,716; 5,524,711; 5,536,947; 5,596,522; 5,825,046; 5,687,112; 5,912,839; 3,271,591 및 3,530,441에 제공된다. 한 메모리 물질은 유전 물질과 상 변화 물질의 혼합체를 구비한다. 이러한 혼합체들의 예가 공통 양도된 공통 미국 특허 번호 6,087,674에 기술되어 있으며, 그 내용은 여기에 참조용으로 포함되었다. 본 발명의 계산 방법 및 아록리즘에 적합한 물질들은 리셋 상태와 리셋 상태와 구분가능하지만 실질적으로 동일한 저항을 가진 복수개의 중간 상태들 및 검출시 리셋 상태 보다 낮은 저항을 가지는 셋 상태를 포함한다. 이러한 요건을 만족하는 물질들은 보통 In(인듐), Ag(은), Te(텔루륨), Se(셀레늄), Ge(게르마늄), Sb(안티몬), Bi(비스무스), Pb(납), Sn(주석), As(비소), S(황), Si(실리콘), P(인), O(산소) 원소들 중 하나 이상 또는 그 혼합물을 포함한다. 바람직한 일실시예에서, 상 변화 물질은 칼코겐(chalcogen)을 포함한다. 다른 바람직한 실시예에서, 상 변화 물질은 칼코겐과 Ge을 포함한다. 보다 바람직한 실시예에서, 상 변화 물질은 Ge, 칼코겐, 및 Sb을 포함한다. 가장 바람직한 실시예에서, 상 변화 물질은 Ge, Te 및 Sb를 포함한다.
많은 본 발명의 계산 방법 및 알고리즘들이 상 변화 물질 또는 상 변화 물질로 이뤄진 메모리 소자에 에너지를 공급 또는 제공하는 것을 수반하는 단계들을 포함한다. 에너지 제공 또는 공급은 규제된 량의 에너지를 상 변화 물질로 전달할 수 있는 어떤 소스에 의해 달성될 수 있다. 이제부터 규제된 량의 에너지는 "에너지의 펄스" 또는 "에너지 펄스"라고도 불릴 것이다. "셋 펄스"는 상 변화 물질을 세팅하는데 충분한 에너지 펄스이고 세팅량의 에너지 제공에 해당한다. "리셋 펄스"는 상 변화 물질을 리셋하는데 충분한 에너지 펄스이고 리셋량의 에너지를 제공하는 것에 해당한다. 본 발명에 있어서, 에너지는 한 프로그래밍 상태로부터 다음으로 진행시키고, 상 변화 물질을 셋 및 리셋시키기 위해 사용된다. 전달되는 에너지는 전자기 방사(radiation)(광, 레이저, 및 마이클웨이브 펄스를 포함), 전기 에너지, 광 에너지, 열 에너지, 화학 에너지, 자기 에너지, 기계 에너지, 입자 빔 에너지, 음파 에너지 또는 단일 에너지 소스나 복수개의 에너지 소스들을 이용한 그 조합의 형태일 수 있다. 예를 들어 전기 에너지의 운반은 전기적 전류나 전압의 형태일 수 있고 세팅은 "셋 전류 펄스", "셋 전압 펄스"에 의해, 또는 상 변화 물질을 셋하기 충분한 량의 전기 에너지의 공급에 의해 달성될 수 있다. 이와 마찬가지로, 리셋은 "리셋 전류 펄스", "리셋 전압 펄스"에 의해, 또는 상 변화 물질을 리셋하기 충분한 량의 전기 에너지를 제공함으로써 달성도리 수 있다. 상 변화 물질을 셋 또는 리셋하기 충분한 량의 에너지를 전달, 공급 또는 제공하는 다른 형태와 관련해 이와 비슷한 적절한 조건들이 규정될 수 있다.
본 발명에서 에너지는 적어도 세가지 기본 기능인 프로그래밍, 읽기 및 리셋을 수행하는데 필요로 된다. 가장 간단한 형태에 있어서, 프로그래밍은 데이터나 정보를 상 변화 물질에 쓰기 또는 저장하는 것을 수반한다. 이미 수치 형식이 아니라면, 입력 데이터는 쓰기 수행 전에 수치 형태로 전환됨이 바람직하다. 데이터르 수치 형태로 전환하는 것은 각 데이터 마다 구분 가능한 수치를 할당함으로써 이뤄질 수 있다. 예를 들어, 말은 글자들로 이뤄질 수 있다. 각 글자는 구분 가능한 수치가 할당될 수 있는 하나의 데이터를 나타내고 말의 글자들에 해당하는 수치들의 시퀀스가 그 말을 나타내도록 저장될 수 있다. 심볼들과 다른 유형의 데이터도 이와 마찬가지로 취급될 수 있다. 다양한 기술들이 글자와 심볼들을 이진 수들로 전환하는 종래의 기술에서도 존재한다. 유사한 기술들이 글자들 및 심볼들의 비이진 숫자들로의 전환에 대해 적응 또는 새롭게 발전될 수 있다. 결국, 안정적이고 복제가능한 숫자들의 저장은 데이터 쓰기 및 처리 프로세스의 기본 단계를 나타낸다. 다음 논의에서, 데이터 저장, 처리 및 기타 조작이 수치 형태의 데이터에 대해 기술될 것이다. 그러나, 모든 방식의 데이터가 수치 형태로 전환 또는 표현될 수 있음을 알아야 한다.
본 발명의 계산 방법에 있어서, 쓰기 및 프로그래밍은 저장될 수에 특정되는 양의 에너지를 상 변화 물질로 제공함으로써 달성된다. 특정되는 에너지는 상 변화 물질의 리셋 상태의 세팅 에너지, 프로그래밍 상태들의 개수, 및 그 상 변화 물질을 한 프로그래밍 상태에서 다른 상태로 변환하는데 필요한 에너지의 서브 구간에 따라 달라진다. 한 프로그래밍 상태에서 다음으로 진행하는데 필요한 에너지의 서브 구간은 지금부터 "프로그래밍 구간", "프로그램 구간", "프로그램 구간 에너지", "프로그램 펄스", "증분 에너지", "증분 구간" 또는 그에 상응하는 용어로서 불려질 것이다.
본 발명의 일실시예에서, 리셋 상태는 수 0을 나타내고 일정 증분 에너지가 한 프로그래밍 상태에서 다음으로 진행하는데 사용된다. 결국, 모든 프로그래밍 상태들은 에너지가 똑같이 분리되고 각 증분 에너지의 공급은 저장된 수치를 하나씩 증가시키는 것에 해당한다. 따라서, 수 "1"은 리셋 상태에 증분 에너지를 한번 공급함으로써 저장되고; 수 2는 리셋 상태에서 증분 에너지를 두 번 공급함으로써 저장되는 등, 한 메모리 물질에 저장 가능한 최대 수까지 이런 식으로 저장될 수 있다. 일정한 증분 에너지의 공급은 이제부터 "일정한 증분 펄스" 또는 기타 이에 상응하는 말로서 불려질 수 있다.
일실시예에서, 저장될 수 있는 최대 수는 규정되거나 그렇지 않으면 상술한 고저항 정체 영역에서 제공되는 프로그래밍 상태들의 개수와 동일하다. 일정한 증분 에너지가 사용되고 리셋 상태가 고저항 정체 영역의 시작 상태로서 선택되면, 이 실시예의 프로그래밍 상태들의 개수는 프로그래밍 상태들을 분리하는 증분 구간에 의해 분할된 리셋 상태의 세팅 에너지와 같다. 따라서, 예를 들어, 리셋 상태의 세팅 에너지가 열 개에 해당하는 서브 구간들로 나눠지고 그 리셋 상태가 한 프로그래밍 상태에 포함되면 이 실시예에서는 열 개의 프로그래밍 상태들이 나올 수 있다. (증분 에너지의 공급이 없는 경우의 리셋 상태를 포함해) 이 예에서 9개 혹은 그 보다 적은 증분 에너지의 공급은 상 변화 물질을 열 가지 서로 다른 수들 중 하나에 해당하는 프로그래밍 상태에 놓이게 한다. 이 예에서 저장 가능한 최대 수는 열번째 프로그래밍 상태에 해당하고 리셋 상태에 대해 9번의 일정한 증분 펄스를 공급함으로써 얻어진다. 이 최대 저장 가능 수의 값은 리셋 상태가 "0"으로 선택된다면 "9"가 될 것이다. 이 예에서 10번째 증분 에너지량의 공급(즉, 열번째 프로그래밍 상태에 있는 상 변화 물질에 대한 한 증분 펄스의 공급)은 그 상 변화 물질을 열번째 프로그래밍 상태에서 셋 상태로 변환시킴으로써 상 변화 물질을 세팅시킨다.
본 발명의 다른 실시예에서, 셋 상태는 하나의 프로그래밍 상태로서 이용된다. 이 실시예에서 일정 증분 구간이 사용되고 리셋 상태가 한 프로그래밍 상태로서 포함될 때, 프로그래밍 상태들의 개수는 그 증분 구간에 의해 나눠진 리셋 상태의 세팅 에너지 보다 하나 많은 것으로서 주어진다. 따라서, 예를 들어, 리셋 상태의 세팅 에너지가 열개와 동일한 서브 구간들로 나눠지면 11개의 프로그래밍 상태들이 있게 된다. 11번째 프로그래밍 상태는 상 변화 물질의 셋 상태가 될 것이며 10번의 일정 증분 에너지량의 공급에 의해 도달될 수 있다. 최대 저장 가능 수의 값은 이 실시예에서 리셋 상태가 "0"이라고 선택되었을 때 "10"이 될 것이다.
"0"을 리셋 상태의 값으로 선택하는 것이 이 실시예에서 바람직하지만, 다른 프로그래밍 상태가 "0"의 값으로 할당된 실시예들 역시 있을 수 있다. 원리상, 어느 프로그래밍 상태라도 "0" 값이 할당될 수 있다. 리셋 상태가 아닌 한 프로그래밍 상태가 "0"이 되는 것으로 선택된 일정 프로그래밍 구간을 이용하는 실시예들에서, 최대 저장 가능 수는 "0"이 되는 것으로 선택된 프로그래밍 상태에 도달하기 위해 한 프로그램 펄스를 필요로 하는 프로그래밍 상태에 해당할 것이다. 예를 들어, 만일 네번째 프로그래밍 상태가 "0"이 되도록 선택되었으면, 세번째 프로그래밍 상태가 최대 저장 가능 수를 나타낼 것이다. 셋 상태가 프로그램이 상태로서 사용되는 실시예들에서, 셋 상태 역시 "0"으로 선택될 수도 있다. 셋 상태는 모든 다른 프로그래밍 상태들에 비해 낮은 전기 저항에 의해 쉽게 구별가능하기 때문에, "0"의 값을 셋 상태에 할당하는 것이 계산 속도나 처리 알고리즘 효율성의 장점을 제공할 것이다. 다른 것으로 특정되지 않는 한, 대부분의 이하의 논의에서는 "0"을 리셋 상태에 할당하는 것을 기반으로 한다. 그러나, 이러한 선택은 설명의 편의를 위한 것일 뿐 본 발명의 실시를 제한하려는 것이 아님을 알아야 한다.
일정하지 않은 프로그래밍 구간 또는 똑같지 않은 증분 구간들이 사용되는, 앞서의 실시예들에 대한 변형이 본 발명의 추가 실시예들을 구성한다. 여기 사용되는 바와 같이, 일정하지 않은 프로그래밍 구간들은 프로그래밍 상태들이 동일하지 않은 간격의 에너지로 된 프로그래밍 구간들의 어떤 시퀀스를 말한다. 일정하지 않은 프로그램 구간들이 사용될 때, 프로그래밍 상태들의 수는 컴퓨터의 프로그래밍 전략에 따라 달라진다. 여기 사용되는 것처럼, 프로그래밍 전략은 한 프로그래밍 상태에서 다음으로의 프로그램 간격이, 리셋 상태로부터 각 프로그래밍 상태로 공급된 누적 에너지와 함께, 특정하게 규정된, 미리 규정된 에너지의 서브 구간 공급 시퀀스를 포함한다. 프로그래밍 전략은 리셋 상태로부터 셋 상태까지 확장된 일정하거나 일정하지 않은 프로그램 구간들의 임의의 조합에 기초하며, 리셋 상태나 셋 상태를 프로그래밍 상태들로서 포함할 수도 하지 않을 수도 있다. 다르게 특정되지 않으면, 이하의 설명에서는 일정한 프로그램 구간들을 이용하는 프로그래밍 전략을 기본으로 한다. 그러나, 이러한 선택은 논의의 편의를 위한 것으로 본 발명의 실시에 대한 제한을 나타내는 것이 아님을 알야야 한다.
프로그래밍 전략 안에 바람직하게 포함되는 것이 각 프로그래밍 상태가 하나의 서로 다른 데이터 값에 상응하도록 프로그래밍 상태들에 데이터 값들을 할당 또는 결부시키는 것이다. 프로그래밍 상태들에 결부된 데이터 값들은 정수들임이 바람직하다. 그 정수들은 연속적임이 더 바람직하다. 정수값들이 오름 또는 내림 차순의 프로그래밍 에너지와 결부되는 실시예들이 고려된다. 예를 들어, 리셋 상태가 데이터 값 0과 결부될 때, 한 프로그래밍 구간 에너지의 공급은 이 물질을 데이터 값 1과 결부된 프로그래밍 상태에 놓이게 하고, 또 한번의 프로그래밍 구간 에너지의 공급은 그 물질을 데이터 값 2와 결부된 프로그래밍 상태에 놓이게 하는 등의 동작을 수행한다. 이와 달리, 데이터 값들을 프로그래밍 에너지의 내림 차순의 프로그래밍 상태들과 결부시킬 수도 있다. 예를 들어, 셋 상태가 데이터 값 0에 결부될 때, 한 프로그래밍 구간 에너지가 그 셋 상태를 얻기 위해 제공되었던 이전 프로그래밍 상태는 1의 데이터 값과 결부되었을 것이라는 식이다. 데이터 값들과 프로그래밍 상태들과의 결부는 특정 계산 또는 사용자 환경 설정을 도모하도록 다양한 방식들로 수행될 수 있다.
데이터를 수치 형태로 저장하는 것이 바람직한 실시예이지만, 본 발명은 수치 데이터에 국한하지 않는다. 본 발명의 프로그램 상태들은 비수치 데이터에 대해서도 할당될 수 있다. 예를 들어, 고저항 정체 영역을 26가지 프로그래밍 상태들로 세분하고 그 각자에 알파벳의 각 레터를 할당함으로써, 레터들이 저장될 수도있다. 워드 및 기타 레터들의 조합 역시 레터별로 메모리 그룹의 레지스터들 안에 저장될 수 있다.
<레지스터들 및 자리수(place value)>
계산시, 많은 수들을 쓰고 저장하는 기능을 가질 필요가 있다. 많은 수들을 저장하는 한 방법이 본 발명의 메모리 소자들에 사용된 상 변화 물질의 고저항 정체 영역에 많은 수의 프로그래밍 상태들을 할당하는 것이다. 이것은 프로그래밍 상태들 간에 작은 증분 에너지 구간을 선택함으로써 행해질 수 있다. 그리고 나서 많은 수의 프로그래밍 상태들 각각은 서로 다른 숫자(number, 수)에 상응하도록 선택될 것이다.
본 발명에서, 많은 수들이 상술한 메모리 그룹들을 이용해 저장됨이 바람직하다. 메모리 그룹들은 멀티 디지트 수들을 저장하는데 사용될 수 있는 레지스터들을 그루핑한 것으로, 각 레지스터는 본 발명의 메모리 소자들에 할당된 프로그래밍 상태들 중 어느 하나로 프로그램될 수 있는 가장 작은 용량의 상 변화 메모리 물질에 해당함이 바람직하다. 프로그래밍 상태들이 수치값들로 정의 및 결부된 실시예들에서, 한 숫자의 저장은 한 레지스터, 메모리 그룹 또는 상 변화 물질의 용량(volume)을, 저장되는 그 숫자에 결부된 프로그래밍 상태로 변환하기 충분한 량의 에너지를 제공하는 동작이 수반된다. 리셋 상태가 "0"의 값을 가진다고 선택될 때, 하나의 레지스터에 저장될 수 있는 최대 수는 프로그래밍 상태들의 개수 보다 하나 적은 것에 해당한다. 단일 레지스터에 저장할 수 있는 그 최대 수를 초과하는 수들은 두 개 이상의 레지스터들을 필요로 한다.
메모리 그룹에 포함된 메모리 소자들 또는 레지스터들의 개수는 가변적이며 일반적으로 저장 목적을 위한 수들과 결부시키고자 하는 최대 디지트 수에 의해 결정된다. 멀티 디지트 수는 임의적으로 높은 디지트 수를 가질 수 있다. 그러나 실상은, 특정 멀티 디지트 숫자와 결부시킨 디지트 수에 대해 최대 한도를 정하고, 수들을 저장하기 위한 용도의 메모리 그룹에 할당 또는 결부된 특정 최대 디지트 수로 얻어질 수 있는 최대 수를 초과하는 값을 가진 수들의 지수화를 이용함이 바람직하다. 한 수와 결부시킨 최대 디지트 수는 계산의 정밀성과 조작의 효율성 사이의 타협의 소산을 나타낸다. 많은 디지트들은 보다 큰 정밀도를 야기하지만 보다 많은 디지트들이 계산 중에 보다 많은 레지스터들과 보다 많은 수의 레지스터 연산을 필요로 한다는 점에서 처리 속도에 대한 댓가를 치뤄야 한다. 예를 들어, 누군가 각 메모리 그룹에 10 개의 메모리 소자들 또는 레지스터들을 할당하고자 한다. 이 실시예에서 그렇게 했을 때, 그 사람은 10에 달하는 특정 수와 결부된 디지트 수를 제한하여 10 또는 그 보다 적은 디지트를 가진 수들만이 메모리 그룹 안에 저장될 수 있도록 선택할 수 있다. 더 많은 디지트를 가진 수들은 한 메모리 그룹 보다 많은 메모리 그룹을 사용하거나 지수화 방식을 필요로 할 것이다.
일련의 레지스터들이 수들이 저장 및 처리를 위한 수리 체계의 값을 규정하는데 사용될 수 있다. 바람직한 일실시예에서, 리셋 상태가 0이 되게 선택되고, 그 수리 체계의 단위는 프로그래밍 상태들의 개수에 따라 주어지며 하나의 레지스터 안에 최대 저장 가능한 수는 그 단위 보다 하나 작은 수가 된다. 예를 들어, 통상적인 이진 컴퓨터에서는, 두 개의 프로그래밍 상태들이 사용되고 0과 1이라는숫자들이 2진 수리 체계에 따라 저장 및 처리된다. 10개의 프로그래밍 상태들이 사용되는 본 발명의 일실시예에서는 10진 수리 체계에 따라 숫자들이 저장 및 처리된다. 따라서, 본 발명의 컴퓨터의 메모리 소자의 한 레지스터 안에서 사용될 수 있는 10개의 프로그래밍 상태들은 0, 1, 2, 3, 4, 5, 6, 7, 8, 및 9에 해당한다. 다른 수리 단위들에 대한 레지스터들 역시 셋 상태가 0으로 선택되는 실시예들에 대한 레지스터들과 같이 유사하게 설명될 수 있다.
본 발명에 있어서, 사용된 수리 체계 단위의 서로 다른 멱수(power)에 각 레지스터가 상응하는 여러 레지스터들을 이용해 많은 수들이 저장됨이 바람직하다. 각 레지스터는 멀티 디지트 수의 한 디지트씩을 저장하며, 그 수는 레지스터들의 집합 안에 저장되는 멀티 디지트 수를 나타내는 추가 요인으로서 사용될 단위의 서로 다른 멱수의 배수(multiple)에 해당한다. 제1레지스터는 멱수 0으로 주어진 단위의 배수를 저장하는데 사용되고, 제2레지스터는 멱수 1로 주어진 단위의 배수를 저장하는데 사용되고, 제3레지스터는 멱수 2로 주어진 단위의 배수를 저장하는데 사용되는 식으로, 메모리 그룹 안에 한 수에 대해 허용되는 최대 수의 레지스터들이 사용된다. 예를 들어, 8 진수(단위)의 372라는 수는 각각이 리셋 상태가 0에 해당하는 8개의 프로그래밍 상태들을 가진 일련의 세 레지스터들 안에 저장되는데, 제1레지스터에 두 개의 일정한 프로그램 펄스를 공급하고, 제2레지스터에 7개의 일정한 펄스를 공급하고, 제3레지스터에는 세개의 일정한 프로그램 펄스들을 공급함으로써 저장된다.
수리 단위의 서로 다른 멱수들의 배수에 상응하는 수들이 멀티디지트 수의디지트들이다. 가령, 8진수인 372라는 수는 세 디지트를 포함한다; "3"은 8의 두번째 멱수의 배수이고, "7"은 8의 첫번째 멱수의 배수이며, "2"는 8의 0번째 멱수의 배수이다. 각 디지트가 서로 다른 레지스터에 저장된다. 디지트들은 다른 단위 시스템들과 셋 상태가 0으로 선택된 실시예들에 대해서도 유사하게 정의된다.
위에서 나타낸 바와 같이, 숫자들을 저장하기 위해 몇 개의 레지스터들이라도 할당될 수 있다. 10 단위를 이용하는 일실시예에서, 열 개의 레지스터들이 각 메모리 그룹 마다 할당되며, 그 메모리 그룹에 저장가능한 최대 멀티 디지트 수는 각 10 개의 레지스터들 마다 "9"의 값에 해당할 것이다; 즉 1010-1. 한 메모리 그룹으로 할당된 모든 레지스터들에 걸쳐 저장 가능한 최대 숫자 보다 높은 숫자들은 지수화를 이용하거나 두 개 이상의 메모리 그룹들을 결합해 사용해야 한다.
한 메모리 그룹에 할당된 모든 레지스터들 보다 적게 요구되는 숫자들 역시 저장될 수 있다. 이러한 숫자들은 소정 수를 나타내는데 필요로 되지 않는 위치(place) 값들에 해당하는 레지스터들 안에 0을 포함시킴으로써 저장될 것이다. 예를 들어, 10 단위의 수리 체계에 10개의 레지스터들이 할당된 메모리 그룹에 372라는 수를 저장한다고 하자. 이 수는 저장을 위해 세 개의 레지스터만이 필요로 되며 1000이나 그 보다 높은 자리수들에 해당하는 레지스터들에는 0들을 포함시키고, 100의 자리수에 해당하는 레지스터에는 "3"을, 10의 자리수에 해당하는 레지스터에는 "7"을, 1의 자리수에 해당하는 레지스터에는 "2"를 포함시킴으로써 저장될 수 있다. 한 수를 표현하는데 요구되는 최대 자리수을 초과하는 자리수들에 해당하는레지스터들에 포함된 0들을 이제부터 리딩 제로(leading zero)들이라 부른다. 이 실시예에서 372라는 수는 엄밀히 0000000372라고 저장될 것이며 7 개의 리딩 제로들을 포함할 것이다. 한 수를 표현하는데 필요한 최대 자리수 보다 적은 자리수들에 상응하는 레지스터들에서 나타나는 0들은 리딩 제로가 아니다. 이러한 제로들을 이제부터는 비리딩(non-leading) 제로 또는 내부 제로라고 할 것이다.
<읽기>
저장된 숫자들의 읽기는 레지스터들에 대한 적절한 검사 또는 조작을 필요로 한다. 셋 상태가 프로그래밍 상태로서 사용될 수 있을 때, 그것은 보다 낮은 전기 저항을 통해 다른 프로그래밍 상태들과 쉽사리 구분 가능하다. 그러나 다른 프로그래밍 상태들이 전기 저항 곡선의 고저항 정체 부분에 놓여 있고 실질적으로 동일한 전기 저항을 가진다. 결과적으로, 저항의 전기 저항치의 직접적인 측정은 프로그래밍 상태들에 대한 구분 및 본 발명의 레지스터들의 읽기를 위한 수단을 제공하지 못한다. 다른 방법들이 요구된다.
한 레지스터에 저장된 값을 읽기 위한 방법은 전지 저항 곡선의 고저항 정체 부분에 걸친 상 변화 물질의 진행과 결부된 물리적 변화를 식별하는 것이다. 위에서 나타낸 바와 같이, 고저항 정체 부분의 한 포인트로 묘사되는 사 변화 물질에 에너지를 공급하는 것이 반드시 셋 상태로의 일반 진행을 일으킨다. 결국, 에너지의 공급(일반적으로 프로그래밍 펄스들의 형태인)은 상 변화 물질을 어떤 식으로든 변화시킨다. 물질을 변화시키는 것이 전기 저항의 큰 변화를 발생하는 것이 아니라는 사실은 어떤 다른 물리적 특성이 고저항 정체 영역의 프로그래밍 상태들을 구별하는데 사용될 수 있다는 가능성을 배제하는 것은 아니다. 적절한 물리적 특성의 식별은 상 변화 물질의 물리적 상태로의 공급 에너지의 영향에 관한 지식 및 숙고에 의해 도움을 받을 수 있다.
이론에 의해 구속되기를 바라지는 않지만, 본 발명의 발명자들은 전기 저항 곡선의 고저항 정체 영역에 있는 상 변화 물질로의 에너지 공급이 상 변화 물질에 존재하는 결정질의 분해를 증가시킬 수도 있다고 믿고 있다. 고저항 정체 영역으로 묘사된 상 변화 물질들은 지금부터 "결정질 crystallites"이라고 불리는 결정 물질 영역을 포함하는 비결정 물질이라고 간주된다. 결정질의 분해 규모는 리셋 상태에서 가장 적고 물질이 고저항 정체 영역에서 셋 상태로 진행해 나가면서 에너지 공급에 따라 지속적으로 증가된다. 에너지 공급은 리셋 상태에 존재하는 결정질의 크기를 증가시키거나, 새 결정질을 생성하거나 그 두 결과를 모두 발생시킬 수 있다. 결정질 상태가 비결정 상태 보다 높은 전기 전도성(보다 낮은 전기 저항)을 가지므로, 세팅 변환은 상 변화 물질의 규모 안에서 연속적인 결정질의 네트웍 형성과 동시에 일어난다고 간주된다. 리셋 변환은 이 연속적 네트웍의 붕괴 및 적어도 결정질의 일부분의 비결정 상태로의 전환을 수반한다고 간주된다. 비결정 물질의 형성은 결정질의 용해(melting)와 그에 뒤따르는 급랭(quenching) 또는 결정질 안에서의 원자들 또는 원자들의 그룹들의 이동성의 향상을 통해 일어난다.
리셋 상태와 셋 상태 사이의 에너지 간격은 리셋 상태에 존재하는 결정질의 크기에 의해 영향을 받을 수 있다. 보다 작은 결정질이 리셋 상태에 존재할 때, 결정질의 연속 네트웍을 만들기 충분한 규모의 추가 에너지 증가가 필요하다. 결국, 프로그래밍 상태들에 대한 고저항 정체 구간들에서 이용 가능한 에너지 간격을 제어할 수 있다. 본 발명에 적합한 많은 상 변화 물질들은 그들의 리셋 상태에서 작은 결정질을 가지고 있다고 간주된다.
상 변화 물질이 고저항 정체 상태에서 셋 상태로 진행해 가면서 발생될 수 있는 결정질 단위 분해의 어떤 변화를 측정할 수 있는 물리적 기술이 사용될 수 있다. 예를 들어, 결정질의 크기는 TEM과 같은 현미경 검사 기술이나 고 분해능의 x 레이 회절 기술을 통해 측정될 수 있다. 이러한 기술들은 결정성을 측정하고 리셋 상태에서 셋 상태로의 진행을 평가하는데 사용될 수 있다. 프로그래밍 간격이 알려지면, 각 프로그래밍 상태와 결부된 결정질의 분해 용량이 정해질 수 있고 레지스터들을 읽기 위한 상관성이 발전될 수 있다.
상 변환 물질의 프로그래밍 상태들의 이산적 성격 역시, 물리적 특성의 변화를 감시하고 상관시킬 필요 없이, 레지스터들의 읽기를 가능하게 한다. 고저항 정체 영역에서의 위치들은 서로 다른 프로그램 상태들을 분별시키는 기본적 특성이다. 고저항 정체 영역 상의 위치들은 두 방법 가운데 하나에 의해 고려될 수 있다. 첫번째로, 위치는 고저항 정체 영역의 특정 프로그래밍 상태와 결부된 위치에 도달하기 위해 리셋 상태에 부가될 필요가 있는 프로그래밍 펄스들 또는 에너지의 증분 구간들의 수 또는 크기에 따라 고유하게 표현 또는 라벨링된다. 이 실시예에서, 요구되는 만큼의 프로그래밍 펄스들의 수(또는 에너지의 증분 구간들 또는 크기)는 쓰기 또는 저장 프로세스로부터 알려지며 읽기 프로세스 중 프로그래밍 상태 및 그 저장 값을 식별하는 방법으로서 사용된다. 예를 들어, 소정 레지스터에 공급되는 펄스들의 개수를 기록하기 위해, 펄스 카운터가 사용될 수 있다.
보다 바람직한 두번째 방법에서, 고저항 정체 영역의 위치는 셋 상태에 도달하는데 필요한 에너지량이나 프로그래밍 펄스들 또는 증분 구간들의 수에 따라 고유하게 표현되거나 라벨링될 수 있다. 이 실시예에서, 가령, 한 레지스터에 저장된 값은, 리셋 상태의 셋 에너지가 나눠졌던 서브 구간들의 수에서, 셋 상태에 도달하는데 필요로 된 프로그래밍 펄스들의 수를 감산함으로써 정해질 수 있다. 이 읽기 프로세스는 셋 상태가 그 낮은 저항으로 인해 쉽게 검출될 수 있는 고유하고도 분명한 상태이기 때문에 이점이 있다. 읽기는 먼저 프로그래밍 펄스를 레지스터에 공급하고 나서 그 저항을 측정함으로써 수행된다. 측정된 저항이 고저항 정체 영역과 결부된 값에 해당하면, 상 변화 물질이 아직 저저항의 셋 상태에 있지 않은 것이다. 프로그래밍 펄스를 공급하고 그 저항의 저항값을 측정하는 프로세스를 반복함으로써, 셋 상태에 도달하는데 필요한 프로그래밍 펄스들이 정해질 수 있다. 프로그래밍 상태의 총 개수와의 비교가 레지스터에 저장된 값에 해당하는 차를 제공하는데 이용된다.
셋 상태가 프로그래밍 상태에 포함되느냐의 여부에 따라, 레지스터에 저장된 값을 결정하는 선행 프로세스가 선택적인 조항으로 동등하게 표현될 수 있다. 셋 상태가 프로그래밍 상태로 포함되는 실시예들에서는, 리셋 상태의 셋 에너지가 세부 분할 되었던 서브 구간들의 개수가 숫자들을 저장 및 처리하는데 사용된 수리 체계의 단위와 동일할 것이다. 그 경우, 레지스터에 저장된 값은 그 수리 체계의 단위에서 레지스터를 셋 상태로 변환하는데 필요로 한 프로그래밍 펄스들의 수를감산함으로써 정해진다. 여기 사용되는 것과 같이, 레지스터에 저장된 값은 레지스터가 존재하거나 변환된 프로그래밍 상태와결부된 수치라고 할 수 있다.
예로서, 4 단위 수리 체계 및 셋 상태가 프로그래밍 상태로 사용되지 않는 일정한 프로그래밍 구간 전략에 있어서 디지트 "1"을 저장하는 레지스터 읽기를 고려할 수 있다. 셋 상태가 프로그래밍 상태로서 사용되지 않을 때 네 개의 서브 구간들이 4 단위 수리 체계에 필요로 된다. 이 4개의 서브 구간들은 네 개의 프로그래밍 상태들(리셋 상태 포함) 및 셋 상태를 제공한다. 이 예에서, 네개의 프로그래밍 상태들은 증가하는 프로그래밍 에너지 순으로 디지트 0, 1, 2, 및 3에 해당한다. 이 예의 레지스터의 "1" 저장이란, 한 프로그래밍 펄스가 리셋 상태에 제공되었고 상 변화 물질이 제2프로그래밍 상태에 있다는 것을 의미한다. 그 레지스터를 읽기 위해 한 프로그래밍 펄스를 제공하고 레지스터의 저항을 측정하여 레지스터가 셋 상태에 도달했는지의 여부를 검사한다. 아직 도달되지 않았으면, 셋 상태에 도달할 때까지 펄스 공급 및 저항 측정을 반복한다. 이 예에서, 셋 상태는 제3프로그래밍 펄스의 제공에 의해 도달된다. 결국, 저장된 수는 (수리 체계의 단위 또는 서브 구간의 수인) 4에서 (레지스터를 셋 상태로 전환시키는데 필요했던 프로그래밍 펄스의 수) 3을 뺀 값이 된다. 따라서 저장 디지트는 "1"이 된다.
셋 상태가 프로그래밍 상태로 사용되는 상황에는 다른 읽기 프로세스들이 적용된다. 셋 상태가 프로그래밍 상태로서 사용될 때, 서브 구간의 개수는 사용되고 있는 수리 체계의 단위에 쓰이는 최대 디지트 값의 값과 같고 통상적으로, 셋 상태는 레지스터에 저장될 수 있는 최대 디지트에 해당한다. 결국, 레지스터에 저장되는 디지트는 사용되는 수리 체계 단위의 레지스터에 저장될 수 있는 최대 디지트 값에서 레지스터를 셋 상태로 전환시키는데 필요한 프로그래밍 펄스들의 개수를 감산함으로써 얻어질 수 있다. 저장 가능한 최대 디지트는 그 단위 보다 하나 적은 수이다.
예를 들어, 4 단위 수리 체계 및 셋 상태가 프로그래밍 상태로 포함된 일정한 프로그래밍 구간 전략에서 "1"을 저장한 레지스터의 읽기를 고려할 수 있다. 셋 상태가 프로그래밍 상태로 사용될 때 4 단위 수리 체계에서는 세 개의 서브 구간이 필요하다. 세 서브 구간들은 리셋 상태 및 셋 상태를 포함하는 네 개의 프로그래밍 상태들을 제공한다. 네 프로그래밍 상태들은 디지트 0, 1, 2, 및 3에 해당한다. 이 예에서 레지스터의 "1" 저장은 한 프로그래밍 펄스가 리셋 상태에 대해 제공되었었고 상 변화 물질이 제2프로그래밍 상태에 있다는 것을 의미하다. 이 레지스터를 읽기 위해서는, 한 프로그래밍 펄스를 제공하고 그 레지스터의 저항을 측정하여 그것이 셋 상태에 도달했는지의 여부를 체크한다. 도달하지 않았으면, 셋 상태에 도달할 때까지 그런 동작을 반복한다. 이 예에서, 셋 상태는 두번째 프로그래밍 펄스를 공급함으로써 도달된다. 결국, 저장되는 디지트는 (사용중인 수리 체계의 단위로 한 레지스터에서 저장가능한 최대 디지트 값 또는 서브 구간들의 개수) 3에서 (레지스터가 셋 상태로 전환되는데 필요한 프로그래밍 펄스들의 개수) 2를 뺀 값이 된다. 즉, 저장된 디지트는 "1"이 될 것으로 보여진다.
한 수를 저장하고 있는 레지스터를 셋 상태로 전환시키는데 필요로 되는 프로그래밍 펄스들의 개수를 카운트하는 동작을 수반하는 읽기 프로세스에서, 레지스터는 읽기의 마지막에서 셋 상태로 남아 있는다. 원한다면, 레지스터가 최초의 값으로 복귀될 수 있다. 읽기 프로세스가 최초에 저장된 수의 값을 드러냈기 때문에, 레지스터는 먼저 레지스터를 리셋하고 그리고 나서 최초의 디지트 값에 상응하는 수의 프로그래밍 펄스들을 공급함으로써 최초의 값으로 복구될 수 있다.
리셋 프로세스는 고저항 상태를 새롭게 생성하는데 충분한 크기의 에너지를 셋 상태에 대해 공급하는 프로세스를 수반한다. 위에서 나타낸 바와 가팅, 리셋 프로세스는 상 변화 물질의 양태를 제어하는 도 1에 도시된 것과 같은 전기 저항 곡선의 세팅후 영역에서 일어난다. 고저항 정체 영역으로부터 셋 상태로의 천이는 한 방향이고 이 전기 저항 곡선의 왼편으로 이동함으로써 반대가 될 수 없다. 결국, 상 변화 물질은 최초의 고저항 정체 상태로 "언셋(unset)" 될 수 없다. 세팅 후 영역의 가장 오른쪽 마지막 포인트는 상 변화 물질의 새로운 고저항 정체기의 형성에 해당한다. 본 발명의 적절한 에너지 소스들은 상 변화 물질을 리셋하는데 충분한 에너지를 제공할 수 있다.
위에서 나타낸 바와 같이, 메모리 그룹들에 저장된 많은 수들이 하나 이상의 리딩 제로들을 포함한다. 리딩 제로들의 빈번한 발생과 많은 계산 동작들이 리딩 제로들을 고려할 필요가 없다는 사실은 리딩 제로들의 존재를 즉시 검출할 수 있는 기능을 가지는 것이 유리하다는 것을 나타낸다. 10개의 레지스터들이 각 메모리 그룹에 할당되어 있는 10 단위 수리 체계에서 372라는 수를 128이라는 수에 가산하는 경우를 고려할 수 있다. 372는 0000000372로 저장되고 128은 000000128로 저장될 것이다. 각 수에 7개의 리딩 제로들이 존재하며 이들은 여러 수학적 연산들에의해 동작될 필요가 없다. 예를 들어, 이 두 수의 가산 또는 감산은 리딩 제로들의 조작을 요구하지 않는다. 결국, 리딩 제로들의 존재를 즉시 검출하여 여러 수학적 연산 중에 이들을 스킵하거나 무시할 수 있도록 하는 것이 보다 효율적이라고 예상할 수 있다.
리셋 상태가 0에 해당하는 프로그래밍 상태로서 선택될 때, 상술한 프로세스에 따른 리딩 제로 읽기는 리딩 제로를 셋 상태로 변환할 몇 개의 프로그래밍 펄스들의 추가를 필요로 할 것이다. 이 프로그래밍 펄스들의 추가는 리딩 제로를 포함하는 각 수의 각 레지스터 마다 행해져야 한다. 결국, 수학적 연산은 리셋 상태가 0에 해당하는 프로그래밍 상태로 선택될 때 수 많은 기능적으로 중요하지 않은 조작들을 필요로 할 것이다.
계산 효율성을 증진하기 위해 셋 상태가 0에 해당하는 프로그래밍 상태가 되도록 할당하는 것이 바람직하다. 그렇게 함으로써, 리딩 제로는 전기 저항 측정을 통해 즉시 식별되게 되고, 리딩 제로를 검출하기 위한 프로그래밍 펄스의 추가는 필요로 되지 않는다. 결국, 계산 효율성이 향상될 수 있게 된다. 위에서 나타낸 바와 같이, 본 발명은 셋 상태가 0에 해당하는 프로그래밍 전략을 한 실시에로서 포함한다.
<계산 방법>
숫자들과 디지트들의 저장 외에, 프로그래밍은 저장된 데이터를 원하는 방식으로 처리하기 위한 목적으로 설계된 알고리즘의 전개 및 구현을 수반한다. 예를 들어, 컴퓨터는 가산, 감산, 곱셈, 나눗셈의 네 가지 수리 연산을 수행할 필요가있다. 상 변화 물질의 멀티 상태 저장 기능의 효과적 활용은 새로운 알고리즘의 독자적 개발을 필요로 한다. 통상의 이진(바이너리) 알고리즘들은 단순한 두 상태 메모리 소자들에 대해 설계되었다. 멀티 상태(다중 상태) 또는 비이진 계산에 고유한 이점들의 구현은 프로세싱 알고리즘의 재고를 필요로 한다. 멀티 상태 상 변화 메모리 물질의 데이터 저장 및 프로그래밍 특성에 대한 특정한 고려가 포함되어져야 한다. 멀티 상태 메모리 소자들에 대해 설계되는 알고리즘들에 대한 보다 완전한 논의가 지금부터 제공될 것이다.
본 발명의 특정 계산 방식 또는 알고리즘의 세부적인 전개는 상 변화 메모리 물질 및 그 동작에 대한 기본적 전체 또는 선택을 근거로 한다. 결정되어야 할 기본적 속성 가운데, 메모리 그룹 당 할당된 레지스터들의 수, 프로그래밍 상태들의 수, 수리 단위, 프로그래밍 상태들과 결부되는 데이터 값들, 및 셋 상태가 프로그래밍 상태로서 포함되는지의 여부가 결정된다. 처리 및 저장의 기본 원리는 어떤 선택이 이뤄지는지와 관계없이 유사하지만, 특정 세부 내용은 변화할 수 있다. 본 발명의 사용자들은 관련 동작 패러미터들, 조건들 및 환경을 설정하는데 있어 많은 여지를 가지게 된다.
계산 방법들에 대한 다음의 논의에 있어서, 리셋 상태가 "0"으로 선택된 상태를 예로서 고려할 때, 프로그래밍 상태들의 수는 수리 체계의 단위와 동일하고, 셋 상태는 프로그래밍 상태로서 포함되지 않는다. 고정된 개수의 레지스터들이 멀티 디지트 수의 저장을 위해 각 메모리 그룹에 할당되고 이 할당 개수는 모든 메모리 그룹 마다 동일하다고 전제한다. 이러한 레지스터들의 할당은 개개의 멀티 디지트 수에 사용될 수 있을 메모리 물질의 최대 크기를 선택하고 그에 따라 그 사용 가능한 메모리 물질의 총 용량을 알맞는 메모리 그룹들로 구획짓는 것을 말한다. 어떤 개수의 레지스터들이라도 메모리 그룹들로 할당될 수 있다. 레지스터의 할당 개수는, 한 수에 대해 저장될 수 있는 최대 디지트 수를 설정한다는 것으로 메모리 그룹안에 저장될 수 있는 가장 큰 수의 크기에 영향을 준다. 이러한 최대 디지트 개수는 지수화가 필요하게 될 때 십진수에에 대해 가능한 정밀도 및 계산 중에 고려되어야 할 리딩 제로의 개수를 설정할 것이기 때문에 계산 효율성에 영향을 줄 수 있다. 본 발명의 일실시예에서, 할당된 레지스터 개수는 수리 체계의 단위와 같다.
메모리 그룹에 할당된 레지스터들의 개수는 한 수에 대해 저장될 수 있는 최대 디지트 수에 해당한다. 한 수를 저장하는 것은 할당된 레지스터 개수 보다는 적은 레지스터를 필요로 할 것이다. 위에서 나타낸 바와 같이, 이러한 상황이 발생할 때, 그 수는 사용중인 수리 체계의 단위와 결부된 자리수(place value) 시스템에 따라 할당된 레지스터들의 개수 안에서 레지스터별(디지트별)로 저장된다. 그 수가 모든 할당된 레지스터들을 필요로 하지 않으면, 사용되지 않는 레지스터들은 그 수에 계속 할당된 상태이지만 "0"을 포함하여 저장된 수의 값에 기여하지 않는다. 이러한 사용되지 않는 레지스터들은 필요하다면 그 저장된 수에 대한 처리나 연산을 위해 사용가능한 상태로 유지되는 리딩 제로들을 포함한다.
많은 본 발명의 계산 방법들이 처리 단계에 대한 반복 제공을 통해 메모리 그룹들의 레지스터별 조작에 관여한다. 레지스터들을 처리하기 위해, "레지스터포인터"나 "카운팅 레지스터"를 가지고 레지스터들을 라벨링하거나 식별하는 것이 편리하다. 여기 사용된 것과 같은 "레지스터 포인터" 및 "카운팅 레지스터"는 한 메모리 그룹 안에 있는 개별 레지스터들을 특정하거나, 식별하거나 구별하는 것에 관한 것이다. 한 메모리 그룹 안의 위치는 카운팅 레지스터에 의해 표시된다. 메모리 그룹의 각 레지스터는 카운팅 레지스터의 고유한 세팅, 값, 또는 상태와 결부된다. 카운팅 레지스터의 각 세팅, 값, 또는 상태는 계산 시스템의 수리 단위내 서로 다른 자리수에 동일하게 해당한다고 볼 수 있다. 계산 방법, 알고리즘 또는 처리 단계의 구현 중에, 카운팅 레지스터의 세팅, 값, 또는 상태는 고정되고 관련 레지스터는 계산 방법 또는 처리 단계의 목적에 따라 연산, 처리 또는 조작된다. 일단 레지스터가 동작되었으면, 카운팅 레지스터가 증가되고 방법 또는 처리 단계의 목적에 따라 다음 레지스터가 연산, 처리 또는 조작된다. 계산 방법 안의 방법이나 처리 단계는 카운팅 레지스터가 소정 최종 상태까지 증가 또는 도달될 때 종료된다. 일반적으로, 최종 상태는 한 메모리 그룹내 레지스터들의 모든 또는 한 적합한 부분 집합의 처리에 해당한다. 즉, 카운팅 레지스터의 구현 동작은, 지시된 레지스터에서 발생하는 계산 방법이나 처리 단계를 가지고, 레지스터 포인터를 한 레지스터에서 다음 레지스터로, 혹은 수리 체계의 한 자리수에서 다음 자리수으로 이동하는 것이라고 볼 수 있다. 멀티 디지트 수들에서, 각각의 레지스터는 서로 다른 디지트에 상응하고 레지스터 포인터의 증가는 한 디지트에서 다른 디지트로의 진행에 다름 아니다. 카운팅 레지스터는 카운팅 레지스터와 결부된 메모리 그룹의 레지스터들과 동일한 개수의 상태들을 가질 수도 갖지 않을 수도 있다. 카운팅 레지스터의 상태의 개수가 카운팅 레지스터와 관련된 메모리 그룹에 저장된 비리딩(non-leading) 제로 디지트들의 수와 적어도 동일함이 바람직하다. 일 실시예에서, 카운팅 레지스터 상태들의 수는 메모리 그룹에 할당된 레지스터들의 개수와 동일하다.
카운팅 레지스터는 메모리 그룹 외부의 회로이거나 알고리즘에 의해 동작되고 있는 레지스터나 메모리 소자로부터 분리된 상 변화 메모리 물질의 일부일 수 있다. 바람직한 일실시예에서, 카운팅 레지스터는 한 단위의 상 변화 물질이며 메모리 그룹의 레지스터들의 프로그래밍 상태들에 상응하는 프로그래밍 상태들을 포함한다. 다른 바람직한 실시예에서, 카운팅 레지스터는 한 단위의 멀티 상태 상 변화 메모리이고, 그 카운팅 레지스터의 최종 사태는 상 변화 물질의 셋 상태이다. 그러한 실시예에서, 계산 방법, 알고리즘 또는 처리 단계는 카운팅 레지스터가 셋 상태에 도달할 때 종료된다. 셋 상태를 카운팅 레지스터의 최종 상태로 선택하는 것은 그것이 쉽게 검출될 수 있어서 계산 방법 또는 처리 단계를 위한 편리한 최종 포인트를 제공할 수 있기 때문에 유리하다. 카운팅 레지스터의 초기 상태는 카운팅 레지스터가 한 수의 마지막 디지트에 대해 계산 방법의 작용에 따른 증가에 의해 셋 상태로 도달되도록 설정된다. 예를 들어, 카운팅 레지스터에 대한 한 프로그래밍 펄스의 제공은 멀티 디지트 수의 한 디지트에서 다음 디지트로의 진행을 나타낸다. 멀티 디지트 수의 모든 디지트들이 계산 방법에 의해 작용되었을 때, 한 프로그래밍 펄스의 추가 제공은 카운팅 레지스터가 셋 상태로 변환되도록 만듦으로써 방법에 의한 처리의 종료를 의미한다.
이하에서 제공될 계산 방법들 또는 알고리즘들의 설명에서, 알파벳 글자들(가령, "a", "b", "c")이 구별 가능한 메모리 그룹들을 나타내는데 사용된다. 한 메모리 그룹 안의 레지스터들은 아래첨자(subscript)로 구별된다. 따라서, 예를 들어, b0와 b1은 메모리 그룹 b안의 서로 다른 두 레지스터들을 나타내며 메모리 그룹 b에 저장된 수의 서로 다른 두 디지트들에 해당한다. "r"이라는 글자는 카운팅 레지스터를 나타내는데 사용되는 인덱스이다. 서로 다른 r 값들은 한 메모리 그룹 안의 서로 다른 레지스터들이 가리켜지고 있고 계산 방법에 의해 동작되고 있음을 나타낸다. r의 초기 및 최종값을 이제부터 rinitial(r 초기값) 및 rfinal(r 최종값)이라고 각각 칭한다. r 최종값은 상술한 최종 상태에 해당하며 카운팅 레지스터의 셋 상태에 결부됨이 바람직하다. 인덱스 r은 또 특정 혹은 현재의 r 값과 결부된 메모리 그룹의 레지스터를 나타내는 아래첨자로서 사용될 수도 있다. 그에 따라, 예를 들어, br은 r의 현재 값과 결부된 메모리 그룹 b의 레지스터와 그 안에 저장된 디지트를 나타낸다. r 초기값 및 r 최종값을 포함하는 r 값은 일반적으로 계산 방식, 알고리즘 또는 처리 단계의 목적에 따라 설정 및 변경된다.
어떤 계산 방법들에서는, 소정 카운팅 레지스터를 둘 이상의 메모리 그룹들에서 동시에, 혹은 연속적으로 발생하는 처리 단계들과 결부시키는 것이 효과적이다. 이러한 상황에 있어서, 하나의 카운팅 레지스터 인덱스 r은 작용 중인 모든 메모리 그룹들에 대해 사용되고 다르게 기술되지 않는다면 r의 소정 값은 서로 다른 메모리 셀들 각각에 있는 해당 레지스터들을 나타낸다고 전제한다. 즉, r의 소정 값은 서로 다른 메모리 그룹들 안의 동일한 자리수 위치를 나타내는 디지트들을 나타낸다. 가령, 만일 ar이 r의 특정 값에 대한 십자리 디지트를 나타내면, br역시 r의 동일한 값에 대한 십자리 디지트를 나타낸다. 여기서 메모리 그룹 a 및 b는 알고리즘이나 처리 단계들에 의해 함께 작용되고 있는 것들이다.
어떤 계산 방법들에서는 특정 메모리 그룹에 저장된 멀티 디지트 수의 서로 다른 디지트들에 대한 동작 또는 연산을 목적으로 두 개의 카운팅 레지스터들을 규정하는 것이 효과적이다. 이하의 알고리즘들에서, 두번째 혹은 그 이상의 카운팅 레지스터들이 s로 시작하는 글자들로 연속해서 라벨링될 것이다. 따라서, r은 첫번째 카운팅 레지스터를 나타내고, s는 두번째 카운팅 레지스터를, t는 세번째 카운팅 레지스터를 나타내는 식이다.
바람직한 일실시예에서, 카운팅 레지스터로 할당된 메모리 물질의 크기는 디지트들을 저장하는데 사용되는 메모리 그룹들 내의 레지스터들과 결부된 메모리 물질의 크기와 같고 동일한 수의 프로그래밍 상태들을 포함한다. 이 실시예는 사용되는 에너지 소스가 메모리 그룹들 안의 레지스터들과 카운팅 레지스터 모두에 대해 동일한 방식으로 공급될 수 있기 때문에 편리하다. 이 실시예는, 저장된 수들과 결부된 디지트 개수가 수리 체계의 단위와 동일하다는 것을 함축하고 있다. 저장된 수들과 결부된 디지트 개수가 수리 체계의 단위 보다 크거나 작은 실시예들 역시 있을 수 있다. 그러한 실시예들은 카운팅 레지스터와 메모리 그룹들에 대해 서로 다른 에너지 소스들을 필요로 하고 혹은 그것이 카운팅 레지스터로 공급될 때메모리 그룹들에 대해 사용되는 에너지 소스의 적절한 변형을 필요로 한다. 에너지 소스의 피크(peak) 강도(intensity)나 듀레이션(duration) 등은 카운팅 레지스터와 메모리 그룹들에 대해 서로 다르게 정의될 것이다. 이와 다른 선택적 사항으로서, 카운팅 레지스터와 관련된 프로그래밍 구간이 저장된 디지트들에 대해 사용된 레지스터들에 대해 이용한 프로그래밍 구간과 다를 수 있다.
이하의 알고리즘 예들에서 리셋 상태가 "0"으로 선택되고, 메모리 그룹 및 카운팅 레지스터의 프로그래밍 상태들이 일정하고, 메모리 그룹의 레지스터들 내 프로그래밍 상태의 개수가 수리 체계의 단위와 동일하고, 셋 상태가 프로그래밍 상태로서 포함되지 않으며, 카운팅 레지스터에 대한 프로그래밍 상태들의 개수가 메모리 그룹 내 레지스터들에 대한 프로그래밍 상태들의 개수와 동일하며, 카운팅 레지스터의 최종 상태가 셋 상태인 본 발명의 실시예들이 예시된다. 이 조건들은 예시용으로 선택되었을 뿐 본 발명의 실시를 한정할 목적으로 사용되어서는 안된다. 적절하다면, 다른 실시예들에 들어 맞는 사항들이 포함될 수 있다. 또한, 여기 기술되는 많은 계산 방법들은 레지스터를 증가시키기 위한 단계들을 포함한다. 레지스터 증가 프로세스는 프로그래밍 펄스의 공급을 의미한다. 예를 들어, 하나 증가가 한 프로그래밍 펄스의 제공에 따라 이뤄지고 레지스터를 한 프로그래밍 상태에서 다른 상태로, 혹은 최종 프로그래밍 상태에서 셋 상태로 변환하는 것에 해당한다.
이제 계산 방법들의 특정 실시예들에 대해 기술될 것이다. 어떤 한 방법이나 방법들의 조합 또는 모든 방법들이 특정 상 변화 물질의 용량을 가지고 달성될수 있다. 반드시 필요로 되는 것은 아니지만, 상 변화 물질들의 서로 다른 크기들 안에서 서로 다른 계산 방법들이 이뤄질 수 있다. 계산 효율성을 도모하기 위해, 특정한 크기의 상 변화 물질 안에서 가능한 많은 계산 방법들을 수행하는 기능을 포함함이 바람직하다. 데이터의 적절한 저장, 처리, 삭제, 및 다시 쓰기를 통해, 본 발명에서 이러한 능력이 얻어질 수 있다. 일반적으로, 한 계산 방법은 두번째 계산 방법이 특정 크기의 상 변화 물질 안에서 구현되기 전에 시작 및 종료될 것이다. 많은 다른 계산 방법들을 한 특정 크기의 상 변화 물질 안에서 사용할 수 있는 다재다능함이 본 발명의 한 특징이다. 바람직한 일실시예에서, 가산, 감산, 곱셈, 및 나눗셈의 수학적 연산이 여기 개시된 계산 방법들을 이용하는 특정 크기의 상 변화 물질들 내에서 수행될 수 있다. 다른 바람직한 실시예에서, 감산, 곱셈, 및 나눗셈의 수학적 연산이 여기 개시된 계산 방법들을 이용하는 특정 크기의 상 변화 물질 안에서 수행될 수 있다. 특정 크기의 상 변화 물질 안에서, 개시된 모든 계산 방법들에 포함된 계산 방법들의 다른 기타 조합에 대한 수행 기능이 본 발명의 실시예를 이룬다.
<리셋(resetting)>
계산 방법의 구현에 있어서, 보통 하나 이상의 레지스터들 또는 메모리 그룹들을 리셋하는 것이 필요 내지는 바람직하다. 결과적으로, 그것은 레지스터들과 메모리 그룹들을 리셋하는 알고리즘을 개발하는데 유용한다. 본 발명의 멀티 상태 상 변화 메모리 그룹들을 리셋하는 기본 단계는 그 그룹의 모든 레지스터들을 리셋하는 것이다. 상술한 바와 같이, 리셋 프로세스는 상 변화 물질을 리셋하기 충분한 에너지량의 공급을 수반한다. 일실시예에서, 그 에너지는 리셋 에너지 펄스의 형태로 주어지고 리셋 알고리즘의 핵심은 한 리셋 펄스를 메모리 그룹의 각각의 레지스터로 공급하는 것에 관여한다. 리셋 펄스들은 메모리 그룹의 개별 레지스터들에 대해 독자적이고 연속적으로 제공된다. 모든 레지스터들에 대해 이러한 처리를 수행함으로써, 메모리 그룹이 리셋된다. 리셋 상태가 0으로 할당된 프로그래밍 상태인 실시예들에서, 리셋은, 리딩 제로들을 포함하는 레지스터들을 배제하고 0을 포함하지 않은 가장 높은 자리수가 있는 레지스터부터 시작되는 레지스터들에 리셋 펄스 또는 리셋 에너지량을 공급하고 메모리 그룹의 나머지 레지스터들에 대해 레지스터별로 리셋 펄스를 차례로 공급함으로써 수행된다.
리셋 알고리즘의 개략적 묘사가 도 2에 도시되어 있다. 이 알고리즘은 리셋 메모리 그룹 a에 대해 설계된 것임을 나타내기 위해 RESET(a)로 라벨링된다. 이 알고리즘은 T10 단계에서 시작된다. 카운팅 레지스터의 초기화가 일어난다(T11). 초기화는 카운팅 레지스터를 초기 프로그래밍 상태로 놓음으로써 r 초기값을 설정하는 것을 말한다. 초기화는 동작될 최초의 레지스터를 가리키는 것과 같다. T12, T13, 및 T14 단계들은 알고리즘의 기본 처리 단계를 나타내는 반복 루프를 이룬다. T12 단계에서, 레지스터 카운터 r의 현재 값에 해당하는 레지스터 ar이 리셋된다. 이 루프를 통한 최초 경로에서, r값은 r 초기값이고, 메모리 그룹 a의 첫번째 레지스터가 리셋된다. 루프의 다음 경로들에서, r 값은 증가되고 메모리 그룹의 나머지 레지스터들이 리셋된다. T12 단계는 리셋 에너지 펄스의 공급을 통해일어난다. T13 단계에서, 카운팅 레지스터는 메모리 그룹의 다음 레지스터를 나타내도록 하나씩 증가된다. 카운팅 레지스터의 증가는 프로그램 에너지 펄스의 공급에 의해 이뤄진다. 프로그램 에너지 펄스는 카운팅 레지스터의 메모리 물질을 현 프로그래밍 상태로부터 다음 프로그래밍 상태로 변환한다. T14 단계는 카운팅 레지스터가 최종 상태에 도달했는지 하지 않았는지의 여부를 테스트하는 조건부 테스트 단계이다. 일실시예에서, 최종 상태는 카운팅 레지스터의 셋 상태이고 조건부 테스트는 상술한 바와 같이 저저항 셋 상태의 전기 저항이나 어떤 다른 구분 가능한 특성을 측정함으로써 구현될 수 있다. 카운팅 레지스터가 최종 상태에 있지 않으면, 이 방법은 다시 T12 단계로 돌아가 루프를 돌고 메모리 그룹의 다음 레지스터가 리셋된다. 카운팅 레지스터가 T13 단계에서 다시 하나 증가되고 T14 단계에서 조건부 테스트가 종료된다. T12, T13, 및 T14 단계들로 나태낸 루프는 카운팅 레지스터가 최종 상태에 도달될 때까지 반복된다. 카운팅 레지스터에 의한 최종 상태의 도달은 r=r 최종값일 때 일어나고 이것은 메모리 셀의 모든 레지스터들이 리셋되었음을 나타낸다. 카운팅 레지스터가 최종 상태에 도달했으면, 계산 방법은 T15로 진행한다. T15는 카운팅 레지스터를 리셋하는 것에 해당하는 선택적 단계이다. 이 단계는 다른 계산 방법이나 메모리 그룹에 대해 카운팅 레지스터를 준비시킬 때 유용할 수 있다. T16 단계는 이 계산 방법의 종료 단계이다.
전술한 계산 방법은 하나의 메모리 그룹의 리셋에 대한 것을 예시한 것이다. 계산 방법은 여러 메모리 그룹들의 리셋으로 당연히 확장될 수 있다. 예를 들어,메모리 그룹 a 및 b를 리셋하려면, 레지스터 br이 리셋되는 단계들인 T12 및 T13 사이에 T12' 단계를 포함시킬 수 있다. T12' 단계는 "레지스터 br리셋"으로 표기되고 이 방법은 메모리 그룹 a 및 b가 리셋됨을 나타내기 위해 RESET(a,b)로 명명될 것이다. 이 방법은 임의의 수의 메모리 그룹들에 대해서도 유사하게 확장될 수 있다.
도 3은 도 2에서 제공된 계산 방법을 나타내는 다른 방법을 도시한다. 도 3의 리셋 방법의 단계들은 도 2의 단계들에 바로 해당하지만 10의 오프셋이 있다. 즉, T20은 T10 단계에 해당하고, T21은 T11에 해당하는 식이 된다. 도 3에 제시된 묘사는 아래에서 설명될 다른 계산 방법들에 사용될 수 있는 표기를 예시하기 위한 것이다. T21 단계에서, "r=r 초기값"은 r이 r 초기값으로 설정된다는 것을 나타낸다. 이 단계는 카운팅 레지스터의 초기화에 해당한다. T22 리셋 단계에서, "ar=0"은 r의 현재값과 결부된 메모리 그룹 a의 레지스터가 리셋된다는 것을 나타낸다. T23 단계에서, "r=r+1"은 r 값이 하나 증가되어야 한다는 것을 나타낸다. 이 단계는 카운팅 레지스터 1씩 증가에 해당하는 것으로, 한 프로그래밍 펄스를 카운팅 레지스터에 공급함으로써 수행될 수 있다. T24 단계에서, 조건부 테스트가 "r=r 최종값?"으로 표시되었다. T24 단계는 카운팅 레지스터가 그 최종 상태에 도달했느지의 여부를 묻는 것이다. 도달하지 않았으면, 계산 방법은 최종 상태에 도달될 때까지 T22, T23, 및 T24 단계들의 루프를 돌 것이다. 카운팅 레지스터가 최종 상태에 있게 되면, 이 방법은 선택적 카운팅 레지스터 리셋 단계인 T25로 진행하고T26 단계에서 종료된다.
도 2 및 3에 보인 방법들은 카운팅 레지스터의 초기값을 세팅하는 초기화 단계와 카운팅 레지스터가 언제 그 최종 상태에 도달했는지를 정하는 조건부 테스트 단계를 포함한다. r 초기값과 r 최종값을 선택하는데 다른 접근 방식들이 이용될 수도 있다. 위에서 나타낸 바와 같이, r 최종값을 카운팅 레지스터의 셋 상태와 결부시키는 것이 바람직한데, 이는 셋 상태가 간단한 테스트로 쉽게 식별되기 때문이다. 따라서, 카운팅 레지스터의 최종 상태가 카운팅 레지스터와 결부된 메모리 물질의 셋 상태에 해당할 때 계산 방법 또는 루프의 결론이 쉽게 확인될 수 있다. 카운팅 레지스터의 셋 상태가 최종 상태일 때, r 초기값의 값을 선택하는 적어도 두 접근 방식이 있을 수 있다. 먼저, r 초기값은 카운팅 레지스터의 리셋 상태에 해당하도록 선택될 수 있다. 이 실시예에서, 계산 방법은 메모리 그룹의 모든 레지스터들을 어드레스한다(즉, 거친다). 이 실시예는 실행이 간단하다는 이점을 갖지만, 반드시 효과적이라고 볼 수 없는데 그 이유는 초기에 리셋 상태로 존재하는 어떤 레지스터들이 이 방법에 의해 불필요하게 동작되기 때문이다.
두 번째 접근 방식에서, r 초기값은 카운팅 레지스터의 초기 상태를 카운팅 레지스터의 최종 상태로 전환시키는데 필요한 프로그래밍 펄스 또는 증분 구간의 수가 메모리 그룹에 저장되는 수의 비리딩 제로 디지트들의 수와 같도록 설정한다. 이 방식은 리셋 상태가 0에 해당하는 프로그래밍 상태이도록 선택되는 실시예들에서 유리한데, 이는 그것이 리딩 제로 디지트들을 계산 방식에 따른 처리로부터 배제시키기 때문이다. 이 실시예에서, 카운팅 레지스터 초기화 단계는 메모리 그룹에 저장된 수에 존재하는 모든 리딩 제로에 대해 카운팅 레지스터의 리셋 상태로 하나의 프로그래밍 펄스를 공급하는 것을 수반한다. (카운팅 레지스터가 초기화 단계 시작시에 리셋 상태에 있지 않으면, 프로그래밍 펄스를 공급하기 전에 리셋 펄스가 공급된다). 이 초기화 과정은 카운팅 레지스터를 그 초기 상태에서 최종 상태로 전환시키는데 필요로 되는 프로그래밍 펄스들의 수가 메모리 그룹에 저장된 수의 비리딩 제로 디지트들의 수와 같다는 것을 의미한다.
예를 들어, 이 실시예 안의 단위가 10인 상황에 있어서, "0000000472"가 생길 수 있다. 이 수는 7개의 리딩 제로 디지트들과 세 개의 비리딩 제로 디지트들을 포함한다. 이 실시예의 초기화 과정에 따라, 카운팅 레지스터는 (필요하면) 리셋되고 7개의 프로그래밍 펄스들이 초기화 단계시 카운팅 레지스터로 제공될 것이다. 7개의 프로그래밍 펄스들은 카운팅 레지스터를 8번째 프로그래밍 상태로 가게 한다. 8번째 프로그래밍 상태는 수의 8번째 디지트를 가리키는 것에 상응하는 것이다. "0000000472"라는 예에서, 8번째 디지트는 "4"이고 첫번째 비리딩 제로 디지트를 나타낸다. 알고리즘의 각 루프 경로 마다 카운팅 레지스터로 하나의 프로그래밍 펄스가 제공된다. 이 수의 각 비리딩 제로 디지트 마다 한번씩 세번의 루프를 돈 다음에, 카운팅 레지스터는 최종 상태에 있게 된다. 이 때, 최초에 "0000000472"를 포함한 메모리 그룹이 리셋되고(즉 "0000000000"이 된다) 이 방법은 종료 단계로 진행한다. 이 예에 제공된 세개의 프로그래밍 펄스들은 임의의 순서로 된 세 비리딩 제로 디지트들에 대한 작용에 해당하는 것일 수 있음을 주지해야 한다. 자리수의 오름차순("2" 다음 "7", 그 다음 "4") 또는 내림차순 ("4" 다음 "7", 그 다음 "2")으로 디지트들에 작용함이 바람직하다.
초기화에 대한 두번째 접근 방식은 리딩 제로들을 리셋하는데 어떤 계산 시간이나 자원도 요구되지 않는다는 점에서 유리하다. 이 두번째 접근 방식은 메모리 그룹에 저장된 수의 비리딩 제로 디지트들의 개수에 따라 정해지는 값으로 카운팅 레지스터를 설정하고 및 비리딩 제로 디지트들만을 동작시킨 합리적 계산 방식을 정한다. 도 2 및 3에 도시된 방법들은 r 초기값과 r 최종값의 임의의 선택을 가능하게 한다. 특정한 선택들이 서로 다른 실시예들을 이룬다. 이와 유사한 이해가 이하에서 제공되는 계산 방식들에 대해서도 적용된다.
도 2 및 3에서 제공된 리셋 방식들은 리셋 상태가 0 아닌 수에 해당하는 프로그래밍 상태인 실시예들에서 사용될 수도 있다. 이러한 여러 실시예들에서, 리셋 상태는 첫번째 프로그래밍 상태이고 수 1과 결부된다. 이 실시예들에서, 도 2 및 3에 제시된 리셋 방법들의 실행은 이 방법에 따라 동작되는 메모리 그룹의 레지스터들을 1로 설정하는 것에 다름아니다. 이것은 메모리 그룹들의 리셋 및 메모리 그룹들의 제로화(0으로 만들기)가 이 실시예들에서는 다른 동작에 해당함을 의미한다. 제로화는 먼저 도 2 또는 3의 알고리즘에 따라 리셋하고 나서 어떤 프로그래밍 상태가 0과 결부되었든 간에 그 상태로 도달시킬 적절한 수의 프로그래밍 펄스들을 공급함으로써 이뤄질 수 있다. 셋 상태가 0에 해당하는 프로그래밍 상태로 선택되고 제로화 동작은 메모리 그룹의 모든 레지스터들을 세팅함으로써 이뤄지는 것이 흔한 것이다.
<HALFCOPY, 중간복사>
계산 방식들의 구현에 있어서, 한 메모리 그룹에서 하나나 그 이상의 다른 메모리 그룹들로 컨텐츠들을 복사하는 것이 요구되거나 바람직할 때가 흔히 있을 수 있다. 결과적으로, 그것은 메모리 그룹들을 복사하는 방법을 개발하는데 유용한다. 이하에서 설명되는 것과 같이, 다음의 HALFCOPY 방법이 복사 방법의 중간 단계로서 사용될 수 있다. 서로 다른 두 가지 HALFCOPY 방법들인 HALFCOPY_1 및 HALFCOPY_2가 이하의 논의에서 설명될 것이다.
HALFCOPY 방법들은 이제부터 한 수의 보수라고 불려지는 것으로 리턴한다. 여기 사용되는 것과 같은, 한 수의 보수는 수리 체계의 단위로부터 독자적이고도 개별적으로 저장된 수의 디지트들을 감산함으로써 얻어진 결과를 말한다. 예를 들어, 10 단위 시스템에서 "587" 이라는 수가 있다고 할 때, 그 보수는 수리 단위로부터 그 수의 디지트들에 대한 디지트별 감산을 통해 얻어진다. "587"의 보수의 첫번째 디지트는 10-5=5이고, 두번째 디지트는 10-8=2이고, 세번째 디지트는 10-7=3이 된다. 따라서, "587"의 보수는 "523"이다. 10 단위 수리 체계의 "587"이라는 수가 HALFCOPY 안에 입력되었으면, 이 방법은 "523"을 리턴할 것이다. 보수는 다른 단위 시스템들에 대해서도 동일하게 정의되며, 저장된 수에 할당된 임의 개수의 레지스터들에 주어질 수 있다.
비리딩 제로들의 처리는 HALFCOPY 방법들에서는 특별한 주의를 필요로 한다. 10 단위 수리 체계의 "907"이라는 수가 비리딩 제로들을 포함하는 수들에 대해 부딪칠 수 있는 복잡함을 예시하는 예로서 주어진다. "907"에 대한 보수를 계산하는 이전의 방법들을 적용하여 "1"(10-9)가 첫번째 디지트로, "10"(10-0)가 두번째 디지트로, "3"(10-7)가 세번째 디지트로 리턴된다. 따라서 "907"의 보수는 "1(10)3"으로 정해진다. 일바적으로 임의의 수리 단위에 있어서, 비리딩 제로의 존재는 보수에서 수리 체계의 단위와 동일한 "디지트"를 발생시킨다. 이러한 "디지트들"은 수리 단위에서 엄밀히 "10의 자리"이고, 사용시 그 저장을 위해 두 개의 레지스터들을 필요로 할 것이다. 레지스터 단위로 계산 방법들을 실행하는 것이 바람직하기 때문에, 어떤 수의 보수 계산에 있어서 비리딩 제로들을 다루는 것과 관련해 어떤 합의 내지는 정의를 채택하는 것이 바람직하다. 이하에서 제공된 HALFCOPY_1 및 HALFCOPY_2의 방법들은 비리딩 제로들을 다루는데 대한 서로 다른 두 전략을 제공한다.
HALFCOPY_1에서, 레지스터의 셋 상태는 프로그래밍 상태가 아니고 "0"의 보수가 셋 상태가 되도록 선택된다. 이러한 선택은 셋 상태가 레지스터의 마지막 프로그래밍 상태 보다 높은 에너지의 한 프로그래밍 펄스이고 따라서 그런 면에서 수리 체계의 단위와 동일하다고 볼 수 있다는 사실로부터 논리적으로 이어진다. 예를 들어, 10 단위 시스템에서, 마지막(10번째) 프로그래밍 상태는 "0"에 해당하고 레지스터의 리셋 상태에 9개의 프로그래밍 펄스들을 공급함으로써 도달된다. 10번째 프로그래밍 펄스를 제공하면 레지스터를 셋 상태로 변환시킨다. 10 단위 시스템의 한 레지스터가 "0"을 저장하고 있고 10개의 프로그래밍 펄스들이 공급될 때, 레지스터는 셋 상태로 전환된다. 따라서, 셋 상태는 엄밀히 프로그래밍 상태가 아니라고 하더라도, 어떤 수의 보수를 계산하기 위한 목적에서 "10"에 상응하는 것이라고 볼 수 있다. 앞의 설명은 모든 단위 시스템들에 적용된다. 다음 논의에서"0"의 보수가 두 레지스터들이 아닌 한 레지스터에 기록될 수 있도록 개념을 보강하기 위해 셋 상태를 "10" 이 아닌 "0*"으로 칭할 것이다. 이러한 합의하에서, 10 단위의 수 "907"의 보수는 "10*3"이다. 이러한 합의와 함께, 어떤 수와 그 보수가 같은 수의 레지스터들에 저장됨이 자명하다.
도 4에 HALFCOPY_1 방법이 제시된다. HALFCOPY_1은 리셋 상태가 0 값이 할당된 프로그래밍 상태로서 선택된 실시예들에 대해 고안된 것이다. HALFCOPY_1(b;a) 라는 개념은 HALFCOPY_1이 메모리 그룹 a에 저장된 엔트리에 적용되어 메모리 그룹 b의 출력을 생성함을 의미한다. 즉, 메모리 그룹 a에 저장된 수의 보수가 메모리 그룹 b에 쓰여진다는 것이다. 메모리 그룹 b는 목적지 메모리 셀이라고 불려질 수 있다. 이 방법은 T300 단계에서 시작된다. 입력 데이터 값이 메모리 그룹 a에 저장되지 않으면, 그것은 시작 단계 도중에 저장될 것이다. 프로그래밍 상태들, 프로그래밍 구간들 및 수치값들의 할당 역시 T300 단계에서 이뤄진다. 저장 단계는, 저장될 한 수와 결부된 프로그래밍 상태로 상 변화 물질을 변환시키기 충분한 에너지를 제공하는 단계를 포함한다. T301 단계에서 카운팅 레지스터가 초기화된다. 이 초기화 프로세스는 상술한 리셋 알고리즘에서 설명되었고 r 초기값 및 r 최종값의 값과 관련해 동일한 고려사항이 적용된다. 위에서 설명한 리셋 방법과 같은 효과를 내는 알고리즘 또는 프로세스들이 역시 T301 단계에서 사용될 수 있다. T302 단계에서, 메모리 그룹 b가 리셋된다. 메모리 그룹 b는 도 2 또는 3에 설명된 리셋 방법이나 그에 상응하는 방법에 의해 리셋될 수 있다. T302 단계를 완료하면, 메모리 그룹 b의 모든 레지스터들이 리셋 상태가 되어 0을 저장한다.
T303, T304 및 T305 단계들이 이 방법의 기본 처리 단계들에 해당하는 반복 루프를 형성한다. 위에서 나타낸 바와 같이, 한 수의 보수 계산은 수리 체계의 단위에서 각 레지스터에 저장된 디지트에 대한 레지스터별 감산을 요한다. 각 레지스터에 대한 감산 프로세스의 결과가 그 레지스터를 셋 상태로 전환시키는데 필요한 프로그래밍 펄스들의 개수에 해당한다. 예를 들어 10 단위 시스템에서, 4개의 프로그래밍 펄스들이 "6"을 포함한 레지스터를 셋 상태로 전환시키는데 필요로 되며, 4가 "6"의 보수이다. 따라서, 한 수에 대한 보수 계산의 핵심은 각 레지스터를 그의 셋 상태로 전환시키는데 필요로 되는 프로그래밍 펄스들의 개수를 쫓는 것에 있다. 상술한 리셋 방법의 논의에서 지시된 바와 같이, 이 방법은 비리딩 제로들을 포함하는 레지스터들에만 적용됨이 바람직하다. 그 목적은 상술한 바와 같이 r 초기값을 적절히 세팅함으로써 달성될 수 있다.
T303, T304, 및 T305 단계들은 r의 현재 값과 관련된 레지스터를 셋 상태로 전환하는데 필요한 프로그래밍 펄스의 개수를 기록하는 루프를 제공한다. T303 단계에서, r의 현재 값과 관련된 메모리 그룹 a의 레지스터가 1 만큼 증가한다. T304 단계에서, 상응하는 메모리 그룹 b의 레지스터가 1 만큼 증가한다. 따라서 메모리 그룹 b는 메모리 그룹 a에 제공된 프로그래밍 펄스들의 개수를 따라간다. T305 단계는 레지스터 ar이 최종 상태에 도달했는지의 여부를 묻는다. 최종 상태에 도달하지 않았으면, 이 방법은 T303 및 T304 단계들을 통해 다시 루프를 돌고 다시ar과 br을 하나씩 증가시킨다. 루프는 ar이 최종 상태가 될 때까지 계속된다. 이 때, 레지스터 ar은 셋 상태에 있게 되고 레지스터 br은 레지스터 ar을 셋 상태로 변환하도록 공급된 프로그래밍 펄스들의 개수에 해당하는 프로그래밍 상태가 된다. 따라서 레지스터 br은 레지스터 ar에 최초에 저장된 디지트의 보수를 저장한다.
T306 단계는 선택적 단계이고 원할 때 레지스터 ar을 리셋하기 위해 사용한다. 이때, r의 현재 값과 결부된 레지스터 ar의 보수는 레지스터 br에 저장되었다. 보수 결정의 완료는 메모리 그룹 a의 모든 레지스터들에 대한 처리 루프를 반복할 것을 요구한다. T307 단계에서, r 값은 하나씩 증가하여 다음 레지스터로의 카운팅 레지스터의 이동을 나타낸다. T308 단계는 카운팅 레지스터 인덱스 r이 최종 값에 도달했는지를 묻는다. 도달하지 않았으면, T303 단계로 리턴하여 새 레지스터에 대한 T303, T304, 및 T305 단계들로 정의된 루프를 이행한다. 이 루프의 완료시, 메모리 그룹 a의 다른 레지스터가 그 셋 상태에 있게 되고 그 레지스터에 저장된 최초의 수의 보수가 메모리 그룹 b의 해당 레지스터에 기록된다. T306 및 T307 단계들은 상술한 바와 같이 이행되고, 이 방법은 카운팅 레지스터가 최종 상태에 있는지를 다시 테스트하도록 T308 단계를 계속한다. 최종 상태가 아니면, 방법은 T303 단계로 리턴하여 다음 레지스터가 처리된다. 모든 레지스터들이 처리되었으면, 메모리 그룹 b는 메모리 그룹 a에 저장된 원래의 수에 대한 보수를 포함하며, 메모리 그룹 a는 리셋되어 원할 때 다른 처리를 위해 사용될 수 있게 된다.이 때, 이 방법은 선택적인 T309 단계로 진행해 카운팅 레지스터를 리셋한다. 일반적으로 카운팅 레지스터를 리셋하여 다른 처리에 사용될 수 있도록 함이 바람직하다. 이 방법은 T310 단계에서 종료된다. 출력 읽기는 T310 단계에서 완료된다.
HALFCOPY_2는 HALFCOPY_1과 유사하며 비리딩 제로의 보수 처리에 대한 합의에 있어 차이가 있다. HALFCOPY_1과 같이, HALFCOPY_2는 리셋 상태가 0과 결부된 프로그래밍 상태라고 전제한다. HALFCOPY_2에서, 비리딩 제로의 보수는 0으로 선택된다. 즉, 비리딩 제로는 그 자신을 보수로 가진다. 10 단위의 수 "907"이 입력되면, HALFCOPY_2는 "103"을 보수로 리턴한다. 도 5에서 HALFCOPY_2가 제시된다. HALFCOPY_2의 대부분의 단계들은 상술한 HALFCOPY_1의 단계들에 상응한다. 상응하는 단계들은 그 값에 있어 30의 차이가 나는 라벨을 각 단계에서 사용한다. 예를 들어 T330 단계들은 T300 단계에 상응하고; T331은 T301 단계에 상응하는 식이다. T336'과 T336" 단계들은 HALFCOPY_1에서 상응하는 단계들을 갖고 있지 않다. 이들은, 이 방법이 T336' 단계에 도달할 때 셋 상태 0*으로 존재하는 목적지 메모리 그룹 b의 레지스터들을 리셋하는데 사용되는 단계들을 나타낸다. T336' 단계는 r의 현재 값과 결부된 레지스터 br이 셋 상태에 있는지의 여부를 묻는다. ar와 유사한 경우로서, 이 테스트는 셋 상태의 저항이나 어떤 다른 특징을 측정함으로써 수행될 수 있다. 레지스터 br이 셋 상태에 있지 않으면, 이 방법은 T337 단계를 계속하고 HALFCOPY_1에서와 유사하게 된다.
레지스터 ar이 초기에 "0"을 저장하고 있으면, 레지스터 br은 ar이 셋 상태0*로 변환되는 T333, T334, 및 T335 단계들에 의해 규정된 루프의 동일한 반복에 의해 셋 상태 0*로 전환될 것이다. 이런 상황이 발생되고 방법이 T335 단계에서 T336 단계로 진행할 때, ar과 br모두 셋 상태 0*에 있게 된다. T336 단계에서, 레지스터 ar이 리셋된다. HALFCOPY_1의 상응하는 단계들에서와 같이, T336 단계는 선택적이지만 수행이 바람직하다. 레지스터 br이 셋 상태 0*에 있게 되면, 방법은 T336" 단계로 진행하여 br을 HALFCOPY_2의 비리딩 제로들의 보수 처리에 대해 채택된 합의를 따라 0으로 리셋시킨다. 이 방법은 T337 단계로 진행하고 HALFCOPY_1과 유사하게 수행된다.
HALFCOPY_2에 상응하는 방법들 역시 개발될 수 있으며 본 발명의 범주안에 포함될 수 있다. T336'과 T336" 단계들을 포함하는 대신, 가령, T332와 T333 단계들 사이에 가산 단계들을 위치시켜 비리딩 제로들이 그 자신의 보수로서 다뤄지는 합의에 대한 추종을 제공할 수 있다. ar이 0과 같은지의 여부를 묻는 T332' 단계가 추가될 수 있다. 같지 않으면, 이 방법은 T333으로 계속 진행하고 HALFCOPY_1과 유사하게 진행될 것이다. T332' 단계가 ar이 0과 같음을 보이면, 상응하는 레지스터 br에 대해 작용할 필요가 없는데 이는 이미 그것에 "0"이 저장되어 있고 이미 원하는 보수를 나타내고 있을 것이기 때문이다. 이 상황에서, 방법은 곧장 T337 단계로 돌아와 중간 단계들을 건너뛴다.
HALFCOPY_1과 HALFCOPY_2는 하나의 목적지 레지스터에 대해 기록되지만, 간단한 적응을 통해 여러개의 목적지 레지스터들도 가능하게 할 수 있다. 가령, HALFCOPY_1(c, b; a) 방법은 메모리 그룹 a에 존재하는 수의 보수를 목적지 메모리 그룹들인 b 및 c에 저장할 것이다. 이러한 방법은 바로 다음의 T304 단계 cr=cr+1을 실행하는 T304' 단계를 포함함으로써 구현될 수 있다.
위에서 나타낸 바와 같이, r 초기값이 리딩 제로들의 처리를 배제하도록 정해지는 실시예들이 바람직하지만, 리딩 제로들이 처리되는 실시예들 역시 본 발명의 범주 안에 있을 수 있다. 이러한 실시예들에서, 리딩 제로들은 비리딩 제로들의 보수 처리에 대해 위에서 설명한 합의에 따라 처리될 수 있다.
<복사, COPY>
복사 알고리즘의 기능은 한 메모리 그룹에서 다른 메모리 그룹으로 컨텐츠를 복사하는 것이다. 일반적으로, 한 메모리 그룹을 직접 읽어와 그 내용을 다른 메모리 그룹에 복제하는 것이 가능해야 한다. 이러한 직접 복사 방법의 가능성은 메모리 그룹이 읽혀질 수 있는 편리함에 달려 있다. 직접 복사는 본 발명의 방법들을 통한 상 변화 물질과 함께 가능하다. 직접 복사는 한 메모리 그룹의 메모리 소자나 레지스터의 읽기 및, 그 결과를 다른 메모리 그룹의 메모리 소자나 레지스터로의 쓰기를 요구한다. 본 발명의 계산 방법들에 의해 사용되는 멀티 상태 상 변화 물질의 읽기 및 쓰기에 대해서는 위에서 설명하였다.
다른 복사 방법 역시 상술한 HALFCOPY 방법들을 이용해 개량될 수 있다. HALFCOPY 방법들은 한 수의 보수를 출력으로 리턴한다. 한 수의 보수에 대해HALFCOPY를 적용하면 그 수 자신이 리턴된다. 즉, HALFCOPY의 두번 연속 적용이 입력된 최초의 수를 출력으로 리턴시킨다. 예를 들어, 10 단위 수리 체계의 수 "543"이 있다고 할 때, HALFCOPY_1나 HALFCOPY_2를 10 단위 수리 체계의 수 "543"dp wjrdydgkaus "567"이 리턴된다. 그 "567"이라는 출력 결과에 HALFCOPY_1나 HALFCOPY_2를 계속해서 적용하면, "543"이 리턴된다. HALFCOPY_1나 HALFCOPY_2의 두 번 연속 적용, 아무 순서로나 HALFCOPY_1 및 HALFCOPY_2의 연속 적용, 또는 HALFCOPY_1나 HALFCOPY_2와 동일한 효과를 내는 알고리즘의 유사 적용이 복사 방법을 구성하는데 사용될 수 있다.
복사 방법의 한 예가 도 6에 주어진다. COPY(b,c;a)는 메모리 그룹 a의 컨텐츠를 목적지 메모리 그룹들인 b 및 c로 복사한다. 이 방법은 T400에서 시작한다. 입력 데이터 값이 미리 저장되어 있지 않으면, 그것은 시작 단계에서 메모리 그룹 a에 저장될 것이다. 프로그래밍 상태들, 프로그래밍 구간들 및 수치 값들의 할당 역시 T400 단계에서 이행될 것이다. 저장 단계는 저장되는 수와 관련된 프로그래밍 상태로 상 변화 물질을 전환하는데 충분한 에너지를 제공하는 단계를 포함한다. T401 및 T402 단계들 각각에서, HALFCOPY 방법이 호출되어 실행된다. 호출된 방법은 HALFCOPY_1, HALFCOPY_2, 또는 그에 상응하는 것이 될 수 있다. T401 단계는 메모리 그룹 a의 데이터를 입력으로 취하여 메모리 그룹 d에 그 보수를 제공한다. T402 단계는 메모리 그룹 d의 데이터를 취하여 그 보수를 메모리 그룹 b 및 c에 제공한다. T403 단계에서 이 방법이 종료된다. 출력의 읽기 역시 T403 단계에서 이행된다.
COPY(b,c;a)의 작용은 메모리 그룹 a의 컨텐츠를 메모리 그룹 b 및 c로 복사하는 것이다. 둘 보다 많은 목적지 셀들로의 복사를 원할 때 이와 유사한 방법들이 쓰여질 수 있다. 오직 하나의 목적지 레지스터가 포함된 경우, 이 방법은 한 메모리 그룹의 컨텐츠를 다른 메모리 그룹으로 이동하는 효과를 가진다. 예를 들어, COPY(b;a)는 메모리 그룹 a의 컨텐츠를 메모리 그룹 b로 복사한다. 변환되기 때문에 메모리 그룹 a는 이 방법의 완료시 최초의 컨텐츠를 포함하고 않는다. 메모리 그룹 a에 존재하는 최초의 데이터를 유지하고 싶다면, 메모리 그룹 a는 목적지 레지스터들 가운데 포함된다. 예를 들어, COPY(a,b;a)는 메모리 그룹 a의 컨텐츠를 목적지 메모리 그룹 b로 제공하고 메모리 그룹 a를 최초의 상태로 복구시킨다.
복사될 수 안에 비리딩 제로들이 존재할 때, T401 및 T402 단계들에서 HALFCOPY_2를 호출함이 바람직하다. 비리딩 제로가 HALFCOPY_2를 통해 처리되면, 제로가 리턴된다. 복사될 최초의 수에 존재하는 비리딩 제로에 대한 HALFCOPY_2의 두번의 적용은 그 비리딩 제로를 리턴시킨다. 예로서 10 단위의 "907"이라는 수를 들 수 있다. HALFCOPY_2의 한번 적용은 "103"이라는 수를 리턴한다. 두번째 적용은 복사 알고리즘에서 일반적으로 요망된 것과 같은 원형 복사(true copy)인 "907"을 리턴한다.
HALFCOPY_1 및 HALFCOPY_2의 다른 조합에 따른 COPY 방법은 원형 복사와 다른 결과들을 리턴하고 원형 복사가 요망될 때 추가 처리 단계들을 필요로 한다. T401 단계의 HALFCOPY_1과 T402단계의 HALFCOPY_1 사용을 고려할 수 있다. 10 단위 수 "907"이 입력될 때, T401 단계는 "90*3"을 리턴한다. 이 결과가 입력 단계 T402로의 입력으로 사용될 때, "917"이 리턴된다. 원형 복사를 얻기 위해, T402를 실행하기 앞서 T401 이후에 리턴되는 0*을 리셋하여 T402 단계 실행 이후처럼 행할 필요가 있다. T401 단계에서 HALFCOPY_1의 사용과 T402 단계에서의 HALFCOPY_2의 사용은 "907"이 입력될 때 "90*7"을 리턴한다. 이 출력들을 원형 복사 상태로 변환하기 위해 COPY에 부가적 단계들이 추가될 것이다.
<가산, ADD>
가산 알고리즘의 기능은 두 수를 입력으로 가져와서 그들의 합을 출력으로 리턴하는 것이다. 가장 기본적인 형태에 있어서, 본 발명의 맥락에서의 가산은 상 변화 물질로 부가되는 에너지의 관점에서 볼 수 있다. 상 변화 물질의 상태들이 리셋 상태와 관련한 에너지 관점에서 정렬 또는 판별가능하기 때문에, 상 변화 물질의 리셋 상태로 부가되는 총 에너지 또는 리셋 상태와 관련해 상 변화 물질에 의해 얻어지는 총 에너지가 가산 메커니즘을 규정하기 위한 기본 개념으로 사용될 것이다.
한가지 가산 방법은 리셋 상태와 관련된 상 변화 물질의 상태들에 대한 부가적 에너지 특성을 활용하는 것이다. 이 방법에서, 상 변화 물질은 먼저 리셋 상태로 변환되고 가산될 수들의 특징적 에너지가 공급된다. 가령, 첫번째 수에 비례하는 첫번째 에너지량이 공급되어 상 변화 물질을 첫번째 수의 상태 특성이 되도록 변환시킨다. 두번째 수에 비례하는 두번째 에너지량의 계속되는 공급은 상 변화 물질을 첫번째와 두번째 수들의 합의 상태 특성이 되도록 변환시킨다. 이 방법에있어서 에너지는 상 변화 물질로 직접 공급되거나 상 변화 물질 내 세분된 메모리 그룹들로 공급되거나 메모리 그룹들 안에 포함된 레지스터들로 공급될 수 있다. 한 수의 에너지 특성은 그 수에 비례하거나 상 변화 물질을 그 수의 수치와 결부된 프로그래밍 상태로 변환시키는데 필요한 에너지에 해당할 수 있다.
상 변화 물질은 또한 초기에 리셋 상태에 있을 필요가 없는데 그 이유는 리셋 상태와 셋 상태 사이의 에너지 구간 사이의 상대적 위치가 하나의 수를 나타내는데 사용될 수 있기 때문이다. 예를 들어, 리셋 상태와 셋 상태 사이의 중간 에너지에 위치한 상태는 상 변화 물질에 저장될 수 있는 최대 수의 절반에 해당한다. 그러한 상태는 상 변화 물질을 셋하는데 요구되는 에너지 량에 의해 구분가능하게 된다. 리셋 상태와 셋 상태 사이의 에너지 구간은 특정 화학적 조성에 있어 고정적이므로, 셋 상태에 관련된 에너지는 상 변화 물질에 저장된 한 수의 양적 특성으로서 사용될 수 있다. 이와 마찬가지로, 프로그래밍 상태들이 규정될 때, 상 변화 물질에 저장되는 한 수의 값은, 상 변화 물질을 세팅하는데 필요한 프로그래밍 구간의 수를 결정하고 프로그래밍 상태들의 집합에 저장 가능한 최대 수치로부터 이 수를 감산함으로써 얻어질 수 있다.
한 수의 보수에 대한 편리한 결정이, 멀티 상태 메모리 그룹들에 저장되는 수들을 가산시키는 방법의 다른 베이스를 제공한다. 가산 연산은 그 수 자체로부터 보다는 그 수의 보수로부터 더 자연스럽게 따라올 것이다. 이런 가능성의 이유는, 한 수의 보수는 셋 상태에 도달하기 위해 그 수 자체에 상응하는 량의 프로그래밍 펄스들의 공급을 필요로 하기 때문이다. 10 단위 수리 체계의 수 "4"와 같은단일 디지트 수를 고려할 때, 이 "4"의 보수는 "6"이고, "6"은 쉽게 검출될 수 있는 셋 상태 0*에 도달되기 위해 4 개의 프로그래밍 펄스들을 필요로 한다. 따라서, "4"를 그 보수 "6"으로 전환하고 "6"을 셋 상태로 전환시키도록 진행하면, 레지스터의 컨텐츠를 4번 증가시키는 안전한 방법을 수행한다. 따라서 두 수를 가산하기 위한 기본적 전략은 먼저 첫번째 가산자를 그 보수로 바꾸고 그 보수가 저저항 셋 상태로 변환될 때까지 그 보수에 상응하는 수 만큼 한번에 하나씩 프로그래밍 펄스를 두번째 가산자에 공급하는 것이다. 이러한 변환이 일어나면, 두번째 가산자에 첫번째 가산자에 해당하는 프로그래밍 펄스들의 개수를 더할 수 있다. 이것은 첫번째 가산자의 보수의 셋 상태가 쉽게 검출될 수 있는 상태이기 때문에 가산에 대한 바람직한 전략이 된다.
가산의 기본 전략이 다음과 같이 예시될 수 있다. 예로서 10진수 수리 체계의 제1가산자 "4"를 제2가산자 "5"에 가산하는 경우를 들 수 있다. 가산자 "4"를 그 보수로 변환시켜 "6"을 생성한다. "6"을 셋 상태로 변환하려면 네 개의 프로그래밍 펄스들이 필요하게 된다. 상기 보수 "6"이 셋 상태로 변환해 나갈 때 일대일 방식으로 제2가산자 "5"를 증가시킨다는 것은, 4개의 프로그래밍 펄스들이 제2가산자 "5"에 더해진다는 것을 의미한다. 따라서 제2가산자 "5"는 "9"에 해당하는 프로그래밍 상태로 전환되고 따라서 가산자 "4" 및 "5"가 더해진 것이 된다.
도 7은 가산의 기본 계산 방법을 제공한다. 도 7의 알고리즘은 이하의 도 8에서 제공되는 보다 강력한 방법과 구별하기 위해 BASIC ADD라고 칭한다. 도 7의 BASIC ADD(a,b; a+b) a와 b라는 수들을 입력으로 취하고 a+b 합을 출력으로 제공한다. a 및 b는 메모리 그룹 a 및 b에 저장되며 메모리 그룹 a 및 b와 결부된 일련의 레지스터들에 포함된 단일 디지트 수들 또는 멀티 디지트 수들이다. 쓰여진 것 처럼, 이 방법은 최초에 가산자 b를 저장한 메모리 그룹에 a+b 라는 출력을 제공한다. 따라서, 메모리 그룹 b가 도 7의 방법에 있어 목적지 메모리 그룹이 된다. 메모리 그룹 a 또는 메모리 그룹 a나 b가 아닌 한 메모리 그룹에 출력이 저장되는 다른 등가적 방법들 역시 쓰여질 수 있다.
알고리즘은 T500에서 시작한다. 입력 데이터 값 a 및 b가 미리 저장되어 있지 않으면, 그것들은 이 시작 단계에서 저장될 것이다. 프로그래밍 상태들, 프로그래밍 구간들 및 수치의 할당 역시 T500 단계에서 이행될 수 있다. 저장 단계는 상 저장 물질을 저장할 수에 결부된 프로그래밍 상태로 변환하기 알맞는 에너지를 제공하는 단계를 포함한다. T501 단계에서, HALFCOPY 방법이 호출된다. T501 단계의 목적은 메모리 그룹 a에 저장된 수의 보수를 계산하는데 있다. 보수는 생성되어 메모리 그룹 c에 저장된다. 이하에서 설명될 비리딩 제로들과 관련된 고려 사항에 따라 좌우되는 HALFCOPY_1, HALFCOPY_2, 또는 그들과 등가적인 것들이 T501의 단계에 사용될 수 있다.
T502 단계에서, 카운팅 레지스터가 초기화된다. 카운팅 레지스터는 카운팅 레지스터의 최종 상태가 카운팅 레지스터의 셋 상태가 되도록 초기화됨이 바람직하다. 카운팅 레지스터의 각 상태는 알고리즘에 의해 처리될 메모리 그룹들에 저장되는 수들의 서로 다른 디지트나 레지스터에 해당하는 것임이 바람직하다. 한 메모리 그룹 안의 한 디지트에서 다른 디지트로의 진행은 카운팅 레지스터에 프로그래밍 펄스를 부가함으로써 카운팅 레지스터를 하나씩 증가시킴으로써 행해진다. 모든 디지트들이 처리되었으면, 하나의 추가 프로그래밍 펄스를 부가해 카운팅 레지스터를 셋 상태로 변환시킴이 바람직하다. 카운팅 레지스터는 이러한 결과가 얻어질 수 있도록 초기화됨이 바람직하다. 예를 들어, 네 디지트 짜리 가산자 둘을 가산할 때, 카운팅 레지스터는 네 개의 프로그래밍 펄스의 공급이 카운팅 레지스터를 셋 상태로 변환시킬 수 있도록 초기화됨이 바람직하다. 가산자들이 서로 다른 비리딩 제로 개수를 포함하면, 더 많은 비리딩 제로 디지트 수를 가진 가산자가 카운팅 레지스터에 대한 초기화 조건을 설정한다. 예를 들어, 세 디지트 짜리 가산자를 두 디지트의 가산자에 더할 때, 세 디지트 가산자가 카운팅 레지스터의 초기화를 결정하느데 사용되고 그에 따라 r 초기값이 설정된다.
T503 및 T504 단계들은 기본 처리 루프를 규정한다. T503 단계에서, 카운팅 레지스터의 현재 값과 결부된 메모리 그룹 b 및 c의 레지스터들이 하나씩 증가한다. 상술한 바와 같이, 이 루프에 대한 전략은 셋 상태에 도달할 때까지 메모리 그룹 c에 저장된 보수를 증분하고 메모리 그룹 c의 레지스터들의 중분과 함께 메모리 셀 b의 레지스터들을 증가시키는 데 있다. 메모리 그룹 c의 레지스터가 셋 상태까지 증가되면, 메모리 그룹 b의 상응하는 레지스터는 a와 b의 합에 필요한 값을 포함한다. T504 단계는 메모리 그룹 c의 현재의 레지스터가 셋 상태에 도달했는지의 여부를 테스트한다. 셋 상태는 T504 단계에서 "0*" 으로 표기된다. 셋 상태에 도달되지 않았으면, 루프는 T503으로 리턴하고 셋 상태에 도달될 때까지 지속된다. T505 단계는 선택적인 단계이다. T506 단계는 카운팅 레지스터를 하나씩 증가하여다음 디지트로의 진행을 나타낸다. T507 단계는 카운팅 레지스터가 최종 상태에 도달했는지의 여부를 테스트한다. 상술한 바와 같이, r 최종값은 카운팅 레지스터의 셋 상태에 해당함이 바람직하다. 카운팅 레지스터가 최종 상태에 있지 않으면, 이 방법은 T503 단계로 리턴하고 다른 디지트나 레지스터를 처리한다. 카운팅 레지스터가 최종 상태까지 증가되는 지점까지 모든 디지트들에 대한 처리가 계속된다. 이 방법은 T508 단계로 진행해 카운팅 레지스터를 리셋시키고 T509 단계에서 종료한다. T508 단계는 선택적인 것이나 수행함이 바람직하며, 출력 읽기는 T509 단계에서 완료된다.
도 7에 제시된 BASIC ADD는 단순 가산을 효과적으로 실행하는 것이다. 가산 중에 빈번하게 발생하는 두 가지 상황이 BASIC ADD에서는 특정하게 고려되지 않았다. 먼저, 비리딩 제로들을 포함하는 가산자들이 고려되지 않았고, 두번째로 한 자리수에서 다음의 더 높은 자리수으로의 캐리 오버(carry over)에 대한 필요성이 포함되지 않았다. 이러한 상황들이 이제부터 고려될 것이다.
가산자들에서의 비리딩 제로의 존재는 위에서 전개된 가산 전략 안에서 특별한 고려를 필요로 하는데, 그것은 이 전략이 가산자들 중 하나의 보수 처리를 수반하기 때문이다. 상술한 바와 같이, HALFCOPY_1 및 HALFCOPY_2와 같은 방법들이 사용되어 한 수의 보수를 생성한다. 이 방법들 및 그들과 등가적인 방법들은 비리딩 제로들의 처리에 관한 합의사항을 채택한다. 두 가지 합의 사항들이 논의되었었다. HALFCOPY_1에서, 비리딩 제로는 저저항 셋 상태 0*으로 변환되고 HALFCOPY_2에서 비리딩 제로는 그 자신으로 변환된다. 이 두 합의사항에 기초한 가산 방식들이 본 발명의 범주 안에서 전개될 수 있다. 저저항 셋 상태 0*는 고저항 0 상태 보다 더 편리하게 검출되기 때문에, 0의 보수 0*을 이용하는 가산 방식을 전개함이 바람직하다. 그런 방법의 예가 HALFCOPY_1이 병합된 도 8에 제시된다.
두 디지트들의 합이 수리 체계의 단위와 같거나 그를 초과할 때 캐리 오버 에 대한 필요성이 발생된다. 가령, 십진수 4와 7의 가산은 11을 발생시키고 두번째 디지트를 제공하도록 캐리 오버를 필요로 한다. 따라서, 캐리오버를 수행할 수 있는 가산 방법은 반드시 캐리 오버가 요구되는 시점을 인식해야 하고 한 메모리 그룹 내 보다 높은 자리수을 하나씩 증가시키기 위한 대비책을 포함해야 한다. 이러한 방법의 알고리즘의 예가 도 8 및 도 8a에 제시된다.
도 8 및 도 8a에 도시된 ADD(a,b;a+b)는 멀티 상태 상 변화 메모리 그룹들을 가지고 사용하기 적합한 포괄적 가산 방법이다. T600, T601, 및 T602 단계들은 상술한 T500, T501, 및 T502 단계들과 유사하다. T601 단계에서, HALFCOPY_1이 포함되었고 메모리 그룹 c에 가산자 a의 보수를 쓰기 위해 사용된다. 가산자 b의 보수를 쓰거나 혹은 다른 여러 메모리 그룹들의 보수를 쓰는 것 역시 이와 마찬가지로 가능하다.
T603, T603', 및 T603" 단계들을 구비한 루프는 도 7의 BASIC ADD 방법에는 나와 있지 않은 것으로 가산자들의 비리딩 제로 디지트들의 있을 수 있는 존재를 고려해 삽입되었다. 도 8 및 도 8a에 도시된 예에서, 가산자 안의 비리딩 제로들은 a의 보수가 정해져서 이 방법에 따라 처리되기 때문에 가산자 a와 관련된다. HALFCOPY_1이 호출될 때, 가산자 a의 비리딩 제로는 쉽게 검출될 수 있는 상태인0*로 전환된다. T603 단계가 포함되어 카운팅 레지스터 인덱스 r의 현재의 값과 관련된 레지스터 cr에 0*이 존재하는지를 테스트한다. 레지스터 cr이 0* 상태에 있지 않으면 가산자 a가 비리딩 제로를 포함하고 이 방법이 T603' 및 T603" 단계들로 진행한다는 것을 알 수 있다. T603' 및 T603" 단계들은 비리딩 제로가 가산자 a에 존재하지 않으면 가산자 b의 상응하는 디지트에 아무 영향도 미치지 않는다는 사실을 토대로 한다. 가산자 b의 한 디지트에 0을 가산하는 것은 그 디지트에 아무 영향도 미치지 않는다. 따라서 T603' 및 T603" 단계들의 효과는 레지스터 cr의 0* 상태를 단순히 리셋하고 레지스터 카운터를 하나 증가하여 다음 디지트가 가리켜질 수 있도록 하는 것이다. T603, T603', 및 T603" 단계들을 구비한 루프는 0* 상태에 있지 않은 메모리 그룹 c의 한 레지스터를 만날때까지 반복된다. 따라서 이 방법은 하나 보다 많은 비리딩 제로를 인접 레지스터들에 포함하는 900과 같은 가산자들을 적절히 처리할 수 있다.
T603, T603', 및 T603" 단계들은 비리딩 제로들을 다루는 데 있어 계산상 효과적인 방법을 제공한다. 비리딩 제로들을 0*이 아닌 0으로 전환시키는 HALFCOPY_2와 같은 보수 생성 방법의 사용은 0이라는 상태가 0* 상태 처럼 용이하게 검출되는 것이 아니기 때문에 효과적이지 못하다. 가산자 a 안의 비리딩 제로의 존재를 발견하기 위한 추가 처리 단계들이 필요로된다. 예를 들어, T604와 같은 증가 단계는 비리딩 제로의 표시가 레지스터 동일한 처리 단계에 있는 br및 cr레지스터들의 0* 상태로의 전환을 나타낼 수 있는 데에 사용될 수 있다. 이 표시는 검출 가능하며 적절한 계산 방식이 전개될 수 있다. 이러한 방법은 보수 결정시 비리딩 제로들이 0* 상태로 전환된 방식 보다 덜 바람직하다.
ADD의 T604 단계는 BASIC ADD의 T503 단계와 유사하다. BASIC ADD와 마찬가지로, 메모리 그룹 b 및 c의 해당 레지스터들의 증가 전략은 레지스터 cr이 셋 상태에 도달할 때까지 ADD에도 역시 사용된다. 그러나 BASIC ADD와는 반대로, ADD는 캐리오버를 인식하고 수용한다. 캐리오버 프로세스가 필요한지의여부에 대한 테스트는 T605 단계에서 이뤄진다. 캐리오버는 레지스터 cr이 0* 상태까지 증가한 동일한 단계에서나 그 이전 단계에서 목적지 메모리 그룹 b의 레지스터 br이 0* 상태까지 증가되었음을 필연적으로 의미한다. 그러므로, T605 단계는 레지스터 br이 0* 상태에 도달했는지의 여부를 테스트한다. br이 0* 상태에 있지 않으면, 이 방법은 도 7에 제공된 BASIC ADD 방법의 T504 단계와 유사한 T611 단계로 진행한다. T611 단계는 레지스터 cr이 0* 상태까지 증가되었는지의 여부를 테스트한다. 레지스터 cr이 0* 상태에 있지 않으면, 이 방법은 T612 단계로 진행하고 여기서 cr이 리셋된다. T612 단계는 선택적인 것이지만 수행됨이 바람직한 단계이다. T613 단계에서, 레지스터 카운터는 하나씩 증가되고 T614 단계에서 카운팅 레지스터가 최종 상태에 도달했는지의 여부가 테스트된다. 도달하였으면, 방법은 선택적이지만 수행됨이 바람직한 T615 단계로 진행하고 T616 단계에서 종료된다. 출력의 읽기는 T616 단계에서 완료될 수 있다. 레지스터 카운터가 T614 단계에서 최종 상태에 있지 않으면, 방법은 T603 단계로 리턴하여 다음 레지스터를 처리한다.
ADD는 T605 단계에서 캐리오버의 필요성을 인식하고 도 8a에 도시된 T606, T607, T608, T609, 및 T610 단계들에서 캐리오버를 구현한다. T606 단계는 목적지 레지스터 br의 셋 상태 0*까지의 증가에 따라 실행된다. T606 단계는 제2카운팅 레지스터 S를 도입하여 그 초기값을 제1카운팅 레지스터 4의 현재 값으로 설정한다. 제2카운팅 레지스터는 이 방법이 한 메모리 셀 안에서 서로 다른 레지스터들을 가리키고 처리할 수 있도록 한다. T607 단계에서, 메모리 셀 b의 셋 상태 0*에 있는 레지스터가 0으로 리셋된다. 카운팅 레지스터들 r과 s는 이때 메모리 그룹 b의 동일한 레지스터를 가리키기 때문에, T607 단계 역시 br=0로 쓰여진다. 카운팅 레지스터 s를 도입하기 전에 br을 리셋하는 것 역시 가능하다. T608 단계에서, 카운팅 레지스터 s는 하나씩 증가하여 카운팅 레지스터 r에 의해 가리켜진 레지스터 보다 한 자리수 더 높은 레지스터를 가리킬 수 있도록 한다. 이 단계는 T609 단계에서 일어날 캐리 오버의 전조가 된다. T609 단계에서, s에 의해 가리켜진 레지스터는 가산시 캐리오버가 필요로 될 때 하나씩 증가된다. T610 단계는 카운팅 레지스터 s를 리셋하여 필요하면 나중에 다른 레지스터들에 대한 반복시 사용될 수 있도록 한다. T610 단계를 완료함에 따라, 이 방법은 T611 단계로 진행하여 상술한 것과 같은 것을 계속한다.
캐리오버가 필요할 때, 레지스터 카운터가 가산자들이나 그 보수들의 메모리 그룹들 안의 자리수를 증가시키는 방향으로 진행함이 바람직하다. 따라서, 카운팅레지스터의 초기값은 가장 작은 자리수을 가진 메모리 그룹 또는 보수의 레지스터에 상응함이 바람직하다. 일반적으로, 가장 작은 자리수 레지스터는 멀티 디지트 수의 "1의 자리" 디지트에 해당한다. 따라서 카운팅 레지스터를 증가시키는 것은 이 방법의 실행 중에, "1의 자리" 디지트 다음에 "10의 자리"가 오는 식으로 자리수을 증가시키는 방향으로 진행하는 것을 말한다. 자리수의 올바른 고려는 캐리오버에 적절히 영향을 미치는데 필요한 것이다.
<감산>
감산 방법의 기능은 두 수들 사이의 차를 계산하는 것이다. 여기 제시된 감산 방법은 두 수들 사이의 차를 계산하는 것과 관련된 편리함이 인정된다. 특히, 두 수들 사이의 차는 공통의 수가 두 수들 각각에 더해질 때 일정하게 유지된다. 예로서 10 단위 수리 체계의 수 354와 123 사이의 차를 고려할 수 있다. 그 차는 354-123의 감산에 해당한다. 하나의 공통 수를 354 및 123 모두에 더할 때, 두 수들을 바꿀 수는 있지만, 두 수들 사이의 차는 바꿀 수 없다. 따라서, 354-123 dms 355-124와 455-224와 동일하게 되는 식이다. 본 발명에 있어서, 감산될 두 수 각각에 공통의 수를 가산하는 조처는 그 수들을 저장하는 메모리 그룹, 레지스터 또는 상 변화 물질에 공통의 에너지를 부가함으로써 실현될 것이다. 예를 들어 b-a 감산시 a라는 수를 저장하는 메모리 그룹에 세팅 에너지를 부가하고, 이 세팅 에너지를 b라는 수를 저장하는 메모리 그룹에도 연속해서 부가하는 것이, 메모리 그룹 b를 b-a 차에 해당하거나 그 상태 특성으로 전환하기 위해 이용된다.
도 9 및 10에 제시된 BASIC SUBTRACT 및 SUBTRACT 방법들은 감산될 수(일반적으로 감산 b-a시 두번째 수 a)가 각 레지스터가 저저항 상태 0* 상태로 변환될 때까지 레지스터 별로 증가되는 전략에 기반한다. 이와 마찬가지로 감산을 발생하는 수(일반적으로 감산 b-a시 첫번째 수 b)에 해당하는 레지스터들을 증가시켜, 첫번째 수가 최초의 두 수 사이의 차와 동일한 수로 전환될 수 있게 된다. 354-123을 예로 들어 이용하는 경우가 있을 수 있다. 가장 낮은 자리수의 디지트부터 시작하여 두번째 수의 레지스터를 저저항 0* 상태로 전환하는 전략이 뒤따를 때, 최초의 감산이 최초의 차를 유지하는 새로운 감산으로 바뀌도록 두 디지트 각각을 7 만큼 증가할 필요가 있게 된다(예를 들어, 7 프로그래밍 펄스들의 부가를 통해). 정확히 말해, 7을 3에 더하면 10이 되고 7을 4에 더하면 11이 된다. 차에 영향을 미치지 않으면서 그 두 결과들에서 10을 뺄 수 있기 때문에 두 수들의 가장 낮은 자리수 디지트를 7만큼 증가시키는 것은 최초의 감산 354-123을 감산 351-120으로 바꾸는 효과를 갖는다. 계속해서 다음 자리수의 디지트에 대해 그러한 전략을 반복하여 351-120을 추가로 331-100으로 변형한다. 마지막 디지트에 대한 반복 처리는 231-000을 발생시킨다. 지시된 레지스터별 연산의 궁극적 효과는 최초의 감산 354-123을 훨씬 편리한 감산인 231-000으로 전환하여 원하는 차를 즉시 드러낸다는 데 있다.
도 9에 묘사된 BASIC SUBTRACT는 이러한 레지스터별 감산 전략을 구현한 것이다. a 및 b의 입력 데이터 값들에 대해, 알고리즘은 b-a인 차를 계산한다. 이 알고리즘은 T700 단계부터 시작한다. 멀티 디지트 수들인 입력 데이터 값 a 및 b가 미리 존재하지 않으면, T700 단계에서 이 값들이 메모리 그룹 a 및 b에 각각 저장될 것이다. 프로그래밍 상태들, 프로그래밍 구간들 및 수치의 할당 역시 T700 단계에서 이행될 수 있다. 저장 단계는 상 저장 물질을 저장할 수(넘버)에 결부된 프로그래밍 상태로 변환하기 알맞는 에너지 제공 단계를 포함한다. T501 단계에서, 카운팅 레지스터 r이 초기화된다. 상술한 바와 같이 카운팅 레지스터의 값은 처리 중인 메모리 그룹들의 해당 레지스터들을 지정하는 것을 의미하며, 여기서 해당 레지스터들은 동일한 자리수에 해당하는 레지스터들이다. T702 단계에서, 카운팅 레지스터에 의해 지시된 메모리 그룹들 a 및 b의 레지스터들이 증가된다. 이 단계는 상술한 방식으로 동일한 자리값에 해당하는 디지트들을 동시에 증가시킨다는 개념을 포함한다. T703 단계는 레지스터 br이 셋 상태까지 증가되었는지 여부를 테스트한다. br이 셋 상태에 있으면, 이 방법은 T704 단계로 진행하여 추가 증가가 일어날 수 있도록 br을 리셋시킨다. 이 방법의 목적은 레지스터 ar이 셋 상태에 있을 때까지 증가시키는 데 있다. T705 단계는 이러한 조건을 테스트한다. ar이 셋 상태가 아닌 상태에 있으면, 이 방법은 T702 단계로 리턴하여 다른 증가 반복을 실행한다. ar이 셋 상태까지 증가되었으면, 해당 레지스터 br에 저장된 값이 원하는 b-a 차 다지트를 나타낸다. 방법은 T706의 선택적 단계로 계속 진행하고 카운팅 레지스터가 증가하여 메모리 그룹 a 및 b의 해당 디지트들의 다른 세트의 처리 개시를 의미하거나, 카운팅 레지스터가 최종 상태에 도달했으면 방법의 종료를 의미하는 T707 단계로 진행한다. T708 단계는 카운팅 레지스터가 최종 상태에 도달했느지의 여부를 테스트한다. 도달하지 않았으면, 방법은 T702 단계로 리턴하여 본 발명의 목적에 따라 메모리 그룹들인 a 및 b의 해당 레지스터들의 다른 세트를 처리하도록 한다. T708 단계에서 카운팅 레지스터가 최종 상태에 도달했으면, 이 방법은 선택적 카운터 리셋 단계인 T709 단계로 진행하고 T710 단계에서 종료된다. 출력 읽기는 T710 단계에서 수행될 것이다.
도 10에서는 또 다른 가산 방법 SUBTRACT(b-a; a,b)가 제시된다. 이 방법은 각각 메모리 그룹들 a 및 b에 저장된 데이터 값 a 및 b 입력 데이터 값들에 대해 동작되고, 그 차 b-a를 리턴하는 것으로, 상술한 BASIC SUBTRACT 보다 더 다재다능한 것일 수 있다. SUBTRACT(b-a; a,b)의 메인 스레드인 T800~T812 단계들은 상술한T700~T710과 유사하다. SUBTRACT(b-a; a,b)는 두 사이드 루프를 포함하는데 하나는 T820-T821로 규정되고 다른 하나는 T830-835, T840 및 T841에 의해 규정되어, 필요할 때 빌리기(borrowing) 프로세스에 영향을 미친다. 빌리기는 특정 자리수의 디지트들을 감산할 때 더 높은 다음 자리수 디지트에서 하나(contribution)를 빌리는 것을 이용하는 것에 대한 것이다. 10진수 감산 95-39의 예에서, "9"가 "5"를 초과하기 때문에 최저 자리수 디지트에 대해 빌리기가 필요하게 된다. 빌리기는 제1감산자의 더 높은 자리수 디지트의 값을 하나 낮추고 그 하나를 그 보다 낮은 자리수의 값으로 바꾸고 그 바꾼 자리값을 그 낮은 자리 디지트의 값에 더함으로써 수행된다. 앞의 예에서, 95의 "9"는 1만큼 감소되어 "8"이 되고, 10의 자리수인 "1"은 1의 자리수인 10으로 변환된 후 "5"에 더해져서 제1감산자의 최저 자리수의 수 "15"가 된다. 감산은 계속되어 "15"에서 "9"를 빼 "6"을 발생시킨다. 이 프로세스는 다음 자리수 디지트에 대해 계속되며 필요하다면 추가 빌리기가 이행된다. 상기 예에서, 추가 빌리기는 필요치 않으며 감산은 10의 자리에 해당하는 디지트들을 감산함으로써(즉, 8-3) 최종 해답 "56"을 얻게된다.
빌리기의 필요성은 메모리 그룹 a 및 b에 저장된 수들의 해당 디지트들의 상대적 값들에 대한 가능한 세 가지 시나리오를 고려해 결정될 수 있다. 메모리 그룹 b의 디지트 br이 메모리 그룹 a의 상응하는 디지트 ar보다 클 때, br-ar은 양수가 되고 빌리기는 필요로 되지 않는다. br-ar이 음수일 때 빌리기가 필요로 되며, br=ar일 때는 빌리기가 필요할 수도 필요하지 않을 수도 있다. br=ar일 때의 빌리기는 보다 낮은 자리수를 가진 디지트들에 대해 빌리기가 필요한지의 여부에 따라 달라지는데 이는 빌리기가 br을 감소시키고 최초의 식에서와 같은 감산시에는 존재하지 않았을지 모를 조건이라고 해도 br<ar라는 조건을 생성하도록 작용할 수 있기 때문이다. 예를 들어, 2047-1032의 감산에 있어서, 100 자리의 0들에 대해서는 어떤 빌리기도 필요하지 않을 것이다. 그러나, 2047-1052 감산시에는 빌리기가 필요하다.
SUBTRACT(b-a; a,b)는 해당 디지트들인 br및 ar의 상대적인 값들에 대해 세 가지 가능한 시나리오를 고려한다. 메인 스레드(T800~T812)는 br>ar의 경우를 고려한 것이다. T820 및 T821를 포함하는 사이드 루프는 br=ar의 경우를 고려한 것이고, T830-T835, T840 및 T841을 포함하는 사이드 루프는 br<ar의 경우를 고려한 것이다. T803 단계는 메인 스레드와 사이드 루프들을 통한 계산 플로우를 조정한다. br>ar일 때, 레지스터 br은 상응하는 레지스터 ar에 앞서 셋 상태까지 증가되고 그에 따라 이 방법은 T803 단계의 "아니오" 브랜치를 통해 배타적으로 진행된다. 이 상황에서, T802, T803 및 T804 단계들은 br이 셋 상태로 증가될 때까지 반복되고 이 방법은 레지스터 ar이 셋 상태로 변환될 때까지 추가 증가가 생기도록 br이 0으로 리셋되는 T805 단계로 진행한다. T806 단계는 레지스터 레지스터 br이 리셋되고 난 후의 증가를 고려한 것이고, T807 단계는 레지스터 ar이 셋 상태까지 증가되었는지의 여부를 테스트한다. ar이 셋 상태에 있을 때까지 증가가 일어나고, 그리고 나서 이 방법은 T808로 진행해 ar을 리셋시킨다. 원하는 감산 결과는 메모리 그룹 b의 컨텐츠에 해당하므로 T808의 단계는 선택적이다.
br=ar일 때, 즉, 메모리 그룹 a 및 b에 저장된 최초의 수들의 같은 자리값에 해당하는 디지트들이 같을 때, 혹은 빌기기에 의해 메모리 그룹 a 및 b의 해당 디지틀들이 동등해질 때, 레지스터 br및 ar은 같은 반복에 의해 셋 상태로 증가된다. 이런 일들이 발생될 때, 이 방법은 T820 단계로 진행하고 T821을 계속한다. T820 단계는 레지스터 ar이 T803 단계에서 셋 상태에 있다고 확인되었을 때의 상황에서레지스터 br이 셋 상태에 있는지를 테스트한다. br=ar일 때, 이 방법은 T820에서 T821 단계로 진행하고 여기서 레지스터들 br과 ar은 리셋된다. br과 ar은 리셋된다. 그러나 br의 리셋은 바람직한 것일 수 있는데, 그 이유는 방법의 종료시 메모리 그룹 b의 컨텐츠들은 원하는 감산 결과에 해당하고 리셋 상태는 엄밀히 이 실시예에서 디지트 0에 해당하기 때문이다. 그러나, 다른 선택 사항으로서, 이 발명의 맥락 안에서, 레지스터 br의 셋 상태는 제로 디지트라고도 해석될 수 있는데 그것은 리셋 상태의 궁극적인 읽기는 리셋 상태를 셋 상태로 변환시키는 것을 필요로 하기 때문이다. T821 단계의 종료에 따라, 이 방법은 메인 스레드로 리턴한다.
br<ar일 때, 빌리기가 필요하다. 이 상황에서, 레지스터 ar은 레지스터 br보다 앞서 셋 상태로 증가되면 이 방법은 T803에서 T820과, 빌리기 프로토콜을 구현하는사이드 루프의 엔드 포인트가 있는 T830으로 진행한다. T830은 제2카운팅 레지스터 s를 도입하여 그 초기값을 카운팅 레지스터 r의 현재 값으로 설정한다. 카운팅 레지스터 s는 카운팅 레지스터 r에 독립적이고 카운팅 레지스터 r에 의해 가리켜진 것과는 다른 메모리 그룹의 레지스터를 가리키거나 지명하는데 사용된다.
빌리기는 T830단계에서 지시된 레지스터 보다 한 자리수 높은 레지스터들을 고려할 것을 요구한다. 빌리기에 대한 두 개의 가능한 전략들이 고려될 수 있다. 첫번째 전략에서, 메모리 그룹 b의 더 높은 자리수 디지트가 1 감소되고 T830에서 지시된 메모리 그룹이나 레지스터에 10을(또는 사용되는 수리 체계의 단위 값) 가산함으로써 보상된다. 두번째 전략에서, 메모리 그룹 a의 더 높은 자리수 디지트가 1 증가되고 그것은 T830에서 가리켜진 메모리 그룹의 레지스터를 10(또는 사용되는 수리 체계의 단위 값) 감소시킴으로써 보상된다. 두 전략 모두 본 발명의 실시예들을 구성한다. 후자의 전략은 도 10에 묘사된 방법에 의해 구현되며 이제부터 보다 자세히 설명될 것이다.
T830 단계에서, 두 카운팅 레지스터들인 r과 s는 빌리기에 대한 필요성에 기반하여, 메모리 그룹 a 및 b의 해당 레지스터들을 가리킨다. 이 방법이 T830 단계에 도달할 때 레지스터 ar은 셋 상태에 있다. T831 단계에서, 레지스터 ar은 리셋된다. 셋 상태는 최대 저장 가능 수에 해당하는 프로그래밍 상태를 지나 하나 증가한 것이기 때문에 그것은 빌리기 관점에 있어서 수리 체계의 단위 값에 해당하는 것이라고 볼 수 있다. 예를 드어 10진수 체계의 수들에 대해 이러한 계산이 적용될 때, 셋 상태 바로 이전의 상태는 "9"이고 셋 상태는 "10"으로 볼 수 있다. 이런 맥락에서 볼 때, T831에서의 레지스터 ar의 리셋은 ar값을 10 만큼 감소시킨 것으로 볼 수 있다. 이러한 감소에 대한 계산은 ar보다 한 자리수 높은 레지스터를 1만큼 증가시킴으로써 초래된다. 이러한 증가는 T832 및 T833 단계들에서 일어난다. T832 단계에서, 카운팅 레지스터 s가 1 만큼 증가된다. T832 단계 이전에, 카운팅 레지스터 s는 카운팅 레지스터 r과 동일한 상태였고 T831 단계에서 리셋되었던 레지스터 ar과 같은 레지스터 as를 가리켰다. T832 단계에서 카운팅 레지스터 s를 1씩 증가시킨 것은 그 카운팅 레지스터가 T831 단계에서 리셋되었던 레지스터ar보다 한 자리 높은 레지스터를 가리킨다는 것을 말한다. T833 단계에서, s의 증가된 값에 결부된 레지스터가 1 만큼 증가됨으로써 빌리기 프로세스를 완료한다.
T834 단계는 T833 단계에서 일어났던 증가가 레지스터를 셋 상태로 변환시킨 특별한 경우를 고혀한다. 예를 들어, 10진수에서, 이러한 상황은 T831 단계에서 세팅된 레지스터 보다 한 자리 높은 레지스터가 "9"를 저장할 때 일어날 수 있다. 이 상황이 발생될 때, 빌리기는 T833 단계에서 세팅된 된 레지스터 보다 한자리 높은 레지스터로 확장될 필요가 있다. 이 필요한 처리 단계들은 이 특별한 경우에 있어 T833 단계에서 세팅된 레지스터의 리셋 단계인 T840단계에서 시작된다. T841 단계에서, 카운팅 레지스터 r은 T840 단계에서 리셋된 레지스터의 자리수를 갖는 메모리 그룹 b의 레지스터에 대한 스키핑(건너뛰기)을 예상하여 하나 증가된다. T841 단계에 의해 표시된 스키핑은 메모리 그룹 a의 해당 레지스터가 한번 0으로 변환되었기 때문에 필요하며, 메모리 그룹 b의 해당 레지스터는 그것이 최종 감산 결과에 대해 필요로 된 상태에 있기 때문에 추가 처리될 필요가 없다. T841의 완료에 따라, 이 방법은 다른 반복을 위해 T832 단계로 돌아간다. T832 단계는 카운팅 레지스터 s를 1 증가시켜 다음으로 높은 자리수에 해당하는 레지스터들을 가리키고 있음을 나타낸다. T833 단계에서, 카운팅 레지스터 s에 의해 가리켜지고 있는 메모리 그룹 a의 레지스터는 1 증가되어 빌리기 프로세스를 완료한다(이제 빌리 필요가 있다고 전제한 디지트에서 두 디지트들이 제거되었다). T834 단계가 다시 수행되고 필요하다면 "예" 조건을 거쳐 빌리기가 초래되는 디지트의 추가 쉬프트가제공된다. 10진수에서, "9" 값을 가진 일련의 연속 디지트들이 감산자에서 존재할 때마다(즉, b-a에서 감산자 a가 29997과 같은 수일 때) 빌리기가 초래되는 반복되는 디지트 쉬프트가 필요로 된다. 일단 빌리기가 완료되면, 이 방법은 T835로 진행해 거기서 카운팅 레지스터 r이 하나 증가되고 그것은 이 방법에 의해 처리될 다음 디지트를 나타내거나 지명한다. 감산의 경우, r의 초기값은 "1"의 자리 디지트들을 처리하는 것을 나타내고 r의 다음 값은 "10"의 자리 디지트들을 처리하는 것을 나타내는 식이 되도록 디지트들을 오름차순의 자리수로 처리하는 것이 바람직하다. T810 단계는 카운팅 레지스터 r이 최종 상태에 도달했는지를 테스트하고 그에 따라 이 방법이 다른 반복을 실행하거나 종료되도록 라우팅한다.
<곱셈>
일실시예에서, 곱셈은 가산 알고리즘의 반복 적용을 통해 수행된다. 이 실시예는 곱셈이 수차례에 걸친 가산일 뿐이라는 것을 인지한다. 3에 5를 곱하는 것을 예로 들 때, 이것은 3+3+3+3+3이라는 가산과 같은 것이다; 즉 3을 5회 가산한 것이다. 이것은 세 개의 5를 가산한 것이라고도 볼 수 있다(5+5+5). 이 실시예에 따르면, 곱셈은 적절한 회수 만큼 가산 프로세스를 수행함으로써 달성된다. 이 실시예의 일반화는 쉽게 인지될 것이다. 제1 및 제2 곱셈 인수들이 각각 주어지고 그 인수들 중 하나의 반복된 가산이 다른 인수에 의해 행해진다. 제1인수가 반복적으로 가산되면, 제2인수는 제1인수가 그 자신에 가산되는 횟수를 통제하여 곱셈의 효과를 낸다. 특히, 가산 연산의 횟수는 제2인수의 수치 보다 하나 적은 값이 된다. 상기 예로부터, 제1인수를 3에 대응시키고 제2인수를 5에 대응시켜 이를 예시할 수 있다. 이에 따라 제2인수인 5에 의해 3을 반복적으로 가산한다. 위에서 나타낸 바와 같이, 가산 연산의 횟수는 5 보다 하나 적은 값이 된다(3+3+3+3+3에서 네 번의 가산 연산이 일어남을 주지한다).
상기 실시예를 일으키는 BASIC MULTIPLY(ab;a,b)로 이름 붙여진 방법이 도 11에 포함되어 있다. 이 방법은 a 및 b 인수들을 입력으로 취하고 곱 ab를 출력으로 생성한다. 이 방법은 T900에서 시작하며, 멀티 상태 상 물질의 적합한 위치, 레지스터들 또는 메모리 그룹들 안에 그 인수들 a 및 b를 저장하는 단계가 여기 포함된다. 프로그래밍 상태들, 프로그래밍 구간들 및 수치의 할당 역시 T700 단계에서 이행될 수 있다. 저장 단계는 상 저장 물질을 저장할 수(넘버)에 결부된 프로그래밍 상태로 변환시키기 알맞는 에너지 제공 단계를 포함한다. T901 단계에서 다중 레지스터 m이 초기화된다. 다중 레지스터의 용도는 인수들 중 하나가 그 자신에 더해진 횟수를 추종하기 위한 것이다. 다중 레지스터의 증가 횟수는 그 자신에 반복적으로 더해지는 것이 아닌 다른 인수에 의해 결정된다. 인덱스 m은 다중 카운트를 위해 쓰이고, 초기 상태와 최종 상태 사이의 증가 횟수가 반복적으로 더해지는 것이 아닌 다른 인수의 수치 보다 하나 적은 것이 되도록 설정된 초기 상태(minitial) 및 최종 상태(mfinal)을 포함한다.
도 11에 묘사된 실시예에서, 인수 b가 T902단계에서 반복적으로 가산되는 것이 되어 인수 a는 다중 레지스터의 초기 및 최종 상태를 설정하는데 사용된다. 예를 들어, 인수 a가 3이면, 다중 레지스터의 초기 상태 및 최종 상태를 분리하는 증가 횟수는 2가 된다. 이 예에서, m=minitial에 해당하는 반복에 있어서, b+b=2b가 계산되고 다중 레지스터 m은 T903 단계에서 m=minitial+1로 증가된다. T904 단계는 다중 레지스터 m이 최종 상태에 도달했는지를 묻는다. 이 예에서는 추가 반복이 필요하게 된다. m=minitial+1에 상응하는 반복을 계속하면서, 2b+b=3b가 T902 단계에서 계산되고 T903 단계에서 다중 레지스터는 m=minitial+2으로 증가된다. 이 예에서 a=3이므로, 원하는 곱 ab=3b가 얻어져서 선택 가능한 다중 레지스터 리셋 단계인 T905로 진행할 수 있고 이 단계에서 다중 레지스터는 초기 상태로 리셋되거나 어떤 다른 원하는 시작 상태가 된다. 다중 레지스터가 이 실시예의 인수 a의 수치 보다 하나 적은 횟수만큼 증가되었음을 알아야 한다. 다중 레지스터가 상 변화 물질로 이뤄졌으면, 초기화 단계 T901 또는 선택적 리셋 단계 T905는 다중 레지스터 리셋 상태로 변형하고 그에 뒤따라 원하는 초기 또는 시작 상태로 설정할 에너지의 추가 공급하는 단계를 포함할 것이다. T906 단계에서, 인수 b가 저장되어 반복적으로 더해졌던 메모리 그룹 또는 상 변화 물질의 일부가 읽혀져 그 곱의 결과를 얻을 수 있다.
바람직한 일실시예에서, 다중 레지스터는 상 변화 물질로 이뤄지고 mfinal상태는 셋 상태에 해당한다. 이 실시예에서, minitial은 이전의 예의 곱셈 인수 a 보다 하나 적은 수의 프로그래밍 펄스 또는 증분 구간의 제공이 다중 레지스터를 셋 상태로 변형하도록 선택된다.
이 방법의 여러 반복을 통한, T902 단계에서의 인수 b의 반복적 가산은 캐리 오버의 필요성이 생기게 할 수 있다. 캐리 오버가 필요할 때, 그것은 상술한 ADD 방법에 설명된 것과 같이 수행될 것이다.
BASIC MULTIPLY는 단일 디지트 또는 멀티 디지트 인수들에 대해 이용될 수 있다. 인수 b가 멀티 디지트 수일 때, 가산 단계 T902는 b의 디지트들에 걸쳐 레지스터별 방식으로 수행된다. 상술한 ADD 또는 BASIC ADD와 같은 방법들이 레지스터별 가산을 이행하는데 사용될 수 있다.
요인 b의 반복 가산 횟수를 설정해야 하는 요인 a가 매우 큰 수일 때, 그것은 다중 레지스터가 상 변화 물질을 포함할 때 그 다중 레지스터에서 사용 가능한 프로그래밍 상태들의 수를 초과할 수 있다. 메로리 그룹들의 메모리 소자들과 다중 레지스터가 0부터 9까지의 10가지 프로그래밍 상태들을 포함하는 10 단위 수리 체계에서 b=35와 a=12의 곱을 고려한다고 하자. 이 예에서, 인수 a=12는 하나의 다중 레지스터에서 사용 가능한 프로그래밍 상태들의 수 보다 크다. 이런 유형의 상황이 발생할 때, 곱셈은 반복 가산을 통해 여전히 행해질 수 있다. 그러나, 가령 인수 a의 각 디지트 또는 자리수에 대한 별도의 다중 레지스터를 활용해 가산이 반복되는 횟수가 적절히 고려될 필요가 있다. 예를 들어 a=12인 지금의 예에서, 제1다중 레지스터는 디지트 "2"로 정의되고, 제2다중 레지스터는 디지트 "1"로 정의될 수 있다. 그러나 이러한 방식은 자리수를 추종해야 할 필요가 있게 된다. 이것은 가령 제2다중 레지스터에 저장된 "1"이 제1다중 레지스터의 "10"에 해당한다는 것을 인지해야만 한다.
자리수를 고려하는 몇 가지 방식들이 있을 수 있다. 간단한 실시예에서, 두번째의 다중 레지스터 또는 레지스터들의 두번째 다중 그룹이 곱셈 인수 a의 더 높은 자리수의 디지트들에 대한 적절한 가산 횟수를 추종하도록 설정된다. 곱셈 인수 a=12인 앞의 예에서, 10 자리 수의 디지트 1은 T902 단계와 유사한 9(10-1)개의 가산 단계들의 포함을 필요로 한다. 9 번의 가산은 두번째 다중 레지스터를 각 가산 마다 하나씩 증가시키고 두번째 다중 레지스터가 9 차례 증가될 때 가산을 중단하는 것이라고 간주될 수 있다. 이러한 과정은 곱셈 인수 a의 더 높은 자리수의 디지트들에 대해 필요한 임의의 반복 가산 회수에 대해서도 마찬가지로 적용될 수 있다. 이 실시예에서, 두번째 다중 레지스터 또는 그룹은 각 가산 마다 하나씩 증가되고 두번째 다중 레지스터 또는 그룹에 저장된 수가 곱셈 인수 a 보다 하나 적을 때 가산이 중단된다. 종료 조건은 곱셈 인수 a의 값을 두번째 다중 레지스터나 그룹에 저장된 값 보다 하나 많은 값과 비교함으로써 테스트될 수 있다. 비교를 일으키는 한 방법은 곱셈 인수 a를 저장하는 메모리 그룹과 다중 레지스터 또는 그룹을 일대일 방식으로 증가시키는 것으로, 이때 다중 레지스터나 그룹은 비교 시작 전에 하나 만큼 증가되었다. 곱셈 인수 a를 저장하는 메모리 그룹의 해당하는 레지스터들과 다중 레지스터나 그룹(비교 이전에 하나 증가된)이 동일한 반복 주기 중에 셋 상태로 변환되면, 올바른 가산 횟수가 이행된 것이다.
또 다른 자리값에 대한 고려 방식이 쉬프트이다. 쉬프트에 대한 전략은 곱셈 인수 a의 보다 높은 자리수에 의해 정해진 간단한 합의 디지트들의 자리수를 그 디지트 자리수에 따라 증가시킨다는 것이다. b=35이고 a=12인 앞의 예에서, 곱셈인수 a의 디지트 1은 b의 1 배수를 취하여 그 디지트들 각각을 더 높은 자리수로 쉬프트함으로써 산입될 수 있다. b의 1 배수는 35이다. 한 자리 높은 쪽의 쉬프트는 35를 350으로 변환시킨다. 최종 결과치인 350은 곱셈 인수 a=12의 디지트 "1"의 원하는 곱셈 결과에 대한 기여를 나타낸다. 350(a=12의 디지트 "1"로 인한)을 70(35+35; a=12의 디지트 "2"로 인한)에 가산함으로써, 최종 곱셈 결과를 얻을 수 있다. 쉬프트 방법은 어떤 자리수의 디지트에라도 적용될 수 있다. 예를 들어, 백 단위의 디지트는 이 실시예에서 두 번 상향으로 자리수를 쉬프트하면 된다. 도 11에 묘사된 BASIC MULTIPLY 방법과 결합된 쉬프트 방식은 곱셈 인수 a의 디지트들에 따라 곱셈 인수 b의 레지스터별 반복 가산을 제공한다. 반복 가산은 BASIC MULTIPLY에 따른 곱셈 인수 a의 각 디지트에 대해 수행되어 곱셈 인수 a의 각 디지트의 기여를 고려할 자리수에 따라 원하는 곱셈 결과로 쉬프트된다. 곱셈 인수 a의 모든 디지트들에 대한 기여를 통한 합산에 의해 원하는 곱셈 결과가 궁극적으로 얻어질 수 있다.
<나눗셈>
일실시예에서, 나눗셈은 피제수(dividend)가 0으로 줄어들거나 0의 제수의 1배수 이내로 될 때까지 제수를 반복해서 감산하는 프로세스라고 할 수 있다. 이 실시예는 상술한 곱셈의 반복적 가산 개념에 상응하는 것이다. 반복 가산과는 반대로, 반복 감산은 피제수가 제수의 전체 배수가 아닌 상황이 빈번히 발생된다. 특정 피제수의 인수들인 피제수들만이 그 피제수로 고르게 나눠질 수 있다. 한 피제수의 인수인 제수의 반복 감산은 그 피제수를 0으로 감소시킬 것이다. 반대로, 피제수의 인수가 아닌 제수의 반복 감산은 그 피제수를 0으로 감소시킬 수 없다. 인수가 아닌 제수에 의한 피제수의 나눗셈의 결과는 몫 및 나머지로 이뤄지거나, 이와 상응해서 몫 및 분수(fraction)(또는 그에 상응하는 소수)로 이뤄진다. 예를 들어, 피제수 13을 제수 3으로 나눗셈하면 1인 나머지를 가진 4가 나오거나 4와 1/3이 나온다.
반복 감산을 통해 나눗셈을 수행하는 BASIC DIVIDE(b/a; a,b) 방법이 도 12에 도시된다. 이 방법은 피제수 b, 제수 a를 받아들여, b/a인 나눗셈 결과를 제공한다. 이 방법은 피제수와 제수의 상 변화 물질을 구비한 메모리 그룹들로의 저장을 포함하는 T950 단계에서 시작된다. 이 방법의 시작시 피제수 b는 메모리 그룹 b에 존재하거나 저장되고 제수 a는 메모리 그룹 a에 존재하거나 저장된다. 프로그래밍 상태, 프로그래밍 구간 및 수치들의 할당 역시 T950 단계에서 이행될 수 있다. 저장한다는 것은 저장할 수와 결부된 프로그래밍 상태로 상 변화 물질을 변환시키기 알맞은 에너지를 제공하는 단계를 포함한다. 다중 레지스터가 T951 단계에서 초기화된다. 다중 레지스터의 용도는 제수 a가 피제수 b로부터 감산되는 횟수를 카운트하기 위한 것이다. T952 단계는 제수 a가 피제수 b로부터 감산될지의 여부를 판단하는 비교 단계이다. 피제수 b가 제수 a 보다 큰 동안에는, b로부터 a의 추가 감산이 음수를 생성하지 않고 가능하다. 제수 a가 피제수 b로부터 충분한 횟수 만큼 감산될 때, b는 a 보다 작아지게 된다. 이 때, 추가 감산은 바람직하지 않으며 메모리 그룹 b에 저장되는 값은 나눗셈 결과 중 나머지 부분에 해당한다.
b가 a 보다 크면, 이 방법은 T952에서 b로부터 제수 a의 감산을 실행하는 T953단계까지 진행한다. T953 단계가 완료될 때, 제수 a의 값은 바뀌지 않았지만 b의 값은 감소되었다. 도 12의 실시예에서, b-a의 감산 결과가 메모리 그룹 b 안에서 완료된다. 메모리 그룹 b에 최초의 값 b를 유지하면서 다른 메모리 그룹에서 감산을 이행하는 것 역시 마찬가지로 실행 가능하다. T953 단계의 완료시, 이 방법은 T954 단계로 진행하고 여기서 다중 레지스터는 하나 증가하여 b로부터의 a가 한번 감산되었음을 나타낸다. 이 방법은 T952로 리턴하고 다시 b가 a 보다 큰지를 테스트한다. b가 a 보다 크면 이 방법은 T953 및 T954 단계들을 반복한다.
T953 및 T954 단계들을 통한 반복은 b가 더 이상 a 보다 크지 않을 때까지 계속된다. 계속되는 이 시점에서, 이 방법은 T952 단계에서 T955 단계까지 진행하여 b=a인지의 여부를 테스트한다. b=a이면, 제수 a는 원래의 피제수의 인수이고 이 방법은 b가 0으로 설정되는 T956 단계로 진행한다. T956 단계는 메모리 그룹 b를 바로 0으로 설정하거나 b-a를 한번 더 실행함으로써 달성된다. T956 단계 완료시, 이 방법은 다중 레지스터가 하나 증가되는 T957 단계로 진행하고 그리고 나서 T958 단계로 간다. 또 이 방법은 b가 T955 단계의 a와 같지 않다는 것이 알려질 때에도 T958 단계로 진행한다. T958 단계에서, 메모리 그룹 b에 저장된 현재의 값이 결정된다. 반복되는 b로부터의 a의 감산에 의해 b<a 조건이 생성될 때, 메모리 그룹 b에 저장되는 값은 원하는 나눗셈 결과의 나머지에 해당한다. 제수 a가 최초의 피제수의 인수라는 것이 알려질 때 T958 단계에서 정해진 b의 값은 0이 될 것이다. T959 단계는 다중 레지스터 m의 최종값을 결정한다. 이 값은 제수가 최초의 피제수 b로부터 감산되는 횟수를 제공하고 나머지와 결합될 때 나눗셈 문제 b/a에대한 솔루션을 제공한다. 다중 레지스터의 초기값 minitial이 0일 때, T959 단계에서 결정된 최종값은 최초의 피제수 b 에 포함되는 제수의 배수들의 개수를 바로 제공한다. m의 초기값이 0이 아닐 때, m의 초기값과 최종값의 차는 최초의 피제수 b에 포함된 제수 배수들의 개수를 제공한다. 바람직한 실시예에서 minitial은 0이다.
비교 단계 T952는 여러 방식으로 수행될 수 있다. 간단한 비교 테스트는 메모리 그룹 b에 존재하는 리딩 제로들의 개수를 메모리 그룹 a에 존재하는 리딩 제로들의 개수와 비교하는 것이다. 메모리 그룹 a가 메모리 그룹 b 보다 더 많은 리딩 제로를 포함할 때, 메모리 그룹 b에 저장되는 값은 메모리 그룹 a에 저장되는 값 보다 크므로 이 방법은 T953단계로 가야 한다. 리딩 제로들의 개수는 메모리 그룹 a 및 b의 개별 레지스터들을 읽고 0의 존재를 테스트해서 정해진다. 레지스터들에 대한 읽기는 내림 차순의 자리수 레지스터로 진행함이 바람직하다. 비리딩 제로 디지트를 만나게 되면, 리딩 제로 개수가 쉽게 결정된다. 셋 상태가 0으로 선택되면, 레지스터들의 읽기는 간단한 저항 측정을 통해 이뤄질 수 있다. 리셋 상태가 0으로 선택될 때, 레지스터들은 셋 상태까지 증가되어야 한다. 프로그래밍 펄스나 증분 구간의 수가 레지스터에서 가능한 최대수에 해당하면, 그 레지스터는 초기에 리셋 상태로 존재했고 0을 저장했다는 것을 알 수 있다.
메모리 그룹 b 및 a에 존재하는 리딩 제로의 개수가 동일할 때, 혹은 다른 비교 방법이 선호될 때, 메모리 그룹 b 및 a에 존재하는 값들의 직접 비교를 구현하는 것 역시 가능하다. 한가지 직접 비교 방법은 두 메모리 그룹들 중 하나가 셋상태로 변환될 때까지 메모리 그룹들 b 및 a를 일대일 방식으로 증가시키는 것을 포함한다. 동시 증가시 먼저 셋 상태로 변환하는 메모리 그룹이 더 큰 수를 저장하는 메모리 그룹에 해당한다. 예를 들어 메모리 그룹 b가 7을 포함하고 메모리 그룹 a가 4를 포함했을 때, 동시 증가시, 메모리 그룹 b가 먼저 셋 상태로 변환될 것이고, 당연히 더 큰 수에 해당할 것이다. 메모리 그룹 b와 a가 둘 이상의 레지스터들 안에 0 아닌 디지트들을 포함할 때 상응하는 테스트가 개량될 수 있다.
0을 저장하지 않은 보다 높은 자리수를 가진 레지스터에서 비교를 시작함이 바람직하다. 만약, 이 바람직한 실시예에서, 메모리 그룹 b 및 a가 비리딩 제로 디지트들을 저장하는 서로 다른 수의 레지스터들을 포함할 때, 한 레지스터에 대한 테스트는 b가 a 보다 큰지에 대한 판단을 가능하게 한다. 메모리 그룹 b 및 a가 같은 수의 리딩 제로 레지스터들을 포함할 때, 가장 높은 자리수를 가진 메모리 그룹 b 및 a의 비리딩 제로 레지스터들에 대한 비교는 메모리 그룹 b 및 a에 저장된 수들의 최대 자리수 디지트들이 틀린 수치를 가질 때 b가 a 보다 큰지의 여부에 대한 판단을 가능하게 한다. 이들이 동일한 값을 가지면, 비교 테스트는 다음으로 가장 높은 자리수를 가진 메모리 그룹 b 및 a의 레지스터들로 진행하고 가장 큰 수치를 저장하는 것이 메모리 그룹 b 인지 a인지에 대한 판단을 할 때까지 반복된다. 이러한 절차는 b가 a와 같은지의 여부를 판단하는데에도 사용될 수 있다. 메모리 그룹 b 및 a에 저장된 수의 모든 상응하는 디지트들이 같으면, b=a이고 T955 단계의 조건이 만족된다.
여기 설명된 개시 내용은 예시적인 것일 뿐 본 발명의 실시를 한정하려고 의도한것은 아니다. 개시된 계산 방법들의 단계들의 일부 순서의 명백한 주고받기를 포함해, 본 발명의 범주 안에서 본 발명에 대한 수 많은 변형이 있을 수 있다. 본 발명의 범위를 규정하는 것은, 상술한 설명과 더불어 모든 그에 상응하는 것들을 포함하는, 이하의 청구항들이다.
Claims (95)
- 계산(computing) 방법에 있어서,리셋(reset) 상태, 상기 리셋 상태 보다 낮은 저항을 가지고 있고 상기 리셋 상태로부터 상기 리셋 상태의 셋 에너지에 상응하는 양의 에너지 공급에 의해 얻어질 수 있는 셋(set) 상태, 및 상기 리셋 상태와 실질적으로 동일한 저항을 가지고 있고 상기 리셋 상태로부터 상기 리셋 상태의 상기 셋 에너지 보다 적은 양의 에너지 공급에 의해 얻어질 수 있는 하나 이상의 중간 상태들을 포함하는 복수개의 상태들을 가진 디지털 멀티 상태 상 변화 물질(phase change material)을 구비한 하나 이상의 레지스터들을 가진 메모리 그룹을 제공하는 단계;상기 복수개의 상태들 중 하나 이상의 상태가 되게 상기 레지스터들의 변환을 일으키도록 상기 하나 이상의 레지스터들에 에너지를 공급함으로써 가산, 감산, 곱셈, 및 나눗셈으로 이뤄지는 그룹에서 선택된 수학 연산을 수행하는 단계를 포함함을 특징으로 하는 계산 방법.
- 제1항에 있어서, 상기 수학 연산은 감산, 곱셈, 및 나눗셈으로 이뤄진 그룹에서 선택됨을 특징으로 하는 계산 방법.
- 제1항에 있어서, 상기 수학 연산은 비이진(non-binary) 방식으로 수행됨을 특징으로 하는 계산 방법.
- 제1항에 있어서, 상기 상 변화 물질은 In, Ag, Te, Se, Ge, Sb, Bi, Pb, Sn, As, S, Si, P, O 및 이들의 혼합 또는 합금으로 이뤄진 그룹에서 선택된 하나 이상의 성분들을 포함함을 특징으로 하는 계산 방법.
- 제1항에 있어서, 상기 상 변화 물질은 Ge 및 칼코겐(chacogen) 성분을 포함한을 특징으로 하는 계산 방법.
- 제5항에 있어서, 상기 상 변화 물질은 Sb를 더 포함함을 특징으로 하는 계산 방법.
- 제1항에 있어서, 상기 상 변화 물질은 적어도 하나의 칼코겐 성분과 적어도 하나의 전환(transition) 금속 성분을 포함한을 특징으로 하는 계산 방법.
- 제7항에 있어서, 상기 적어도 하나의 칼코겐은 Te와 Se 모두를 혼합한 것임을 특징으로 하는 계산 방법.
- 제7항에 있어서, 상기 적어도 하나의 전환 금속 성분은 Cr, Fe, Ni, Nb, Pd, Pt, 및 그 혼합 또는 합금으로 된 그룹에서 선택됨을 특징으로 하는 계산 방법.
- 제1항에 있어서, 상기 상 변화 물질은 상기 복수개의 상태들로부터 선택된 하나 이상의 프로그래밍 상태를 구비하고, 상기 프로그래밍 상태들은 그에 할당된 수치들을 가지고, 상기 프로그래밍 상태들 각각은 상기 셋 에너지를 초과하지 않는 양의 프로그래밍 에너지 공급에 의해 상기 리셋 상태로부터 얻어질 수 있고, 상기 프로그래밍 에너지는 상기 프로그래밍 에너지에 상응하는 프로그래밍 상태와 결부된 수치를 나타냄을 특징으로 하는 계산 방법.
- 제10항에 있어서, 상기 연산을 수행하는 단계는, 상기 상 변화 물질에 하나 이상의 수들을 저장하는 단계를 포함하고, 상기 저장 단계는 상기 상 변화 물질의 하나 이상의 부분을 상기 하나 이상의 수들과 결부된 프로그래밍 상태들로 변환시키는 단계를 포함함을 특징으로 하는 계산 방법.
- 제10항에 있어서, 상기 프로그래밍 상태들은 상기 하나 이상의 중간 상태들 중 적어도 한 상태를 포함함을 특징으로 하는 계산 방법.
- 제10항에 있어서, 상기 프로그래밍 상태들은 상기 리셋 상태를 포함함을 특징으로 하는 계산 방법.
- 제13항에 있어서, 상기 리셋 상태에 할당되는 수치는 0임을 특징으로 하는 계산 방법.
- 제10항에 있어서, 상기 프로그래밍 상태들은 상기 셋 상태를 포함함을 특징으로 하는 계산 방법.
- 제15항에 있어서, 상기 셋 상태에 할당된 수치는 0임을 특징으로 하는 계산 방법.
- 제10항에 있어서, 상기 프로그래밍 상태들 각각의 프로그래밍 에너지는 상기 프로그래밍 상태에 할당된 수치에 비례함을 특징으로 하는 계산 방법.
- 제10항에 있어서, 상기 프로그래밍 상태들은 에너지가 균등하게 분리됨을 특징으로 하는 계산 방법.
- 제10항에 있어서, 상기 수치들은 연속 정수들임을 특징으로 하는 계산 방법.
- 제19항에 있어서, 상기 연속 정수들은 프로그래밍 에너지의 오름차순으로 상기 프로그래밍 상태들과 결부됨을 특징으로 하는 계산 방법.
- 제10항에 있어서, 상기 연산 수행 단계에서 제공되는 상기 에너지는 상기 상 변화 물질을 상기 프로그래밍 상태들 중 한 상태에서 상기 프로그래밍 상태들 중다른 한 상태로 변환시키는데 필요한 에너지를 포함함을 특징으로 하는 계산 방법.
- 제1항에 있어서, 상기 연산 수행 단계에서 제공되는 상기 에너지는 전기 에너지의 형태로 제공됨을 특징으로 하는 계산 방법.
- 제22항에 있어서, 상기 전기 에너지는 하나 이상의 전기 전류 펄스들의 형태로 됨을 특징으로 하는 계산 방법.
- 제23항에 있어서, 상기 하나 이상의 전기 전류 펄스들은 등에너지(isoenergetic)임을 특징으로 하는 계산 방법.
- 제1항에 있어서, 상기 연산 수행 단계는 상기 상 변화 물질에 한 수를 저장하는 것을 포함함을 특징으로 하는 계산 방법.
- 제25항에 있어서, 상기 메모리 그룹의 상기 레지스터들 각각은 서로 다른 자리수에 해당함을 특징으로 하는 계산 방법.
- 제26항에 있어서, 상기 수의 각 디지트는 자리수가 상기 디지트에 해당하는 상기 메모리 그룹의 레지스터 안에 저장됨을 특징으로 하는 계산 방법.
- 제1항에 있어서, 상기 연산 수행 단계는 상기 상 변화 물질에 복수개의 수들에 대한 저장을 포함함을 특징으로 하는 계산 방법.
- 리셋(reset) 상태, 상기 리셋 상태 보다 낮은 저항을 가지고 있고 상기 리셋 상태로부터 상기 리셋 상태의 셋 에너지에 상응하는 양의 에너지 공급에 의해 얻어질 수 있는 셋(set) 상태, 및 상기 리셋 상태와 실질적으로 동일한 저항을 가지고 있고 상기 리셋 상태로부터 상기 리셋 상태의 상기 셋 에너지 보다 적은 양의 에너지 공급에 의해 얻어질 수 있는 하나 이상의 중간 상태들을 포함하는 복수개의 상태들을 가진 디지털 멀티 상태 상 변화 물질(phase change material)을 프로그래밍하는 방법에 있어서,상기 상 변화 물질에 대한 프로그래밍 상태들을 규정하는 단계를 포함하고, 상기 프로그래밍 상태들의 규정 단계에는 상기 프로그래밍 상태들에 데이터 값들을 할당하는 단계가 포함되고, 상기 프로그래밍 상태들은 상기 상 변화 물질의 상기 리셋 상태에 대해, 상기 데이터 값들의 특성을 가지며 상기 리셋 상태의 상기 셋 에너지를 초과하지 않는 프로그래밍 에너지를 공급함으로써 얻어질 수 있는, 프로그래밍 전략을 설정하는 단계;한 값을 가진 입력 데이터를 제공하는 단계; 및상기 상 변화 물질을 상기 입력 데이터 값과 결부된 프로그래밍 상태로 변환시키기 알맞는 양의 에너지를 상기 상 변화 물질로 공급하는 단계를 포함함을 특징으로 하는 프로그래밍 방법.
- 제29항에 있어서, 상기 입력 데이터는 수(number)임을 특징으로 하는 프로그래밍 방법.
- 제30항에 있어서, 상기 프로그래밍 상태들에 대해 연속 정수 값들이 할당됨을 특징으로 하는 프로그래밍 방법.
- 제31항에 있어서, 상기 연속 정수 값들은 상기 프로그래밍 에너지의 오름차순에 따라 상기 프로그래밍 상태들에 대해 할당됨을 특징으로 하는 프로그래밍 방법.
- 제31항에 있어서, 상기 연속 정수 값들의 최소값은 0임을 특징으로 하는 프로그래밍 방법.
- 제30항에 있어서, 상기 프로그래밍 상태들은 상기 리셋 상태를 포함함을 특징으로 하는 프로그래밍 방법.
- 제34항에 있어서, 상기 0의 값이 상기 리셋 상태와 결부됨을 특징으로 하는 프로그래밍 방법.
- 제30항에 있어서, 상기 프로그래밍 상태들은 셋 상태를 포함함을 특징으로 하는 프로그래밍 방법.
- 제36항에 있어서, 상기 0의 값이 상기 셋 상태와 결부됨을 특징으로 하는 프로그래밍 방법.
- 제30항에 있어서, 상기 프로그래밍 상태들의 개수는 상기 수가 표현되는 수리 체계의 단위(base)와 동일함을 특징으로 하는 프로그래밍 방법.
- 제30항에 있어서, 상기 프로그래밍 상태들의 개수는 10 또는 2의 배수와 동일함을 특징으로 하는 프로그래밍 방법.
- 제29항에 있어서, 상기 프로그래밍 상태들은 등간격의 에너지에 의해 나눠짐을 특징으로 하는 프로그래밍 방법.
- 제29항에 있어서, 상기 에너지 제공 단계는 에너지 펄스 형태의 에너지를 제공함으로써 수행됨을 특징으로 하는 프로그래밍 방법.
- 제29항에 있어서, 상기 에너지 제공 단계는 전기 에너지 형태의 에너지를 제공함으로써 수행됨을 특징으로 하는 프로그래밍 방법.
- 제42항에 있어서, 상기 전기 에너지는 전압 형태로 제공됨을 특징으로 하는 프로그래밍 방법.
- 제42항에 있어서, 상기 전기 에너지는 전류 형태로 제공됨을 특징으로 하는 프로그래밍 방법.
- 제29항에 있어서, 상기 에너지 제공 단계는 광학 에너지 형태의 에너지를 제공함으로써 수행됨을 특징으로 하는 프로그래밍 방법.
- 제29항에 있어서, 상기 에너지 제공 단계는 열 에너지 형태의 에너지를 제공함으로써 수행됨을 특징으로 하는 프로그래밍 방법.
- 제29항에 있어서, 상기 상 변화 물질은 Te, Se, Ge, Sb, Bi, Pb, Sn, As, S, Si, P, O 및 이들의 혼합 또는 합금으로 이뤄진 그룹에서 선택된 하나 이상의 성분들을 포함함을 특징으로 하는 프로그래밍 방법.
- 제29항에 있어서, 상기 상 변화 물질은 적어도 하나의 칼코겐 성분과 적어도 하나의 전환(transition) 금속 성분을 포함한을 특징으로 하는 프로그래밍 방법.
- 제48항에 있어서, 상기 적어도 하나의 칼코겐은 Te와 Se 모두를 혼합한 것임을 특징으로 하는 프로그래밍 방법.
- 제48항에 있어서, 상기 적어도 하나의 전환 금속 성분은 Cr, Fe, Ni, Nb, Pd, Pt, 및 그 혼합 또는 합금으로 된 그룹에서 선택됨을 특징으로 하는 프로그래밍 방법.
- 리셋 방법에 있어서,리셋(reset) 상태, 상기 리셋 상태 보다 낮은 저항을 가지고 있고 상기 리셋 상태로부터 상기 리셋 상태의 셋 에너지에 상응하는 양의 에너지 공급에 의해 얻어질 수 있는 셋(set) 상태, 및 상기 리셋 상태와 실질적으로 동일한 저항을 가지고 있고 상기 리셋 상태로부터 상기 리셋 상태의 상기 셋 에너지 보다 적은 양의 에너지 공급에 의해 얻어질 수 있는 하나 이상의 중간 상태들을 포함하는 복수개의 상태들을 가진 디지털 멀티 상태 상 변화 물질(phase change material)을 구비한 하나 이상의 레지스터들을 가진 메모리 그룹을 제공하는 단계;상기 디지털 멀티 상태 상 변화 물질로 이뤄진 카운팅(counting) 레지스터를 제공하고, 상기 카운팅 레지스터는 자신의 리셋 상태의 셋 에너지를 초과하지 않는 양의 프로그래밍 에너지를 제공해 자신의 리셋 상태로부터 얻을 수 있는 복수개의 프로그래밍 상태들을 구비하며, 상기 프로그래밍 상태들의 개수는 상기 리셋 상태에 있지 않은 상기 메모리 그룹의 레지스터들의 수 보다 크거나 같도록 하는 단계;상기 리셋 상태에 있지 않은 상기 메모리 그룹의 상기 레지스터터들에 대해 상기 프로그래밍 상태들 중 서로 다른 하나씩을 지정하는 단계를 포함하여 상기 카운팅 레지스터를 상기 메모리 그룹에 할당함으로써, 상기 리셋 상태에 있지 않은 상기 메모리 그룹의 상기 레지스터들 각각이 상기 지정된 프로그래밍 상태들 중 서로 다른 하나와 결부되는 단계;가장 적은 프로그래밍 에너지를 가진 상기 지정된 프로그래밍 상태에 해당하는, 상기 카운팅 레지스터의 초기 프로그래밍 상태를 규정하는 단계;가장 높은 프로그래밍 에너지를 가진 상기 지정된 프로그래밍 상태에 해당하는, 상기 카운팅 레지스터의 최종 프로그래밍 상태를 규정하는 단계;상기 카운팅 레지스터를 상기 초기 프로그래밍 상태로 변환시키기 알맞는 에너지를 제공하는 단계를 포함하여 상기 카운팅 레지스터를 초기화시키는 단계;상기 카운팅 레지스터가 상기 최종 프로그래밍 상태가 아닌 한 지정 프로그래밍 상태에 있는 동안, 다음과 같은 a~c의 단계들을 반복적으로 수행하는 단계:a. 상기 카운팅 레지스터의 지정 프로그래밍 상태와 결부된 상기 메모리 그룹의 레지스터로, 상기 메모리 그룹의 상기 관련 레지스터를 셋 상태로 전환시키기 알맞는 양의 에너지를 제공하는 단계,b. 상기 메모리 그룹의 상기 관련 레지스터에, 상기 관련 레지스터가 셋 상태에서 리셋 상태로 전환되도록 하기 알맞는 상기 리셋 에너지를 제공하는 단계,c. 상기 카운팅 레지스터가 다른 지정 프로그래밍 상태로 전환되는데필요한 최소 에너지량을 제공하는 단계를 포함하여, 상기 카운팅 레지스터를 증가시키는 단계;상기 카운팅 레지스터의 상기 최종 프로그래밍 상태와 결부된 상기 메모리 그룹의 레지스터에, 상기 최종 프로그래밍 상태와 결부된 상기 메모리 그룹의 상기 레지스터를 셋 상태로 전환시키는데 알맞는 양의 에너지를 제공하는 단계;상기 최종 프로그래밍 상태와 연관된 상기 메모리 그룹의 상기 레지스터를 셋 상태에서 리셋 상태로 전환시키기 위해, 상기 최종 프로그래밍 상태와 연관된 상기 메모리 그룹의 상기 레지스터에 리셋 에너지를 제공하는 단계를 포함함을 특징으로 하는 리셋 방법.
- 제51항에 있어서, 상기 할당 단계는, 상기 리셋 상태에 있는 상기 메모리 그룹의 상기 레지스터들에 대해 상기 프로그래밍 상태들 중 서로 다른 한 상태를 지정하는 단계를 더 포함하여, 상기 메모리 그룹의 상기 레지스터들 각각이 상기 지정된 프로그래밍 상태들 중 서로 다른 한 상태와 결부됨을 특징으로 하는 리셋 방법.
- 제51항에 있어서, 상기 지정된 프로그래밍 상태들은 균등한 에너지 간격으로 분리됨을 특징으로 하는 리셋 방법.
- 제53항에 있어서, 상기 카운팅 레지스터의 셋 상태는 상기 균등한 에너지 간격에 따라, 상기 카운팅 레지스터의 상기 최종 프로그래밍 상태로부터 분리됨을 특징으로 하는 리셋 방법.
- 제51항에 있어서, 상기 최종 프로그래밍 상태는 상기 카운팅 레지스터의 셋 상태임을 특징으로 하는 리셋 방법.
- 제51항에 있어서, 상기 카운팅 레지스터의 프로그래밍 상태들의 개수는 상기 메모리 그룹의 레지스터들의 개수와 같음을 특징으로 하는 리셋 방법.
- 가산 방법에 있어서,리셋(reset) 상태, 상기 리셋 상태 보다 낮은 저항을 가지고 있고 상기 리셋 상태로부터 상기 리셋 상태의 셋 에너지에 상응하는 양의 에너지 공급에 의해 얻어질 수 있는 셋(set) 상태, 및 상기 리셋 상태와 실질적으로 동일한 저항을 가지고 있고 상기 리셋 상태로부터 상기 리셋 상태의 상기 셋 에너지 보다 적은 양의 에너지 공급에 의해 얻어질 수 있는 하나 이상의 중간 상태들을 포함하는 복수개의 상태들을 가진 디지털 멀티 상태 상 변화 물질(phase change material)을 제공하는 단계;상기 상 변화 물질의 제1영역에 제1의 수(number)의 특징을 가지는 에너지를 제공하는 단계를 포함해, 상기 상 변환 물질의 상기 제1영역 안에 상기 제1의 수를 저장하는 단계;상기 상 변화 물질로 제2의 수의 특징을 가지는 에너지를 제공하는 단계를 포함함을 특징으로 하는 가산 방법.
- 제57항에 있어서, 상기 저장 단계는 상기 상 변화 물질의 상기 제1영역의 리셋 상태에 대해 상기 제1의 수에 상응하는 에너지를 공급하는 단계를 포함함을 특징으로 하는 가산 방법.
- 제58항에 있어서, 상기 제1의 수에 상응하는 상기 에너지는 상기 제1의 수의 수치와 비례함을 특징으로 하는 가산 방법.
- 제57항에 있어서, 상기 제2의 수의 특징을 가진 에너지를 제공하는 단계는, 상기 상 변화 물질의 리셋 상태에 대해 상기 제2의 수에 상응하는 에너지를 제공하는 단계를 포함함을 특징으로 하는 가산 방법.
- 제60항에 있어서, 상기 제2의 수에 상응하는 상기 에너지는 상기 제2의 수의 수치와 비례함을 특징으로 하는 가산 방법.
- 제57항에 있어서, 상기 제2의 수의 특징을 보이는 상기 에너지가 상기 상 변화 물질의 상기 제1영역으로 제공됨을 특징으로 하는 가산 방법.
- 가산 방법에 있어서,리셋(reset) 상태, 상기 리셋 상태 보다 낮은 저항을 가지고 있고 상기 리셋 상태로부터 상기 리셋 상태의 셋 에너지에 상응하는 양의 에너지 공급에 의해 얻어질 수 있는 셋(set) 상태, 및 상기 리셋 상태와 실질적으로 동일한 저항을 가지고 있고 상기 리셋 상태로부터 상기 리셋 상태의 상기 셋 에너지 보다 적은 양의 에너지 공급에 의해 얻어질 수 있는 하나 이상의 중간 상태들을 포함하는 복수개의 상태들을 가진 디지털 멀티 상태 상 변화 물질(phase change material)을 제공하는 단계;상기 상 변화 물질에 대한 프로그래밍 상태들을 규정하는 단계를 포함하고, 상기 프로그래밍 상태들은 상기 복수개의 상태들로부터 선택되고, 상기 상 변화 물질을 리셋 상태에서 상기 프로그래밍 상태들로 전환시키는데 필요한 에너지량에 상응하고 상기 리셋 상태의 상기 셋 에너지를 초과하지 않는 프로그래밍 에너지들을 가지는 단계;상기 프로그래밍 상태들에 대해 수치들을 할당하는 단계;상기 상 변화 물질의 제1영역을 제1의 수의 수치와 결부된 프로그래밍 상태로 전환하는데 알맞는 양의 에너지를 공급하는 단계를 포함하여, 상기 상 변화 물질의 제1영역에 상기 제1의 수를 저장하는 단계;상기 상 변화 물질에 제2의 수의 특징을 가지는 에너지를 공급하는 단계를 포함함을 특징으로 하는 가산 방법.
- 제63항에 있어서, 상기 수치들은 상기 프로그래밍 상태들의 프로그래밍 에너지가 증가하면 증가됨을 특징으로 하는 가산 방법.
- 제63항에 있어서, 상기 수치들은 상기 프로그래밍 상태들의 프로그래밍 에너지들에 비례함을 특징으로 하는 가산 방법.
- 제63항에 있어서, 상기 수치들은 0부터 시작하는 연속되는 정수들임을 특징으로 하는 가산 방법.
- 제63항에 있어서, 상기 수치 0는 상기 상 변화 물질의 상기 셋 상태에 대해 할당됨을 특징으로 하는 가산 방법.
- 제63항에 있어서, 상기 제2의 수의 특징을 가진 상기 에너지는 상기 상 변화 물질을 상기 제2의 수의 수치와 결부된 프로그래밍 상태로 전환시키는데 필요한 에너지임을 특징으로 하는 가산 방법.
- 제63항에 있어서, 상기 제2의 수의 특징을 보이는 에너지를 제공하는 단계는 상기 상 변화 물질의 제2영역에 상기 제2의 수를 저장하는 단계를 포함하고, 상기 저장은 상기 상 변화 물질의 상기 제2영역을 상기 제2의 수의 수치와 결부된 프로그래밍 상태로 전환하는 단계를 포함함을 특징으로 하는 가산 방법.
- 제69항에 있어서,상기 상 변화 물질의 제1영역에 대해 상기 제1의 수의 수치와 결부된 프로그래밍 상태에서 셋 상태로의 전환을 일으키는 제1셋 에너지를 상기 상 변화 물질의 상기 제1영역에 제공하는 단계;상기 상 변화 물질의 제3영역의 리셋 상태에 대해 상기 제1셋 에너지를 제공하는 단계;상기 상 변화 물질의 상기 제3영역이 셋 상태로 전환할 수 있도록 하는 제2셋 에너지를 상기 상 변화 물질의 상기 제3영역에 제공하는 단계;상기 상 변화 물질의 제2영역에 상기 제2셋 에너지를 제공하는 단계;
- 가산 방법에 있어서,리셋(reset) 상태, 상기 리셋 상태 보다 낮은 저항을 가지고 있고 상기 리셋 상태로부터 상기 리셋 상태의 셋 에너지에 상응하는 양의 에너지 공급에 의해 얻어질 수 있는 셋(set) 상태, 및 상기 리셋 상태와 실질적으로 동일한 저항을 가지고 있고 상기 리셋 상태로부터 상기 리셋 상태의 상기 셋 에너지 보다 적은 양의 에너지 공급에 의해 얻어질 수 있는 하나 이상의 중간 상태들을 포함하는 복수개의 상태들을 가진 디지털 멀티 상태 상 변화 물질(phase change material)을 제공하는 단계;상기 상 변화 물질의 적어도 한 영역을, 각각이 하나의 멀티 디지트 수 저장을 위해 할당된 상기 상 변화 물질의 용량(volume)에 상응하는 메모리 그룹들로 구획짓는 단계;상기 메모리 그룹들을 복수개의 레지스터들로 분할하고, 상기 레지스터들은 상기 멀티 디지트 수의 한 디지트를 저장할 목적으로 할당된 상기 메모리 그룹의 일부에 해당하고, 상기 레지스터들은 상기 상 변화 물질의 상기 복수개의 상태들로부터 선택되고 상기 상 변화 물질을 리셋 상태에서 상기 프로그래밍 상태들로 전환시키는데 필요한 에너지량에 상응하고 상기 리셋 상태의 상기 셋 에너지를 초과하지 않는 프로그래밍 에너지들을 가지는 단계;상기 프로그래밍 상태들에 대해 수치들을 할당하는 단계;상기 메모리 그룹들의 레지스터들에 자리수를 결부시키고, 상기 메모리 그룹들 각각은 같은 자리수들을 포함하는 단계;제1메모리 그룹에 제1멀티 디지트 수를 쓰고, 상기 쓰는 단계에서 자리수에 따라 상기 제1메모리 그룹의 레지스터들 안에 상기 멀티 디지트 수의 디지트들을 저장하는 단계를 포함하고, 상기 저장 단계에서 상기 레지스터들을 상기 디지트들의 수치와 결부된 프로그래밍 상태들로 전환시키는 단계를 포함하는 단계;상기 상 변화 물질의 제2의 수의 특징을 보이는 에너지를 제공하는 단계를 포함함을 특징으로 하는 가산 방법.
- 제71항에 있어서, 상기 에너지 제공 단계는, 상기 제2의 수의 각 디지트의 특징을 보이는 에너지를 상기 제1메모리 그룹의 적절한 레지스터로 제공하는 단계를 포함하고, 상기 제1메모리 그룹의 상기 적절한 레지스터는 자리수에 있어 상기 제2의 수의 상기 디지트에 상응하는 레지스터임을 특징으로 하는 가산 방법.
- 제71항에 있어서, 상기 에너지 제공 단계는 제2메모리 그룹에 상기 제2의 수를 쓰는 단계를 포함하고, 상기 쓰는 단계에서는 상기 제2메모리 그룹의 별개의 레지스터들 안에 상기 제2의 수의 디지트들을 저장하는 단계를 포함하고, 상기 별개의 레지스터들 각각은 서로 다른 자리수를 갖는 디지트들에 해당하고, 상기 저장 단계에서는 상기 레지스터들을 상기 디지트들의 수치들과 결부된 프로그래밍 상태들로 전환시키는 단계를 포함함을 특징으로 하는 가산 방법.
- 제73항에 있어서,하나 이상의 메모리 그룹들의 레지스터들을 가리키기 위한 것으로, 카운터 프로그래밍 상태들에 해당하는 카운터 값들을 갖는 카운터를 설정하는 단계;한 디지트가 저장되는 상기 제1메모리 그룹의 각 레지스터를, 연속적인 일련의 상기 카운터 프로그래밍 상태들 중 하나와 결부시키는 단계;상기 제2메모리 그룹의 각 레지스터를 동일한 자리수를 가진 상기 제1메모리 그룹의 레지스터와 결부된 카운터 프로그래밍 상태와 결부시키는 단계;상기 제3메모리 그룹의 각 레지스터를 동일한 자리수를 가진 상기 제1메모리 그룹의 레지스터와 결부된 카운터 프로그래밍 상태와 결부시키는 단계;상기 일련의 연속적인 프로그래밍 상태들 안에서 가장 낮은 카운터 값을 가지는 카운터 프로그래밍 상태에 상응하는 초기 카운터 프로그래밍 상태에 해당하도록 초기 카운터 값을 초기화하는 단계;상기 카운터는 상기 일련의 연속 카운터 값들 안의 한 카운터 값을 가지면서, 다음의 a~e 단계들을 반복 수행하는 단계:a. 상기 카운터에 의해 지시되고 있고 상기 카운터 값과 관련된 상기 제1메모리 그룹의 레지스터에 해당하는 레지스터에, 이 지시되고 있는 제1그룹의 레지스터를 셋 상태로 변환시키는 제1셋 에너지를 제공하는 단계,b. 상기 카운터에 의해 지시되고 있고 상기 카운터 값과 관련된 상기 제3메모리 그룹의 레지스터에 해당하는 레지스터의 리셋 상태에 대해 상기 제1셋 에너지를 제공하는 단계,c. 상기 지시되고 있는 상기 제3메모리 그룹의 상기 레지스터에, 상기 지시되고 있는 제3그룹의 상기 레지스터를 셋 상태로 변환시키는 제2셋 에너지를 제공하는 단계,d. 상기 카운터에 의해 지시되고 있고 상기 카운터의 값과 연관된 상기 제2그룹의 레지스터에 해당하는 레지스터에 상기 제2셋 에너지를 제공하는 단계,e. 상기 카운터의 값을 증가시키는 단계를 포함함을 특징으로 하는 가산 방법.
- 제74항에 있어서, 상기 카운터는 상기 상 변화 물질로 이뤄짐을 특징으로 하는 가산 방법.
- 제75항에 있어서, 상기 카운터 프로그래밍 상태들은 상기 상 변화 물질의 상기 복수개의 상태들로부터 선택됨을 특징으로 하는 가산 방법.
- 제76항에 있어서, 상기 a~e 단계의 반복적 수행의 결과에 따른 상기 카운터 프로그래밍 상태는 상기 상 변화 물질의 셋 상태임을 특징으로 하는 가산 방법.
- 제74항에 있어서, 카운터 프로그래밍 상태들의 개수는 상기 레지스터들의 프로그래밍 상태들의 개수와 동일함을 특징으로 하는 가산 방법.
- 감산 방법에 있어서,리셋(reset) 상태, 상기 리셋 상태 보다 낮은 저항을 가지고 있고 상기 리셋 상태로부터 상기 리셋 상태의 셋 에너지에 상응하는 양의 에너지 공급에 의해 얻어질 수 있는 셋(set) 상태, 및 상기 리셋 상태와 실질적으로 동일한 저항을 가지고 있고 상기 리셋 상태로부터 상기 리셋 상태의 상기 셋 에너지 보다 적은 양의 에너지 공급에 의해 얻어질 수 있는 하나 이상의 중간 상태들을 포함하는 복수개의 상태들을 가진 디지털 멀티 상태 상 변화 물질(phase change material)을 제공하는 단계;제1용량의 상기 상 변화 물질 안에 제1의 수를 저장하고, 상기 저장 단계에서 상기 리셋 상태의 상기 셋 에너지를 초과하지 않고 상기 제1의 수의 특징을 보이는 에너지를 상기 제1용량의 상기 상 변화 물질의 리셋 상태에 제공하는 단계를 포함하는 단계;제2용량의 상기 상 변화 물질 안에 제2의 수를 저장하고, 상기 저장 단계에서 상기 리셋 상태의 상기 셋 에너지를 초과하지 않고 상기 제1의 수의 특징을 보이는 에너지를 상기 제2용량의 상기 상 변화 물질의 리셋 상태에 제공하는 단계를 포함하는 단계;상기 제1용량의 상 변화 물질로 그것을 셋 상태로 전환시키는 제1셋 에너지를 제공하는 단계;상기 제2용량의 상 변화 물질로 상기 제1셋 에너지를 제공하는 단계를 포함함을 특징으로 하는 감산 방법.
- 제79항에 있어서, 상기 제1의 수의 특징을 보이는 상기 에너지는 상기 제1의 수와 비례하고, 상기 제2의 수의 특징을 보이는 상기 에너지는 상기 제2의 수와 비례함을 특징으로 하는 감산 방법.
- 제79항에 있어서, 상기 제1셋 에너지를 상기 제2용량에 제공하는 단계는,상기 제1셋 에너지 중 상기 제2용량을을 셋 상태로 전환시키는데 알맞는 제1부분을 제공하는 단계;상기 제2용량을 리셋시키는 단계;상기 제1셋 에너지의 남은 부분을 상기 제2용량에 제공하는 단계를 포함함을 특징으로 하는 감산 방법.
- 제79항에 있어서,상기 상 변화 물질에 대해, 상기 복수개의 상태들로부터 선택되고 프로그래밍 에너지들을 가지는 프로그래밍 상태들을 규정하고, 상기 프로그래밍 에너지들은 상기 상 변화 물질을 리셋 상태로부터 상기 프로그래밍 상태들로 변환시키는데 필요로 되는 에너지 량에 해당하고 상기 리셋 상태의 상기 셋 에너지를 초과하지 않도록 하는 단계;상기 프로그래밍 상태들에 대해 수치값들을 할당하는 단계를 더 포함함을 특징으로 하는 감산 방법.
- 제82항에 있어서, 상기 제1의 수를 저장하는 단계는, 상기 제1용량의 상기 상 변화 물질을 상기 제1의 수의 수치와 결부된 프로그래밍 상태로 변환시키기 알맞는 에너지 량을 제공하는 단계를 포함함을 특징으로 하는 감산 방법.
- 제82항에 있어서, 상기 제2의 수를 저장하는 단계는, 상기 제2용량의 상기 상 변화 물질을 상기 제2의 수의 수치와 결부된 프로그래밍 상태로 변환시키기 알맞도록 에너지 량을 제공하는 단계를 포함함을 특징으로 하는 감산 방법.
- 제1의 수와 제2의 수의 곱셈 방법에 있어서,리셋(reset) 상태, 상기 리셋 상태 보다 낮은 저항을 가지고 있고 상기 리셋 상태로부터 상기 리셋 상태의 셋 에너지에 상응하는 양의 에너지 공급에 의해 얻어질 수 있는 셋(set) 상태, 및 상기 리셋 상태와 실질적으로 동일한 저항을 가지고 있고 상기 리셋 상태로부터 상기 리셋 상태의 상기 셋 에너지 보다 적은 양의 에너지 공급에 의해 얻어질 수 있는 하나 이상의 중간 상태들을 포함하는 복수개의 상태들을 가진 디지털 멀티 상태 상 변화 물질(phase change material)을 제공하는 단계;상기 제1의 수를 상기 상 변화 물질의 제1영역에 저장하는 단계;다중 레지스터에 초기값을 설정하는 단계;다중 레지스터의 값이 상기 초기값과 상기 제2의 수의 합 보다 적을 때, 이하의 a~b 단계를 수행하는 단계:a. 상기 제1의 수의 특징을 보이는 에너지를 상기 상 변화 물질의 상기 제1영역으로 제공하는 단계를 포함하여, 상기 상 변화 물질의 상기 제1영역 안에 저장된 수에 상기 제1의 수를 가산하는 단계,b. 상기 다중 레지스터를 증가시키는 단계;상기 상 변화 물질의 상기 제1영역에 저장된 값을 읽는 단계를 포함함을 특징으로 하는 곱셈 방법.
- 제85항에 있어서,상기 상 변화 물질에 대해, 상기 상 변화 물질을 리셋 상태에서 프로그래밍 상태들로 변환시키는데 필요한 에너지량에 해당하고 상기 리셋 상태의 상기 셋 에너지를 초과하지 않는 프로그래밍 에너지들을 가지는 프로그래밍 상태들을 상기 복수개의 상태들로부터 선택하여 규정하는 단계;상기 프로그래밍 상태들에 수치들을 할당하는 단계를 더 포함함을 특징으로 하는 곱셈 방법.
- 제86항에 있어서, 상기 저장 단계는, 상기 상 변화 물질의 상기 제1영역을 상기 제1의 수와 결부된 프로그래밍 상태로 변환시키는데 알맞는 양의 에너지를 제공하는 단계를 포함함을 특징으로 하는 곱셈 방법.
- 제86항에 있어서, 상기 제1의 수의 특징을 보이는 상기 에너지는 상기 상 변화 물질을 리셋 상태로부터 상기 제1의 수와 결부된 프로그래밍 상태로 변환시키는데 필요한 에너지임을 특징으로 하는 곱셈 방법.
- 제85항에 있어서, 상기 다중 레지스터는 상기 상 변화 물질의 제2영역을 구비함을 특징으로 하는 곱셈 방법.
- 제1의 수를 제2의 수로 나눗셈하는 방법에 있어서,리셋(reset) 상태, 상기 리셋 상태 보다 낮은 저항을 가지고 있고 상기 리셋상태로부터 상기 리셋 상태의 셋 에너지에 상응하는 양의 에너지 공급에 의해 얻어질 수 있는 셋(set) 상태, 및 상기 리셋 상태와 실질적으로 동일한 저항을 가지고 있고 상기 리셋 상태로부터 상기 리셋 상태의 상기 셋 에너지 보다 적은 양의 에너지 공급에 의해 얻어질 수 있는 하나 이상의 중간 상태들을 포함하는 복수개의 상태들을 가진 디지털 멀티 상태 상 변화 물질(phase change material)을 제공하는 단계;상기 제1의 수를 상기 상 변화 물질의 제1영역에 저장하는 단계;다중 레지스터에 초기값을 설정하는 단계;상기 상 변화 물질에 저장된 수가 상기 제2의 수와 같거나 더 큰 동안, 이하의 a~b 단계를 반복적으로 수행하는 단계:a. 상기 상 변화 물질을 상기 저장된 수와 상기 제2의 수 사이의 차에 해당하는 한 상태로 변환시키도록 에너지를 제공하는 단계를 포함하여, 상기 상 변화 물질에 저장된 상기 수로부터 상기 제2의 수를 감산하는 단계,b. 상기 다중 레지스터를 증가시키는 단계;상기 상 변화 물질에 저장된 수를 읽는 단계;상기 다중 레지스터의 값을 읽는 단계를 포함함을 특징으로 하는 나눗셈 방법.
- 제90항에 있어서,상기 상 변화 물질에 대해, 상기 상 변화 물질을 리셋 상태에서 프로그래밍상태들로 변환시키는데 필요한 에너지량에 해당하고 상기 리셋 상태의 상기 셋 에너지를 초과하지 않는 프로그래밍 에너지들을 가지는 프로그래밍 상태들을 상기 복수개의 상태들로부터 선택하여 규정하는 단계;상기 프로그래밍 상태들에 수치들을 할당하는 단계를 더 포함함을 특징으로 하는 나눗셈 방법.
- 제91항에 있어서, 상기 저장 단계는 상기 상 변화 물질의 상기 제1영역을 상기 제1의 수와 결부된 프로그래밍 상태로 변환시키는데 알맞는 양의 에너지를 제공하는 단계를 포함함을 특징으로 하는 나눗셈 방법.
- 제91항에 있어서, 상기 제1의 수의 특징을 보이는 상기 에너지는 상기 상 변화 물질을 리셋 상태로부터 상기 제1의 수와 결부된 프로그래밍 상태로 변환시키는데 필요한 에너지임을 특징으로 하는 나눗셈 방법.
- 제89항에 있어서, 상기 다중 레지스터는 상기 상 변화 물질의 제2영역을 구비함을 특징으로 하는 나눗셈 방법.
- 한 수의 보수를 계산하는 방법에 있어서,리셋(reset) 상태, 상기 리셋 상태 보다 낮은 저항을 가지고 있고 상기 리셋 상태로부터 상기 리셋 상태의 셋 에너지에 상응하는 양의 에너지 공급에 의해 얻어질 수 있는 셋(set) 상태, 및 상기 리셋 상태와 실질적으로 동일한 저항을 가지고 있고 상기 리셋 상태로부터 상기 리셋 상태의 상기 셋 에너지 보다 적은 양의 에너지 공급에 의해 얻어질 수 있는 하나 이상의 중간 상태들을 포함하는 복수개의 상태들을 가진 디지털 멀티 상태 상 변화 물질(phase change material)을 제공하는 단계;상기 상 변화 물질의 리셋 상태에 대해, 저장하고자 하는 한 수에 해당하고 상기 리셋 상태의 셋 에너지를 초과하지 않는 에너지를 제공하는 단계를 포함하여, 상기 상 변화 물질의 제1영역에 상기 한 수를 저장하는 단계;상기 상 변화 물질의 상기 제1영역에, 그 제1영역을 셋 상태로 변환시키는 세팅 에너지를 제공하는 단계;상기 상 변화 물질의 제2영역에 상기 세팅 에너지를 제공하는 단계를 포함함을 특징으로 하는 보수 계산 방법.
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US10/144,319 | 2002-05-10 | ||
US10/144,319 US6671710B2 (en) | 2002-05-10 | 2002-05-10 | Methods of computing with digital multistate phase change materials |
PCT/US2003/013754 WO2003096177A1 (en) | 2002-05-10 | 2003-05-01 | Methods of computing with digital multistate phase change materials |
Publications (1)
Publication Number | Publication Date |
---|---|
KR20050012742A true KR20050012742A (ko) | 2005-02-02 |
Family
ID=29400307
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR10-2004-7018175A KR20050012742A (ko) | 2002-05-10 | 2003-05-01 | 디지털 멀티 상태 상 변화 물질을 이용한 계산 방법 |
Country Status (7)
Country | Link |
---|---|
US (6) | US6671710B2 (ko) |
EP (1) | EP1504334A4 (ko) |
JP (1) | JP2005527026A (ko) |
KR (1) | KR20050012742A (ko) |
CN (1) | CN1666172A (ko) |
AU (1) | AU2003245256A1 (ko) |
WO (1) | WO2003096177A1 (ko) |
Families Citing this family (117)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7935951B2 (en) * | 1996-10-28 | 2011-05-03 | Ovonyx, Inc. | Composite chalcogenide materials and devices |
US6638820B2 (en) | 2001-02-08 | 2003-10-28 | Micron Technology, Inc. | Method of forming chalcogenide comprising devices, method of precluding diffusion of a metal into adjacent chalcogenide material, and chalcogenide comprising devices |
JP4742429B2 (ja) * | 2001-02-19 | 2011-08-10 | 住友電気工業株式会社 | ガラス微粒子堆積体の製造方法 |
US6727192B2 (en) * | 2001-03-01 | 2004-04-27 | Micron Technology, Inc. | Methods of metal doping a chalcogenide material |
US6734455B2 (en) * | 2001-03-15 | 2004-05-11 | Micron Technology, Inc. | Agglomeration elimination for metal sputter deposition of chalcogenides |
US7102150B2 (en) | 2001-05-11 | 2006-09-05 | Harshfield Steven T | PCRAM memory cell and method of making same |
US6951805B2 (en) * | 2001-08-01 | 2005-10-04 | Micron Technology, Inc. | Method of forming integrated circuitry, method of forming memory circuitry, and method of forming random access memory circuitry |
JP2003058364A (ja) * | 2001-08-20 | 2003-02-28 | Hiroshi Fukuda | 多信号の方法に於ける加乗算の計算方法、加減乗除用回路と方法、とソフトによる表の加減乗除方法 |
US6784018B2 (en) * | 2001-08-29 | 2004-08-31 | Micron Technology, Inc. | Method of forming chalcogenide comprising devices and method of forming a programmable memory cell of memory circuitry |
US6955940B2 (en) * | 2001-08-29 | 2005-10-18 | Micron Technology, Inc. | Method of forming chalcogenide comprising devices |
US6881623B2 (en) * | 2001-08-29 | 2005-04-19 | Micron Technology, Inc. | Method of forming chalcogenide comprising devices, method of forming a programmable memory cell of memory circuitry, and a chalcogenide comprising device |
US20030047765A1 (en) * | 2001-08-30 | 2003-03-13 | Campbell Kristy A. | Stoichiometry for chalcogenide glasses useful for memory devices and method of formation |
US6709958B2 (en) * | 2001-08-30 | 2004-03-23 | Micron Technology, Inc. | Integrated circuit device and fabrication using metal-doped chalcogenide materials |
US6815818B2 (en) * | 2001-11-19 | 2004-11-09 | Micron Technology, Inc. | Electrode structure for use in an integrated circuit |
US6791859B2 (en) * | 2001-11-20 | 2004-09-14 | Micron Technology, Inc. | Complementary bit PCRAM sense amplifier and method of operation |
US6873538B2 (en) * | 2001-12-20 | 2005-03-29 | Micron Technology, Inc. | Programmable conductor random access memory and a method for writing thereto |
US6909656B2 (en) * | 2002-01-04 | 2005-06-21 | Micron Technology, Inc. | PCRAM rewrite prevention |
US20030143782A1 (en) | 2002-01-31 | 2003-07-31 | Gilton Terry L. | Methods of forming germanium selenide comprising devices and methods of forming silver selenide comprising structures |
US6867064B2 (en) * | 2002-02-15 | 2005-03-15 | Micron Technology, Inc. | Method to alter chalcogenide glass for improved switching characteristics |
US6791885B2 (en) | 2002-02-19 | 2004-09-14 | Micron Technology, Inc. | Programmable conductor random access memory and method for sensing same |
US7087919B2 (en) * | 2002-02-20 | 2006-08-08 | Micron Technology, Inc. | Layered resistance variable memory device and method of fabrication |
US6809362B2 (en) * | 2002-02-20 | 2004-10-26 | Micron Technology, Inc. | Multiple data state memory cell |
US6891749B2 (en) * | 2002-02-20 | 2005-05-10 | Micron Technology, Inc. | Resistance variable ‘on ’ memory |
US7151273B2 (en) | 2002-02-20 | 2006-12-19 | Micron Technology, Inc. | Silver-selenide/chalcogenide glass stack for resistance variable memory |
US6937528B2 (en) * | 2002-03-05 | 2005-08-30 | Micron Technology, Inc. | Variable resistance memory and method for sensing same |
US6849868B2 (en) * | 2002-03-14 | 2005-02-01 | Micron Technology, Inc. | Methods and apparatus for resistance variable material cells |
US6855975B2 (en) * | 2002-04-10 | 2005-02-15 | Micron Technology, Inc. | Thin film diode integrated with chalcogenide memory cell |
US6858482B2 (en) * | 2002-04-10 | 2005-02-22 | Micron Technology, Inc. | Method of manufacture of programmable switching circuits and memory cells employing a glass layer |
US6864500B2 (en) * | 2002-04-10 | 2005-03-08 | Micron Technology, Inc. | Programmable conductor memory cell structure |
DE10219161A1 (de) * | 2002-04-29 | 2003-11-20 | Infineon Technologies Ag | Vorrichtung und Verfahren zum Umrechnen eines Terms |
US6825135B2 (en) * | 2002-06-06 | 2004-11-30 | Micron Technology, Inc. | Elimination of dendrite formation during metal/chalcogenide glass deposition |
US6890790B2 (en) * | 2002-06-06 | 2005-05-10 | Micron Technology, Inc. | Co-sputter deposition of metal-doped chalcogenides |
US6891170B1 (en) * | 2002-06-17 | 2005-05-10 | Zyvex Corporation | Modular manipulation system for manipulating a sample under study with a microscope |
US7015494B2 (en) * | 2002-07-10 | 2006-03-21 | Micron Technology, Inc. | Assemblies displaying differential negative resistance |
JP4027282B2 (ja) * | 2002-07-10 | 2007-12-26 | キヤノン株式会社 | インクジェット記録ヘッド |
US7209378B2 (en) * | 2002-08-08 | 2007-04-24 | Micron Technology, Inc. | Columnar 1T-N memory cell structure |
US7018863B2 (en) * | 2002-08-22 | 2006-03-28 | Micron Technology, Inc. | Method of manufacture of a resistance variable memory cell |
US6867114B2 (en) * | 2002-08-29 | 2005-03-15 | Micron Technology Inc. | Methods to form a memory cell with metal-rich metal chalcogenide |
US7010644B2 (en) * | 2002-08-29 | 2006-03-07 | Micron Technology, Inc. | Software refreshed memory device and method |
US7163837B2 (en) * | 2002-08-29 | 2007-01-16 | Micron Technology, Inc. | Method of forming a resistance variable memory element |
US6831019B1 (en) * | 2002-08-29 | 2004-12-14 | Micron Technology, Inc. | Plasma etching methods and methods of forming memory devices comprising a chalcogenide comprising layer received operably proximate conductive electrodes |
US20040040837A1 (en) * | 2002-08-29 | 2004-03-04 | Mcteer Allen | Method of forming chalcogenide sputter target |
US7364644B2 (en) * | 2002-08-29 | 2008-04-29 | Micron Technology, Inc. | Silver selenide film stoichiometry and morphology control in sputter deposition |
US6864521B2 (en) * | 2002-08-29 | 2005-03-08 | Micron Technology, Inc. | Method to control silver concentration in a resistance variable memory element |
US6867996B2 (en) * | 2002-08-29 | 2005-03-15 | Micron Technology, Inc. | Single-polarity programmable resistance-variable memory element |
US6856002B2 (en) * | 2002-08-29 | 2005-02-15 | Micron Technology, Inc. | Graded GexSe100-x concentration in PCRAM |
US7519603B2 (en) * | 2002-11-27 | 2009-04-14 | Zyvex Labs, Llc | Efficient data structure |
US7272608B2 (en) | 2002-11-27 | 2007-09-18 | Zyvex Labs, Llc | Isosurface extraction into splat hierarchy |
US7272607B2 (en) | 2002-11-27 | 2007-09-18 | Zyvex Labs, Llc | System and method for processing a hierarchical data tree |
US7085155B2 (en) * | 2003-03-10 | 2006-08-01 | Energy Conversion Devices, Inc. | Secured phase-change devices |
US6813178B2 (en) * | 2003-03-12 | 2004-11-02 | Micron Technology, Inc. | Chalcogenide glass constant current device, and its method of fabrication and operation |
US7022579B2 (en) * | 2003-03-14 | 2006-04-04 | Micron Technology, Inc. | Method for filling via with metal |
US7050327B2 (en) * | 2003-04-10 | 2006-05-23 | Micron Technology, Inc. | Differential negative resistance memory |
US20040257848A1 (en) * | 2003-06-18 | 2004-12-23 | Macronix International Co., Ltd. | Method for adjusting the threshold voltage of a memory cell |
JP3752589B2 (ja) * | 2003-06-25 | 2006-03-08 | 松下電器産業株式会社 | 不揮発性メモリを駆動する方法 |
US6930909B2 (en) * | 2003-06-25 | 2005-08-16 | Micron Technology, Inc. | Memory device and methods of controlling resistance variation and resistance profile drift |
US7061004B2 (en) * | 2003-07-21 | 2006-06-13 | Micron Technology, Inc. | Resistance variable memory elements and methods of formation |
US6903361B2 (en) * | 2003-09-17 | 2005-06-07 | Micron Technology, Inc. | Non-volatile memory structure |
EP1671346A2 (en) * | 2003-09-23 | 2006-06-21 | Zyvex Corporation | Method, system and device for microscopic examination employing fib-prepared sample grasping element |
JP4047795B2 (ja) * | 2003-10-31 | 2008-02-13 | 株式会社東芝 | 量子計算方法および量子計算機 |
US7485891B2 (en) * | 2003-11-20 | 2009-02-03 | International Business Machines Corporation | Multi-bit phase change memory cell and multi-bit phase change memory including the same, method of forming a multi-bit phase change memory, and method of programming a multi-bit phase change memory |
US7153721B2 (en) * | 2004-01-28 | 2006-12-26 | Micron Technology, Inc. | Resistance variable memory elements based on polarized silver-selenide network growth |
US7105864B2 (en) * | 2004-01-29 | 2006-09-12 | Micron Technology, Inc. | Non-volatile zero field splitting resonance memory |
TW200531420A (en) | 2004-02-20 | 2005-09-16 | Zyvex Corp | Positioning device for microscopic motion |
DE602005002379T2 (de) | 2004-02-23 | 2008-06-12 | Zyvex Instruments, LLC, Richardson | Benutzung einer Sonde in einer Teilchenstrahlvorrichtung |
US7098068B2 (en) * | 2004-03-10 | 2006-08-29 | Micron Technology, Inc. | Method of forming a chalcogenide material containing device |
US7583551B2 (en) | 2004-03-10 | 2009-09-01 | Micron Technology, Inc. | Power management control and controlling memory refresh operations |
US7326293B2 (en) | 2004-03-26 | 2008-02-05 | Zyvex Labs, Llc | Patterned atomic layer epitaxy |
US7354793B2 (en) | 2004-08-12 | 2008-04-08 | Micron Technology, Inc. | Method of forming a PCRAM device incorporating a resistance-variable chalocogenide element |
US7190048B2 (en) * | 2004-07-19 | 2007-03-13 | Micron Technology, Inc. | Resistance variable memory device and method of fabrication |
US7326950B2 (en) | 2004-07-19 | 2008-02-05 | Micron Technology, Inc. | Memory device with switching glass layer |
US7365411B2 (en) * | 2004-08-12 | 2008-04-29 | Micron Technology, Inc. | Resistance variable memory with temperature tolerant materials |
US7151688B2 (en) * | 2004-09-01 | 2006-12-19 | Micron Technology, Inc. | Sensing of resistance variable memory devices |
US7272037B2 (en) * | 2004-10-29 | 2007-09-18 | Macronix International Co., Ltd. | Method for programming a multilevel phase change memory device |
US20060131555A1 (en) * | 2004-12-22 | 2006-06-22 | Micron Technology, Inc. | Resistance variable devices with controllable channels |
US7374174B2 (en) * | 2004-12-22 | 2008-05-20 | Micron Technology, Inc. | Small electrode for resistance variable devices |
US7391642B2 (en) * | 2005-01-25 | 2008-06-24 | Intel Corporation | Multilevel programming of phase change memory cells |
US7317200B2 (en) | 2005-02-23 | 2008-01-08 | Micron Technology, Inc. | SnSe-based limited reprogrammable cell |
US7427770B2 (en) * | 2005-04-22 | 2008-09-23 | Micron Technology, Inc. | Memory array for increased bit density |
US7709289B2 (en) | 2005-04-22 | 2010-05-04 | Micron Technology, Inc. | Memory elements having patterned electrodes and method of forming the same |
US7269044B2 (en) * | 2005-04-22 | 2007-09-11 | Micron Technology, Inc. | Method and apparatus for accessing a memory array |
US7269079B2 (en) * | 2005-05-16 | 2007-09-11 | Micron Technology, Inc. | Power circuits for reducing a number of power supply voltage taps required for sensing a resistive memory |
US7233520B2 (en) * | 2005-07-08 | 2007-06-19 | Micron Technology, Inc. | Process for erasing chalcogenide variable resistance memory bits |
US7274034B2 (en) * | 2005-08-01 | 2007-09-25 | Micron Technology, Inc. | Resistance variable memory device with sputtered metal-chalcogenide region and method of fabrication |
US7317567B2 (en) * | 2005-08-02 | 2008-01-08 | Micron Technology, Inc. | Method and apparatus for providing color changing thin film material |
US7332735B2 (en) | 2005-08-02 | 2008-02-19 | Micron Technology, Inc. | Phase change memory cell and method of formation |
US20070034850A1 (en) * | 2005-08-09 | 2007-02-15 | Ovonyx, Inc. | Chalcogenide devices incorporating chalcogenide materials having reduced germanium or telluruim content |
US7525117B2 (en) * | 2005-08-09 | 2009-04-28 | Ovonyx, Inc. | Chalcogenide devices and materials having reduced germanium or telluruim content |
US7767992B2 (en) * | 2005-08-09 | 2010-08-03 | Ovonyx, Inc. | Multi-layer chalcogenide devices |
US20070037316A1 (en) * | 2005-08-09 | 2007-02-15 | Micron Technology, Inc. | Memory cell contact using spacers |
US7579615B2 (en) * | 2005-08-09 | 2009-08-25 | Micron Technology, Inc. | Access transistor for memory device |
US7304368B2 (en) * | 2005-08-11 | 2007-12-04 | Micron Technology, Inc. | Chalcogenide-based electrokinetic memory element and method of forming the same |
US7251154B2 (en) | 2005-08-15 | 2007-07-31 | Micron Technology, Inc. | Method and apparatus providing a cross-point memory array using a variable resistance memory cell and capacitance |
US7277313B2 (en) * | 2005-08-31 | 2007-10-02 | Micron Technology, Inc. | Resistance variable memory element with threshold device and method of forming the same |
US7426134B2 (en) * | 2006-02-24 | 2008-09-16 | Infineon Technologies North America | Sense circuit for resistive memory |
US9965251B2 (en) * | 2006-04-03 | 2018-05-08 | Blaise Laurent Mouttet | Crossbar arithmetic and summation processor |
US20070233761A1 (en) * | 2006-04-03 | 2007-10-04 | Mouttet Blaise L | Crossbar arithmetic processor |
US7560723B2 (en) | 2006-08-29 | 2009-07-14 | Micron Technology, Inc. | Enhanced memory density resistance variable memory cells, arrays, devices and systems including the same, and methods of fabrication |
US7969769B2 (en) * | 2007-03-15 | 2011-06-28 | Ovonyx, Inc. | Multi-terminal chalcogenide logic circuits |
US7821810B2 (en) * | 2008-03-14 | 2010-10-26 | Micron Technology, Inc. | Phase change memory adaptive programming |
US8467236B2 (en) | 2008-08-01 | 2013-06-18 | Boise State University | Continuously variable resistor |
US8148707B2 (en) | 2008-12-30 | 2012-04-03 | Stmicroelectronics S.R.L. | Ovonic threshold switch film composition for TSLAGS material |
IT1392921B1 (it) * | 2009-02-11 | 2012-04-02 | St Microelectronics Srl | Regioni allocabili dinamicamente in memorie non volatili |
US8447714B2 (en) * | 2009-05-21 | 2013-05-21 | International Business Machines Corporation | System for electronic learning synapse with spike-timing dependent plasticity using phase change memory |
US8250010B2 (en) | 2009-05-21 | 2012-08-21 | International Business Machines Corporation | Electronic learning synapse with spike-timing dependent plasticity using unipolar memory-switching elements |
CN102156625B (zh) * | 2011-03-31 | 2012-11-21 | 北京大学 | 利用阻变器件进行除法计算的方法 |
CN102299692B (zh) * | 2011-06-29 | 2013-06-12 | 北京大学 | 一种基于阻变器件的加法器电路 |
US20140207839A1 (en) * | 2011-07-26 | 2014-07-24 | Sherwin Han | Spatial Arithmetic Method of Integer Factorization |
US10866807B2 (en) * | 2011-12-22 | 2020-12-15 | Intel Corporation | Processors, methods, systems, and instructions to generate sequences of integers in numerical order that differ by a constant stride |
US10565283B2 (en) | 2011-12-22 | 2020-02-18 | Intel Corporation | Processors, methods, systems, and instructions to generate sequences of consecutive integers in numerical order |
US10223111B2 (en) | 2011-12-22 | 2019-03-05 | Intel Corporation | Processors, methods, systems, and instructions to generate sequences of integers in which integers in consecutive positions differ by a constant integer stride and where a smallest integer is offset from zero by an integer offset |
GB2562185B (en) | 2014-04-14 | 2019-02-27 | Pragmatic Printing Ltd | Method of Storing and Reading Data and Data Storage System |
GB2532086A (en) * | 2014-11-10 | 2016-05-11 | Provost Fellows Found Scholars & Other Members Board College Holy & Und | An associative memory learning device |
GB2550903B (en) * | 2016-05-27 | 2019-06-12 | Arm Ip Ltd | Context data control |
CN112486454B (zh) * | 2019-09-12 | 2023-07-11 | 北京华航无线电测量研究所 | 一种基于fpga的序列多峰值搜索排序装置 |
US11936374B1 (en) | 2022-09-23 | 2024-03-19 | Psemi Corporation | Driver with built-in self testing of switch status |
US20240106420A1 (en) * | 2022-09-23 | 2024-03-28 | Psemi Corporation | Temperature-controlled driver with built-in self testing of switch status |
Family Cites Families (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US3421147A (en) * | 1965-05-07 | 1969-01-07 | Bell Telephone Labor Inc | Buffer arrangement |
SU886049A1 (ru) * | 1980-02-05 | 1981-11-30 | Киевский Ордена Ленина Политехнический Институт Им. 50-Летия Великой Октябрьской Социалистической Революции | Запоминающее устройство |
US5159661A (en) * | 1990-10-05 | 1992-10-27 | Energy Conversion Devices, Inc. | Vertically interconnected parallel distributed processor |
US5825046A (en) * | 1996-10-28 | 1998-10-20 | Energy Conversion Devices, Inc. | Composite memory material comprising a mixture of phase-change memory material and dielectric material |
US5912839A (en) | 1998-06-23 | 1999-06-15 | Energy Conversion Devices, Inc. | Universal memory element and method of programming same |
US6141241A (en) | 1998-06-23 | 2000-10-31 | Energy Conversion Devices, Inc. | Universal memory element with systems employing same and apparatus and method for reading, writing and programming same |
US6448576B1 (en) * | 2001-08-30 | 2002-09-10 | Bae Systems Information And Electronic Systems Integration, Inc. | Programmable chalcogenide fuse within a semiconductor device |
-
2002
- 2002-05-10 US US10/144,319 patent/US6671710B2/en not_active Expired - Lifetime
- 2002-05-24 US US10/155,527 patent/US6714954B2/en not_active Expired - Lifetime
-
2003
- 2003-05-01 WO PCT/US2003/013754 patent/WO2003096177A1/en active Application Filing
- 2003-05-01 AU AU2003245256A patent/AU2003245256A1/en not_active Abandoned
- 2003-05-01 JP JP2004504104A patent/JP2005527026A/ja not_active Ceased
- 2003-05-01 EP EP03738893A patent/EP1504334A4/en not_active Withdrawn
- 2003-05-01 KR KR10-2004-7018175A patent/KR20050012742A/ko not_active Application Discontinuation
- 2003-05-01 CN CN03816261XA patent/CN1666172A/zh active Pending
- 2003-11-03 US US10/699,897 patent/US20040098434A1/en not_active Abandoned
- 2003-12-03 US US10/726,785 patent/US7440990B2/en not_active Expired - Lifetime
- 2003-12-03 US US10/726,985 patent/US6963893B2/en not_active Expired - Fee Related
-
2005
- 2005-08-26 US US11/213,027 patent/US20050283515A1/en not_active Abandoned
Also Published As
Publication number | Publication date |
---|---|
US20040078406A1 (en) | 2004-04-22 |
JP2005527026A (ja) | 2005-09-08 |
EP1504334A4 (en) | 2006-03-01 |
US6963893B2 (en) | 2005-11-08 |
US20030212724A1 (en) | 2003-11-13 |
US6671710B2 (en) | 2003-12-30 |
US7440990B2 (en) | 2008-10-21 |
EP1504334A1 (en) | 2005-02-09 |
AU2003245256A1 (en) | 2003-11-11 |
CN1666172A (zh) | 2005-09-07 |
US20050283515A1 (en) | 2005-12-22 |
US20030212725A1 (en) | 2003-11-13 |
US6714954B2 (en) | 2004-03-30 |
US20040098434A1 (en) | 2004-05-20 |
US20040078415A1 (en) | 2004-04-22 |
WO2003096177A1 (en) | 2003-11-20 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR20050012742A (ko) | 디지털 멀티 상태 상 변화 물질을 이용한 계산 방법 | |
Zidan et al. | A general memristor-based partial differential equation solver | |
Wan et al. | A compute-in-memory chip based on resistive random-access memory | |
Nandakumar et al. | Mixed-precision deep learning based on computational memory | |
Kim et al. | Multistate memristive tantalum oxide devices for ternary arithmetic | |
Sherry et al. | How fast do algorithms improve?[point of view] | |
Khaddam-Aljameh et al. | An SRAM-based multibit in-memory matrix-vector multiplier with a precision that scales linearly in area, time, and power | |
Nandakumar et al. | Mixed-precision training of deep neural networks using computational memory | |
Kaneko et al. | Quantum speedup of Monte Carlo integration with respect to the number of dimensions and its application to finance | |
Kaneko et al. | Quantum pricing with a smile: Implementation of local volatility model on quantum computer | |
Fouad et al. | Memristor-based quinary half adder | |
CN115587620A (zh) | 神经形态装置和包括该神经形态装置的电子装置 | |
Karimzadeh et al. | Bits-net: Bit-sparse deep neural network for energy-efficient rram-based compute-in-memory | |
Bhattacharya et al. | Computing High-Degree Polynomial Gradients in Memory | |
Aygun et al. | Utilization of contingency tables in stochastic computing | |
Knag et al. | RRAM solutions for stochastic computing | |
Shivanandamurthy et al. | A scalable stochastic number generator for phase change memory based in-memory stochastic processing: Work-in-progress | |
Bos et al. | uMemristorToolbox: Open source framework to control memristors in Unity for ternary applications | |
Dilna et al. | An Accelerated Variable Stage Size Carry Skip Adder Realization Using 1S1R Resistive Memory | |
Zhang et al. | Xma2: A crossbar-aware multi-task adaption framework via 2-tier masks | |
Zhang et al. | Xma: A crossbar-aware multi-task adaption framework via shift-based mask learning method | |
Gallo et al. | Mixed-precision training of deep neural networks using computational memory | |
Manglik et al. | NEON: Enabling Efficient Support for Nonlinear Operations in Resistive RAM-based Neural Network Accelerators | |
Lee et al. | Utilization of unsigned inputs for NAND flash-based parallel and high-density synaptic architecture in binary neural networks | |
Sharma et al. | QUANTUM COMPUTING APPLICATION FOR COST REDUCTION TECHNOLOGY USING REVERSIBLE LOGICAL SYNTHESIS |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A201 | Request for examination | ||
E902 | Notification of reason for refusal | ||
E601 | Decision to refuse application |